新火炬后端单体项目初始化代码
zhangherong
8 天以前 a5aa9503efd20103df066219c512b47b7f65e363
art: 生产订单同步定时任务调试,问题修改
已重命名1个文件
已复制1个文件
已修改8个文件
187 ■■■■ 文件已修改
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/mapper/MesProductionOrderMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/mapper/xml/MesProductionOrderMapper.xml 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/IMesProductionOrderService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/service/impl/MesProductionOrderServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/controller/SAPTestController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/service/ProductionOrderSync.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/sap/service/impl/ProductionOrderSyncImpl.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncCreationJob.java
ÎļþÃû´Ó src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncJob.java ÐÞ¸Ä
@@ -1,10 +1,16 @@
package org.jeecg.modules.mes.job;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.util.ThrowableUtil;
import org.jeecg.modules.mes.entity.MesProductionOrder;
import org.jeecg.modules.mes.service.IMesProductionOrderService;
import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService;
import org.jeecg.modules.quartz.entity.QuartzJob;
import org.jeecg.modules.quartz.entity.SysQuartzLog;
import org.jeecg.modules.quartz.service.IQuartzJobService;
import org.jeecg.modules.quartz.service.ISysQuartzLogService;
import org.jeecg.modules.sap.dto.OrderBomDTO;
import org.jeecg.modules.sap.dto.OrderProcessDTO;
import org.jeecg.modules.sap.dto.ProductionOrderDTO;
@@ -18,12 +24,13 @@
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class ProductionOrderSyncJob implements Job {
public class ProductionOrderSyncCreationJob implements Job {
    //工厂编码(新火炬 2301)
    private static final String FACTORY_CODE = "2301";
    /**
@@ -75,13 +82,33 @@
    private IPmsProcessBillMaterialsService processBillMaterialsService;
    @Autowired
    private IPmsMaterialProcessService materialProcessService;
    @Autowired
    private ISysQuartzLogService sysQuartzLogService;
    @Autowired
    private IQuartzJobService quartzJobService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //任务日志
        SysQuartzLog quartzLog = new SysQuartzLog();
        quartzLog.setCreateTime(new Date());
        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
        if (byJobClassName != null && !byJobClassName.isEmpty()) {
            quartzLog.setJobId(byJobClassName.get(0).getId());
        }
        long startTime = System.currentTimeMillis();
        //获取上次同步时间
        String lastSyncDateLow = productionOrderService.getLastSyncCreateDate();
        String lastSyncDateHigh = null;
        if(lastSyncDateLow != null) {
            lastSyncDateHigh = DateUtils.format(new Date(), "yyyyMMdd");
            if(lastSyncDateLow.equals(lastSyncDateHigh)) {
                lastSyncDateHigh = null;
            }
        }
        try {
            //调用SAP接口获取生产订单
            Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(FACTORY_CODE, ORDER_TYPE_CODE, PRODUCTION_MANAGER, ORDER_STATUS, null, null);
            Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(FACTORY_CODE, ORDER_TYPE_CODE, PRODUCTION_MANAGER, ORDER_STATUS, lastSyncDateLow, lastSyncDateHigh, null, null);
            if (productionOrderMap == null || !SUCCESS_CODE.equals(productionOrderMap.get("ztype"))) {
                log.error("未同步到订单信息!日期:{}", LocalDateTime.now());
                return;
@@ -122,7 +149,7 @@
                return;
            }
            //调用成功,获取返回数据
            result = orderBomMap.get("result");
            result = orderProcessMap.get("result");
            b = result instanceof List;
            if(!b) {
                log.error("返回类型错误, class:{}", result == null ? null : result.getClass());
@@ -133,9 +160,14 @@
            if(!b) {
                log.error("保存订单工序失败,日期:{}", LocalDateTime.now());
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            throw new RuntimeException(e);
            log.error("定时任务失败,{}", e.getMessage(), e);
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
        }
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
        sysQuartzLogService.save(quartzLog);
    }
}
src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java
copy from src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncJob.java copy to src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncUpdateJob.java
Îļþ´Ó src/main/java/org/jeecg/modules/mes/job/ProductionOrderSyncJob.java ¸´ÖÆ
@@ -1,10 +1,16 @@
package org.jeecg.modules.mes.job;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mdc.util.ThrowableUtil;
import org.jeecg.modules.mes.entity.MesProductionOrder;
import org.jeecg.modules.mes.service.IMesProductionOrderService;
import org.jeecg.modules.pms.service.IPmsMaterialProcessService;
import org.jeecg.modules.pms.service.IPmsProcessBillMaterialsService;
import org.jeecg.modules.quartz.entity.QuartzJob;
import org.jeecg.modules.quartz.entity.SysQuartzLog;
import org.jeecg.modules.quartz.service.IQuartzJobService;
import org.jeecg.modules.quartz.service.ISysQuartzLogService;
import org.jeecg.modules.sap.dto.OrderBomDTO;
import org.jeecg.modules.sap.dto.OrderProcessDTO;
import org.jeecg.modules.sap.dto.ProductionOrderDTO;
@@ -18,12 +24,13 @@
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Component
@Slf4j
public class ProductionOrderSyncJob implements Job {
public class ProductionOrderSyncUpdateJob implements Job {
    //工厂编码(新火炬 2301)
    private static final String FACTORY_CODE = "2301";
    /**
@@ -75,13 +82,33 @@
    private IPmsProcessBillMaterialsService processBillMaterialsService;
    @Autowired
    private IPmsMaterialProcessService materialProcessService;
    @Autowired
    private ISysQuartzLogService sysQuartzLogService;
    @Autowired
    private IQuartzJobService quartzJobService;
    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //任务日志
        SysQuartzLog quartzLog = new SysQuartzLog();
        quartzLog.setCreateTime(new Date());
        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
        if (byJobClassName != null && !byJobClassName.isEmpty()) {
            quartzLog.setJobId(byJobClassName.get(0).getId());
        }
        long startTime = System.currentTimeMillis();
        //获取上次同步时间
        String lastSyncDateLow = productionOrderService.getLastSyncUpdateDate();
        String lastSyncDateHigh = null;
        if (lastSyncDateLow != null) {
            lastSyncDateHigh = DateUtils.format(new Date(), "yyyyMMdd");
            if (lastSyncDateLow.equals(lastSyncDateHigh)) {
                lastSyncDateHigh = null;
            }
        }
        try {
            //调用SAP接口获取生产订单
            Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(FACTORY_CODE, ORDER_TYPE_CODE, PRODUCTION_MANAGER, ORDER_STATUS, null, null);
            Map<String, Object> productionOrderMap = productionOrderSync.syncProductionOrder(FACTORY_CODE, ORDER_TYPE_CODE, PRODUCTION_MANAGER, ORDER_STATUS, null, null, lastSyncDateLow, lastSyncDateHigh);
            if (productionOrderMap == null || !SUCCESS_CODE.equals(productionOrderMap.get("ztype"))) {
                log.error("未同步到订单信息!日期:{}", LocalDateTime.now());
                return;
@@ -122,7 +149,7 @@
                return;
            }
            //调用成功,获取返回数据
            result = orderBomMap.get("result");
            result = orderProcessMap.get("result");
            b = result instanceof List;
            if(!b) {
                log.error("返回类型错误, class:{}", result == null ? null : result.getClass());
@@ -133,9 +160,14 @@
            if(!b) {
                log.error("保存订单工序失败,日期:{}", LocalDateTime.now());
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            throw new RuntimeException(e);
            log.error("定时任务失败,{}", e.getMessage(), e);
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
        }
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
        sysQuartzLogService.save(quartzLog);
    }
}
src/main/java/org/jeecg/modules/mes/mapper/MesProductionOrderMapper.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.mes.entity.MesProductionOrder;
import java.util.Date;
/**
 * @Description: SAP生产订单
 * @Author: jeecg-boot
@@ -11,4 +13,15 @@
 */
public interface MesProductionOrderMapper extends BaseMapper<MesProductionOrder> {
    /**
     * èŽ·å–æœ€æ–°çš„åˆ›å»ºåŒæ­¥æ—¥æœŸ
     * @return
     */
    String getLastSyncCreateDate();
    /**
     * èŽ·å–æœ€æ–°çš„åˆ›å»ºåŒæ­¥æ—¥æœŸ
     * @return
     */
    String getLastSyncUpdateDate();
}
src/main/java/org/jeecg/modules/mes/mapper/xml/MesProductionOrderMapper.xml
@@ -2,4 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.jeecg.modules.mes.mapper.MesProductionOrderMapper">
    <select id="getLastSyncCreateDate" resultType="java.lang.String">
        select MAX(order_create_date) from mes_production_order
    </select>
    <select id="getLastSyncUpdateDate" resultType="java.lang.String">
        select MAX(order_update_date) from mes_production_order
    </select>
</mapper>
src/main/java/org/jeecg/modules/mes/service/IMesProductionOrderService.java
@@ -28,4 +28,16 @@
     * @return
     */
    MesProductionOrder getByOrderCode(String orderCode);
    /**
     * èŽ·å–ä¸Šæ¬¡åŒæ­¥åˆ›å»ºæ—¥æœŸæœ€æ–°çš„æ—¥æœŸ
     * @return
     */
    String getLastSyncCreateDate();
    /**
     *获取上次同步更新日期最新的日期
     * @return
     */
    String getLastSyncUpdateDate();
}
src/main/java/org/jeecg/modules/mes/service/impl/MesProductionOrderServiceImpl.java
@@ -4,6 +4,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.mdc.util.DateUtils;
import org.jeecg.modules.mes.entity.MesProductionOrder;
import org.jeecg.modules.mes.mapper.MesProductionOrderMapper;
import org.jeecg.modules.mes.service.IMesProductionOrderService;
@@ -25,26 +26,18 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public Map<String, MesProductionOrder> saveOrUpdateProductionOrder(List<ProductionOrderDTO> productionOrderDTOList) {
        List<MesProductionOrder> addList = new ArrayList<>();
        List<MesProductionOrder> updateList = new ArrayList<>();
        Map<String, MesProductionOrder> resultMap = new HashMap<>();
        for (ProductionOrderDTO productionOrderDTO : productionOrderDTOList) {
            MesProductionOrder updated = getByOrderCode(productionOrderDTO.getAUFNR());
            if (updated == null) {
                updated = new MesProductionOrder(productionOrderDTO);
                addList.add(updated);
                resultMap.put(updated.getOrderCode(), updated);
                this.getBaseMapper().insert(updated);
            } else {
                updated.updateEntity(productionOrderDTO);
                updateList.add(updated);
                resultMap.put(updated.getOrderCode(), updated);
                this.getBaseMapper().updateById(updated);
            }
        }
        if(CollectionUtil.isEmpty(addList)){
            super.saveBatch(addList);
        }
        if(CollectionUtil.isEmpty(updateList)){
            super.updateBatchById(updateList);
        }
        return resultMap;
    }
@@ -61,5 +54,21 @@
        return null;
    }
    @Override
    public String getLastSyncCreateDate() {
        String lastSyncDate = this.getBaseMapper().getLastSyncCreateDate();
        if(lastSyncDate == null){
            return null;
        }
        return lastSyncDate.replaceAll("-", "");
    }
    @Override
    public String getLastSyncUpdateDate() {
        String lastSyncDate = this.getBaseMapper().getLastSyncUpdateDate();
        if(lastSyncDate == null){
            return null;
        }
        return lastSyncDate.replaceAll("-", "");
    }
}
src/main/java/org/jeecg/modules/pms/service/impl/PmsMaterialProcessServiceImpl.java
@@ -58,7 +58,7 @@
            //重新新增工序信息
            List<OrderProcessDTO> collect = orderProcessDTOList.stream().filter(orderProcessDTO -> entry.getKey().equals(orderProcessDTO.getAUFNR())).collect(Collectors.toList());
            if (CollectionUtil.isNotEmpty(collect)) {
                List<PmsMaterialProcess> list = collect.stream().map(orderBomDTO -> new PmsMaterialProcess(entry.getKey(), order.getMaterialName(), orderBomDTO)).collect(Collectors.toList());
                List<PmsMaterialProcess> list = collect.stream().map(orderBomDTO -> new PmsMaterialProcess(order.getId(), order.getMaterialName(), orderBomDTO)).collect(Collectors.toList());
                super.saveBatch(list);
            }
        }
