diff --git a/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java b/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java index 15d2e4e70..97066c999 100644 --- a/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java +++ b/src/main/java/com/glxp/api/controller/thrsys/ThrProductsController.java @@ -1,6 +1,8 @@ package com.glxp.api.controller.thrsys; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.bean.copier.CopyOptions; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.IdUtil; @@ -249,10 +251,12 @@ public class ThrProductsController { if (null == filterThrProductsRequest) { return ResultVOUtils.error(500, "参数不能为空"); } + + ThreadUtil.execAsync(() -> { - erpBasicClient.getErpProducts(filterThrProductsRequest); + thrProductsService.downloadByRequest(filterThrProductsRequest); }); - return ResultVOUtils.success(); + return ResultVOUtils.success("后台正在下载,请稍后刷新查看!"); } -} \ No newline at end of file +} diff --git a/src/main/java/com/glxp/api/http/ErpBasicClient.java b/src/main/java/com/glxp/api/http/ErpBasicClient.java index b06b8a211..436d5ec0c 100644 --- a/src/main/java/com/glxp/api/http/ErpBasicClient.java +++ b/src/main/java/com/glxp/api/http/ErpBasicClient.java @@ -43,7 +43,7 @@ public class ErpBasicClient { UdiwmsUnitRequest udiwmsUnitRequest = new UdiwmsUnitRequest(); BeanUtils.copyProperties(thrUnitMaintainFilterRequest, udiwmsUnitRequest); udiwmsUnitRequest.setUnitId(thrUnitMaintainFilterRequest.getErpId()); - ThrSystemEntity thrSystemEntity = basicThirdSysService.selectByThirdId(thrUnitMaintainFilterRequest.getThirdSys()); + ThrSystemEntity thrSystemEntity = basicThirdSysService.selectByThirdId(thrUnitMaintainFilterRequest.getThirdSysFk()); try { String url = thrSystemEntity.getThridUrl() + "/udiwms/erp/getUnits"; @@ -64,9 +64,8 @@ public class ErpBasicClient { //获取产品信息 public BaseResponse> getErpProducts(FilterThrProductsRequest filterThrProductsRequest) { - ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(filterThrProductsRequest.getThirdSys()); + ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(filterThrProductsRequest.getThirdSysFk()); String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getProducts"; - try { String response = httpOkClient.uCloudPost(url, filterThrProductsRequest, basicThirdSysEntity); if (StrUtil.isBlank(response)) { diff --git a/src/main/java/com/glxp/api/req/thrsys/FilterThrProductsRequest.java b/src/main/java/com/glxp/api/req/thrsys/FilterThrProductsRequest.java index 70ddf3fab..f8a1ca559 100644 --- a/src/main/java/com/glxp/api/req/thrsys/FilterThrProductsRequest.java +++ b/src/main/java/com/glxp/api/req/thrsys/FilterThrProductsRequest.java @@ -1,6 +1,7 @@ package com.glxp.api.req.thrsys; +import cn.hutool.core.util.StrUtil; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.util.page.ListPageRequest; import lombok.Data; @@ -34,5 +35,20 @@ public class FilterThrProductsRequest extends ListPageRequest { private String uuid; private Integer diType; + public List getThrProductsEntities() { + return thrProductsEntities; + } + public String getThirdSys() { + if (StrUtil.isEmpty(thirdSys)) + return thirdSysFk; + return thirdSys; + } + + public String getThirdSysFk() { + + if (StrUtil.isEmpty(thirdSysFk)) + return thirdSys; + return thirdSysFk; + } } diff --git a/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java b/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java index 593052c2d..f9ac1ad55 100644 --- a/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java +++ b/src/main/java/com/glxp/api/service/thrsys/ThrProductsService.java @@ -66,4 +66,12 @@ public interface ThrProductsService extends IService { * @return */ BaseResponse downloadThrPi(ThrSystemDetailEntity thrSystemDetailEntity); + + /** + * 下载第三方产品信息 + * + * @param filterThrProductsRequest + * @return + */ + BaseResponse downloadByRequest(FilterThrProductsRequest filterThrProductsRequest); } diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java index 3842bf90e..6ab0a2ab9 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrBusTypeOriginServiceImpl.java @@ -34,7 +34,7 @@ import java.util.List; @Slf4j @Service @Transactional(rollbackFor = Exception.class) -public class ThrBusTypeOriginServiceImpl extends ServiceImpl implements IThrBusTypeOriginService { +public class ThrBusTypeOriginServiceImpl extends ServiceImpl implements IThrBusTypeOriginService { @Resource private CustomerService customerService; @@ -180,7 +180,7 @@ public class ThrBusTypeOriginServiceImpl extends ServiceImpl list = baseResponse.getData().getList(); list.forEach(item -> { - ThrBusTypeOriginEntity thrBusTypeOriginEntity = thrBusTypeOriginDao.selectOne(new QueryWrapper().eq("code", item.getCode()).eq("thirdSys", thrSystemDetailEntity.getThirdSysFk())); + ThrBusTypeOriginEntity thrBusTypeOriginEntity = thrBusTypeOriginDao.selectOne(new QueryWrapper().eq("action", item.getCode()).eq("thirdSys", thrSystemDetailEntity.getThirdSysFk())); if (null == thrBusTypeOriginEntity) { thrBusTypeOriginEntity = new ThrBusTypeOriginEntity(); BeanUtil.copyProperties(item, thrBusTypeOriginEntity); diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvWarehouseServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvWarehouseServiceImpl.java index 24970bcb4..c9bb116db 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvWarehouseServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrInvWarehouseServiceImpl.java @@ -29,7 +29,7 @@ import java.util.List; @Slf4j @Service @Transactional(rollbackFor = Exception.class) -public class ThrInvWarehouseServiceImpl extends ServiceImpl implements ThrInvWarehouseService { +public class ThrInvWarehouseServiceImpl extends ServiceImpl implements ThrInvWarehouseService { @Resource private ThrInvWarehouseDao thrInvWarehouseDao; diff --git a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java index c6eac8d44..45e4bd45f 100644 --- a/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java +++ b/src/main/java/com/glxp/api/service/thrsys/impl/ThrProductsServiceImpl.java @@ -176,7 +176,6 @@ public class ThrProductsServiceImpl extends ServiceImpl> baseResponse = erpBasicClient.getErpProducts(request); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); @@ -192,7 +191,7 @@ public class ThrProductsServiceImpl extends ServiceImpl> baseResponse = erpBasicClient.getErpProducts(filterThrProductsRequest); + if (baseResponse.getCode() == 20000) { + List list = baseResponse.getData().getList(); + list.forEach(item -> { + ThrProductsEntity thrProductsEntity = thrProductsDao.selectByCodeAndThird(item.getCode(), item.getThirdSys()); + if (null == thrProductsEntity) { + thrProductsEntity = new ThrProductsEntity(); + BeanUtil.copyProperties(item, thrProductsEntity); + thrProductsEntity.setCreateTime(new Date()); + thrProductsEntity.setUpdateTime(new Date()); + thrProductsEntity.setId(IdUtil.getSnowflakeNextId()); + thrProductsDao.insertThrProducts(thrProductsEntity); + } else { + boolean isChange = verifyDataChange(thrProductsEntity, item); + if (isChange) { + BeanUtil.copyProperties(item, thrProductsEntity, new CopyOptions().setIgnoreNullValue(true)); + thrProductsEntity.setUpdateTime(new Date()); + thrProductsDao.updateEntityById(thrProductsEntity); + } + } + }); + if (list.size() >= limit) { + page++; + } else { + break; + } + } else { + return ResultVOUtils.error(500, "下载第三方系统产品信息异常"); + } + } + return ResultVOUtils.success("下载成功"); + } + /** * 校验拉取的第三方数据是否有更新 * diff --git a/src/main/java/com/glxp/api/task/SyncThirdSysTask.java b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java new file mode 100644 index 000000000..d10c44f95 --- /dev/null +++ b/src/main/java/com/glxp/api/task/SyncThirdSysTask.java @@ -0,0 +1,331 @@ +package com.glxp.api.task; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.thread.ThreadUtil; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.glxp.api.constant.ThirdSysConstant; +import com.glxp.api.dao.schedule.ScheduledDao; +import com.glxp.api.dao.system.SyncDataSetDao; +import com.glxp.api.dao.thrsys.ThrSystemDetailDao; +import com.glxp.api.entity.system.ScheduledEntity; +import com.glxp.api.entity.thrsys.ThrSystemDetailEntity; +import com.glxp.api.req.system.ScheduledRequest; +import com.glxp.api.res.thrsys.ThirdSysInterfaceExecuteVo; +import com.glxp.api.service.inout.IoOrderService; +import com.glxp.api.service.thrsys.IThrBusTypeOriginService; +import com.glxp.api.service.thrsys.ThrCorpService; +import com.glxp.api.service.thrsys.ThrInvWarehouseService; +import com.glxp.api.service.thrsys.ThrProductsService; +import com.glxp.api.util.RedisUtil; +import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.SchedulingConfigurer; +import org.springframework.scheduling.config.ScheduledTaskRegistrar; +import org.springframework.scheduling.support.CronTrigger; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.*; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; + +@Component +@EnableScheduling +@Slf4j +public class SyncThirdSysTask implements SchedulingConfigurer { + + /** + * redis key 前缀 + */ + private static final Map> keyMap = new ConcurrentHashMap<>(5); + + private volatile ExecutorService executor; + + @Resource + private RedisUtil redisUtil; + @Resource + private ThrSystemDetailDao thrSystemDetailDao; + @Resource + private ThrInvWarehouseService thrInvWarehouseService; + @Resource + private ThrCorpService thrCorpService; + @Resource + private ThrProductsService thrProductsService; + @Resource + private IThrBusTypeOriginService thrBusTypeOriginService; + @Resource + private IoOrderService orderService; + + + final Logger logger = LoggerFactory.getLogger(SyncHeartTask.class); + @Resource + protected ScheduledDao scheduledDao; + @Resource + private SyncDataSetDao syncDataSetDao; + + @Override + public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) { + + scheduledTaskRegistrar.addTriggerTask(() -> process(), + triggerContext -> { + ScheduledRequest scheduledRequest = new ScheduledRequest(); + scheduledRequest.setCronName("dlThrSysHeartTask"); + ScheduledEntity scheduledEntity = scheduledDao.findScheduled(scheduledRequest); + if (scheduledEntity != null) { + String cron = scheduledEntity.getCron(); + if (cron.isEmpty()) { + logger.error("cron is null"); + } + return new CronTrigger(cron).nextExecutionTime(triggerContext); + } else + return null; + + }); + } + + private ExecutorService getExecutor() { + if (null == executor) { + synchronized (this) { + log.info("初始化第三方系统接口执行线程池"); + executor = ThreadUtil.newExecutor(10, 100, Integer.MAX_VALUE); + } + } + return executor; + } + + + private void process() { + + log.info("开始扫描自动执行的第三方接口列表"); + List list = thrSystemDetailDao.selectAutoExecuteList(); + if (CollUtil.isNotEmpty(list)) { + log.info("本次查询到的接口列表数量:{}", list.size()); + list.parallelStream().forEach(thrSystemDetailEntity -> { + switch (thrSystemDetailEntity.getKey()) { + case ThirdSysConstant.WAREHOUSE_QUERY_URL: + //下载第三方仓库信息 + downloadThrInv(thrSystemDetailEntity); + break; + case ThirdSysConstant.CORP_URL: + //下载往来单位信息 + downloadThrCorp(thrSystemDetailEntity); + break; + case ThirdSysConstant.PI_QUERY_URL: + //下载第三方产品信息 + downloadThrPi(thrSystemDetailEntity); + break; + case ThirdSysConstant.BUS_TYPE_QUERY_URL: + //下载第三方单据类型 + downloadThrBusType(thrSystemDetailEntity); + break; + case ThirdSysConstant.ORDER_SUBMIT_URL: + //提交单据 + submitOrder(thrSystemDetailEntity); + break; + default: + //其他接口暂不处理 + break; + } + }); + } else { + log.info("未配置自动执行的第三方接口列表"); + } + } + + + /** + * 提交单据到第三方系统 + * + * @param thrSystemDetailEntity + */ + private void submitOrder(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始提交单据到第三方系统"); + try { + orderService.submitOrderToThrSys(thrSystemDetailEntity); + } catch (Exception e) { + log.error("提交单据到第三方系统异常", e); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("提交单据到第三方系统完成"); + }); + } + } + + /** + * 下载第三方单据类型 + * + * @param thrSystemDetailEntity + */ + private void downloadThrBusType(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载第三方单据类型"); + try { + thrBusTypeOriginService.downloadThrBusType(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载第三方单据类型异常", e); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("第三方单据类型下载完成"); + }); + } + } + + /** + * 下载第三方产品信息 + * + * @param thrSystemDetailEntity + */ + private void downloadThrPi(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载第三方产品信息"); + try { + thrProductsService.downloadThrPi(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载第三方产品信息异常", e); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("第三方产品信息下载完成"); + }); + } + } + + /** + * 下载第三方往来单位 + * + * @param thrSystemDetailEntity + */ + private void downloadThrCorp(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载第三方往来单位信息"); + try { + thrCorpService.downloadThrCorp(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载第三方往来单位异常", e); + } finally { + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("第三方往来单位信息下载完成"); + }); + } + } + + /** + * 下载第三方系统仓库 + * + * @param thrSystemDetailEntity + */ + private void downloadThrInv(ThrSystemDetailEntity thrSystemDetailEntity) { + //校验任务并更新redis数据执行标识 + if (verifyTask(thrSystemDetailEntity)) { + getExecutor().submit(() -> { + log.info("开始下载第三方仓库信息"); + try { + thrInvWarehouseService.downloadThrInv(thrSystemDetailEntity); + } catch (Exception e) { + log.error("下载第三方仓库信息异常", e); + } finally { + //保证任务标识一定会被修改回去 + updateTask(getTaskKey(thrSystemDetailEntity)); + } + log.info("第三方仓库信息下载完成"); + }); + } + } + + /** + * 更新任务状态为已完成 + * + * @param taskKey + */ + private void updateTask(String taskKey) { + ThirdSysInterfaceExecuteVo vo = getLastResult(taskKey); + vo.setFinished(true); + redisUtil.set(taskKey, vo); + } + + /** + * 校验当前任务是否可以执行 + * + * @param thrSystemDetailEntity + * @return + */ + private boolean verifyTask(ThrSystemDetailEntity thrSystemDetailEntity) { + String taskKey = getTaskKey(thrSystemDetailEntity); + ThirdSysInterfaceExecuteVo vo = getLastResult(taskKey); + if (null != vo && !vo.isFinished()) { + log.info("有任务尚未执行完成,当前任务key:{}", taskKey); + return false; + } + long nextTime = DateUtil.offsetMonth(new Date(), thrSystemDetailEntity.getTime()).getTime(); + if (vo != null) { + if (vo.getNextTime() - new Date().getTime() > thrSystemDetailEntity.getTime() * 1000 * 60) { + log.info("定时任务时间未到", taskKey); + return false; + } else { + return true; + } + } else { + vo = Optional.ofNullable(vo).orElse(new ThirdSysInterfaceExecuteVo()); + vo.setKey(taskKey); + vo.setNextTime(nextTime); + vo.setFinished(false); + redisUtil.set(taskKey, vo); + } + return true; + } + + /** + * 获取上一次执行结果 + * + * @param taskKey + * @return + */ + private ThirdSysInterfaceExecuteVo getLastResult(String taskKey) { + String json = redisUtil.getJSON(taskKey); + return StrUtil.isBlank(json) ? null : JSONUtil.toBean(json, ThirdSysInterfaceExecuteVo.class); + } + + /** + * 拼接redis Key + * + * @param thrSystemDetailEntity + * @return + */ + private String getTaskKey(ThrSystemDetailEntity thrSystemDetailEntity) { + String key = ""; + Map keys = keyMap.get(thrSystemDetailEntity.getThirdSysFk()); + if (CollUtil.isEmpty(keys)) { + Map map = new HashMap<>(1); + key = "thirdI:" + thrSystemDetailEntity.getThirdSysFk() + ":" + thrSystemDetailEntity.getKey(); + map.put(thrSystemDetailEntity.getKey(), key); + keyMap.put(thrSystemDetailEntity.getThirdSysFk(), map); + } else { + key = keys.get(thrSystemDetailEntity.getKey()); + if (StrUtil.isBlank(key)) { + key = "thirdI:" + thrSystemDetailEntity.getThirdSysFk() + ":" + thrSystemDetailEntity.getKey(); + Map map = new HashMap<>(1); + map.put(thrSystemDetailEntity.getKey(), key); + keyMap.put(thrSystemDetailEntity.getThirdSysFk(), map); + } + } + return key; + } + + +} diff --git a/src/main/java/com/glxp/api/task/ThirdSysInterfaceTask.java b/src/main/java/com/glxp/api/task/ThirdSysInterfaceTask.java index a190b23d6..803760533 100644 --- a/src/main/java/com/glxp/api/task/ThirdSysInterfaceTask.java +++ b/src/main/java/com/glxp/api/task/ThirdSysInterfaceTask.java @@ -29,7 +29,7 @@ import java.util.concurrent.ExecutorService; * 此任务负责校验第三方接口设置里的所有接口列表,并生成任务到线程池中异步执行 */ @Slf4j -@Component +//@Component public class ThirdSysInterfaceTask { /** @@ -69,7 +69,7 @@ public class ThirdSysInterfaceTask { @Resource private IoOrderService orderService; - @Scheduled(fixedRate = 20 * 1000, initialDelay = 60 * 1000) + @Scheduled(fixedRate = 1 * 1000, initialDelay = 60 * 1000) public void scanInterface() { log.info("开始扫描自动执行的第三方接口列表"); List list = thrSystemDetailDao.selectAutoExecuteList(); diff --git a/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml b/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml index 2b0f0b502..6172d3bd8 100644 --- a/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml +++ b/src/main/resources/mybatis/mapper/thrsys/ThrInvWarehouseDao.xml @@ -41,27 +41,33 @@ - select * from thr_inv_warehouse where updateTime >= #{lastUpdateTime} + select * + from thr_inv_warehouse + where updateTime >= #{lastUpdateTime} diff --git a/src/main/resources/schemas/schema_v2.1.sql b/src/main/resources/schemas/schema_v2.1.sql index 4de510174..61a3a9b51 100644 --- a/src/main/resources/schemas/schema_v2.1.sql +++ b/src/main/resources/schemas/schema_v2.1.sql @@ -444,9 +444,31 @@ CALL Pro_Temp_ColumnWork('io_code', 'preInSpaceCode', 'varchar(255)', 1); CALL Pro_Temp_ColumnWork('pur_order_detail', 'price', 'decimal(10, 2)', 1); -INSERT ignore INTO `sys_pdf_template_relevance_label`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (1, 30, 110, 0, 9, '内部码打印', NULL, NULL, NULL, NULL, 'lable'); -INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (1, 31, 110, 0, NULL, '配送企业资质打印', NULL, NULL, NULL, NULL, 'reportForms'); -INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (2, 32, 110, 0, NULL, '生产企业资质打印', NULL, NULL, NULL, NULL, 'reportForms'); -INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (3, 33, 110, 0, NULL, '配送产品资质打印', NULL, NULL, NULL, NULL, 'reportForms'); -INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (4, 33, 110, 0, NULL, '库存报表打印', NULL, NULL, NULL, NULL, 'reportForms'); -INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, `localAction`, `remark1`, `remark2`, `remark3`, `printType`, `modelKey`) VALUES (5, 33, 110, 0, NULL, '内部码报表打印', NULL, NULL, NULL, NULL, 'reportForms'); +INSERT ignore INTO `sys_pdf_template_relevance_label`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (1, 30, 110, 0, 9, '内部码打印', NULL, NULL, NULL, NULL, 'lable'); +INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (1, 31, 110, 0, NULL, '配送企业资质打印', NULL, NULL, NULL, NULL, 'reportForms'); +INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (2, 32, 110, 0, NULL, '生产企业资质打印', NULL, NULL, NULL, NULL, 'reportForms'); +INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (3, 33, 110, 0, NULL, '配送产品资质打印', NULL, NULL, NULL, NULL, 'reportForms'); +INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (4, 33, 110, 0, NULL, '库存报表打印', NULL, NULL, NULL, NULL, 'reportForms'); +INSERT ignore INTO `sys_pdf_template_relevance_statemen`(`id`, `templateId`, `customerId`, `adminId`, `moduleId`, + `localAction`, `remark1`, `remark2`, `remark3`, `printType`, + `modelKey`) +VALUES (5, 33, 110, 0, NULL, '内部码报表打印', NULL, NULL, NULL, NULL, 'reportForms'); + + +INSERT ignore INTO `sys_scheduled`(`id`, `cronName`, `cron`, `customerId`, `remark`) +VALUES (140, 'dlThrSysHeartTask', '0 0/1 * * * ?', NULL, '第三方接口同步心跳');