src/main/java/org/jeecg/modules/sap/controller/SAPTestController.java
@@ -52,7 +52,7 @@
    @ApiOperation(value = "SAP集成测试-生产订单同步接口", notes = "SAP集成测试-生产订单同步接口")
    @GetMapping("/syncProductionOrder")
    public Result<?> syncProductionOrder() throws Exception {
        Map<String, Object> resultMap = productionOrderSync.syncProductionOrder(factoryCode, orderTypeCode1, productionManager, orderStatus, createTime, null);
        Map<String, Object> resultMap = productionOrderSync.syncProductionOrder(factoryCode, orderTypeCode1, productionManager, orderStatus, null, null, null, null);
        return Result.ok(resultMap);
    }
src/main/java/org/jeecg/modules/sap/service/ProductionOrderSync.java
@@ -6,5 +6,5 @@
    /**
     * åŒæ­¥ç”Ÿæˆè®¢å•
     */
    Map<String, Object> syncProductionOrder(String factoryCode, String orderTypeCode, String productionManager, String orderStatus, String createTime, String updateTime) throws Exception;
    Map<String, Object> syncProductionOrder(String factoryCode, String orderTypeCode, String productionManager, String orderStatus, String createTimeLow, String createTimeHigh, String updateTimeLow, String updateTimeHigh) throws Exception;
}
src/main/java/org/jeecg/modules/sap/service/impl/ProductionOrderSyncImpl.java
@@ -33,7 +33,7 @@
    @Override
    @ApiLog(apiName = "生产订单同步(ZPPF_033_1)", apiCategory = ApiLogCategoryEnum.SAP)
    public Map<String, Object> syncProductionOrder(String factoryCode, String orderTypeCode, String productionManager, String orderStatus, String createTime, String updateTime) throws Exception {
    public Map<String, Object> syncProductionOrder(String factoryCode, String orderTypeCode, String productionManager, String orderStatus, String createTimeLow, String createTimeHigh, String updateTimeLow, String updateTimeHigh) throws Exception {
        Map<String, Object> resultMap = new HashMap<>();
        JCoDestination destination = connectionManager.getDestination();
        JCoRepository repository = destination.getRepository();
@@ -96,22 +96,40 @@
            item.put("TXT04", orderStatus);
            items.add(item);
        }
        if(StringUtils.isNotBlank(createTime)){
        if(StringUtils.isNotBlank(createTimeLow)){
            JCoTable UDATETable = function.getTableParameterList().getTable("ZTAB_UDATE");
            UDATETable.appendRow();
            UDATETable.setValue("LOW", createTime);
            UDATETable.setValue("LOW", createTimeLow);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_UDATE_LOW", createTime);
            item.put("ZTAB_UDATE_LOW", createTimeLow);
            items.add(item);
        }
        if(StringUtils.isNotBlank(updateTime)){
            JCoTable LAEDATable = function.getTableParameterList().getTable("ZTAB_LAEDA");
            LAEDATable.appendRow();
            LAEDATable.setValue("LOW", updateTime);
        if(StringUtils.isNotBlank(createTimeHigh)){
            JCoTable UDATETable = function.getTableParameterList().getTable("ZTAB_UDATE");
            UDATETable.appendRow();
            UDATETable.setValue("HIGH", createTimeHigh);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_LAEDA_LOW", updateTime);
            item.put("ZTAB_UDATE_HIGH", createTimeHigh);
            items.add(item);
        }
        if(StringUtils.isNotBlank(updateTimeLow)){
            JCoTable LAEDATable = function.getTableParameterList().getTable("ZTAB_LAEDA");
            LAEDATable.appendRow();
            LAEDATable.setValue("LOW", updateTimeLow);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_LAEDA_LOW", updateTimeLow);
            items.add(item);
        }
        if(StringUtils.isNotBlank(updateTimeHigh)){
            JCoTable LAEDATable = function.getTableParameterList().getTable("ZTAB_LAEDA");
            LAEDATable.appendRow();
            LAEDATable.setValue("HIGH", updateTimeLow);
            //组装请求参数
            JSONObject item = new JSONObject();
            item.put("ZTAB_LAEDA_HIGH", updateTimeLow);
            items.add(item);
        }
        // æ‰§è¡Œè°ƒç”¨