已修改12个文件
已添加9个文件
500 ■■■■■ 文件已修改
aps-common/aps-common-core/src/main/java/com/aps/common/core/config/MyBatisPlusConfig.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-redis/pom.xml 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlanTaskController.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlanTask.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_TYPE.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlanTaskMapper.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlanTaskService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlanTaskMapper.xml 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsShopMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-common/aps-common-core/src/main/java/com/aps/common/core/config/MyBatisPlusConfig.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
@@ -15,14 +16,16 @@
     * åˆ†é¡µæ’ä»¶
     */
    @Bean
    public PaginationInnerInterceptor paginationInterceptor() {
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        PaginationInnerInterceptor paginationInterceptor = new PaginationInnerInterceptor();
        // è®¾ç½®è¯·æ±‚的页面大于最大页后是否进行回滚, true回滚, falseç»§ç»­
        paginationInterceptor.setOverflow(false);
        // è®¾ç½®æœ€å¤§å•页限制数量, é»˜è®¤ 500 æ¡, -1 ä¸å—限制
        paginationInterceptor.setDbType(DbType.MYSQL);
        paginationInterceptor.setDbType(DbType.POSTGRE_SQL);
        paginationInterceptor.setMaxLimit(-1L);
        return paginationInterceptor;
        interceptor.addInnerInterceptor(paginationInterceptor);
        return interceptor;
    }
    /**
aps-common/aps-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,3 @@
com.aps.common.core.utils.SpringUtils
com.aps.common.core.utils.uuid.Sequence
com.aps.common.core.utils.uuid.Sequence
com.aps.common.core.config.MyBatisPlusConfig
aps-common/aps-common-redis/pom.xml
@@ -22,12 +22,15 @@
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- RuoYi Common Core-->
        <dependency>
            <groupId>com.aps</groupId>
            <artifactId>aps-common-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
aps-common/aps-common-redis/src/main/java/com/aps/common/redis/service/RedisLockUtils.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,45 @@
package com.aps.common.redis.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.core.script.RedisScript;
import org.springframework.stereotype.Component;
import java.time.Duration;
import java.util.Collections;
/**
 * Redis åˆ†å¸ƒå¼é”
 *
 **/
@Component
public class RedisLockUtils {
    @Autowired
    private RedisTemplate redisTemplate;
    //分布式锁过期时间 s  å¯ä»¥æ ¹æ®ä¸šåŠ¡è‡ªå·±è°ƒèŠ‚
    private static final Long LOCK_REDIS_TIMEOUT = 10L;
    //分布式锁休眠 è‡³ å†æ¬¡å°è¯•获取 çš„等待时间 ms å¯ä»¥æ ¹æ®ä¸šåŠ¡è‡ªå·±è°ƒèŠ‚
    public static final Long LOCK_REDIS_WAIT = 500L;
    /**
     *  åР锁
     **/
    public Boolean getLock(String key,String value,Long timeoutSeconds){
        Boolean lockStatus = this.redisTemplate.opsForValue().setIfAbsent(key,value, Duration.ofSeconds(timeoutSeconds));
        return lockStatus;
    }
    /**
     *  é‡Šæ”¾é”
     **/
    public Long releaseLock(String key,String value){
        String luaScript = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end";
        RedisScript<Long> redisScript = new DefaultRedisScript<>(luaScript,Long.class);
        Long releaseStatus = (Long)this.redisTemplate.execute(redisScript, Collections.singletonList(key),value);
        return releaseStatus;
    }
}
aps-common/aps-common-redis/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1,2 +1,3 @@
com.aps.common.redis.configure.RedisConfig
com.aps.common.redis.service.RedisService
com.aps.common.redis.service.RedisLockUtils
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlanTaskController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package com.aps.core.controller.mainPlan;
import com.aps.common.core.domain.R;
import com.aps.common.core.web.controller.BaseController;
import com.aps.common.core.web.page.PageDomain;
import com.aps.common.core.web.page.TableDataInfo;
import com.aps.common.core.web.page.TableSupport;
import com.aps.core.domain.ApsPlanTask;
import com.aps.core.service.ApsPlanTaskService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * è®¡åˆ’任务管理
 * */
@RestController
@RequestMapping("/planTask")
public class ApsPlanTaskController  extends BaseController {
    @Autowired
    private ApsPlanTaskService apsPlanTaskService;
//    @RequiresPermissions("planTask:list")
    @GetMapping("/list")
    public Page<ApsPlanTask> list(ApsPlanTask task){
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Page<ApsPlanTask> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
        return apsPlanTaskService.pagingList(page, task);
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/controller/mainPlan/ApsPlateStandardRequireController.java
@@ -8,7 +8,11 @@
import com.aps.common.log.enums.BusinessType;
import com.aps.common.security.annotation.RequiresPermissions;
import com.aps.core.domain.ApsPlateStandardRequire;
import com.aps.core.enums.PLAN_TASK_STATUS;
import com.aps.core.service.ApsPlanTaskService;
import com.aps.core.service.IApsPlateStandardRequireBatchService;
import com.aps.core.service.IApsPlateStandardRequireService;
import jakarta.annotation.Resource;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -29,6 +33,10 @@
{
    @Autowired
    private IApsPlateStandardRequireService apsPlateStandardRequireService;
    @Resource
    IApsPlateStandardRequireBatchService requireBatchService;
    @Resource
    ApsPlanTaskService planTaskService;
    /**
     * æŸ¥è¯¢é’£é‡‘工单标准需求列表
@@ -133,7 +141,10 @@
    @PostMapping("/generatorPlan")
    public AjaxResult generatorPlan()
    {
        apsPlateStandardRequireService.generatorPlan();
        String batchNum= requireBatchService.getNewBatchNumber();
        planTaskService.savePlanTask(batchNum);
        apsPlateStandardRequireService.generatorPlan(batchNum);
        planTaskService.updateTaskStatus(batchNum, PLAN_TASK_STATUS.FINISHED);
        return success();
    }
aps-modules/aps-core/src/main/java/com/aps/core/domain/ApsPlanTask.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package com.aps.core.domain;
import com.aps.common.core.web.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.util.Date;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
/**
 * è®¡åˆ’生成日志表
 * @TableName aps_plan_task
 */
@ToString
@EqualsAndHashCode(callSuper = false)
@TableName(value ="aps_plan_task")
@Data
@Builder
public class ApsPlanTask extends BaseEntity implements Serializable {
    @TableField(exist = false)
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®ID
     */
    @TableField(value = "id")
    @TableId(type = IdType.INPUT)
    private Long id;
    /**
     * ä»»åŠ¡æ‰¹æ¬¡å·
     */
    @TableField(value = "batch_num")
    private String batchNum;
    /**
     * ä»»åŠ¡ç±»åž‹
     */
    @TableField(value = "task_type")
    private String taskType;
    /**
     * ä»»åŠ¡çŠ¶æ€
     */
    @TableField(value = "task_status")
    private String taskStatus;
    /**
     * åˆ›å»ºäºº
     */
    @TableField(value = "create_by")
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @TableField(value = "create_time")
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    @TableField(value = "update_by")
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @TableField(value = "update_time")
    private Date updateTime;
    /**
     * åˆ é™¤æ ‡è®°(0,1)
     */
    @TableField(value = "del_flag")
    private Integer delFlag;
}
aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_STATUS.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.aps.core.enums;
public enum PLAN_TASK_STATUS {
    IN_PROCESS("InProgress","进行中"),
    FINISHED("Finished","完成");
    private String code;
    private String desc;
    PLAN_TASK_STATUS(String code ,String desc){
        this.code = code;
        this.desc=desc;
    }
    public static PLAN_TASK_TYPE getByCode(String code){
        for(PLAN_TASK_TYPE type : PLAN_TASK_TYPE.values()){
            if(type.getCode().equals(code)){
                return type;
            }
        }
        return null;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/enums/PLAN_TASK_TYPE.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,37 @@
package com.aps.core.enums;
public enum PLAN_TASK_TYPE {
    PLATE_PLAN("PlateOrderPlan","生成钣金工单计划");
    private String code;
    private String desc;
    PLAN_TASK_TYPE(String code ,String desc){
        this.code = code;
        this.desc=desc;
    }
    public static PLAN_TASK_TYPE getByCode(String code){
        for(PLAN_TASK_TYPE type : PLAN_TASK_TYPE.values()){
            if(type.code.equals(code)){
                return type;
            }
        }
        return null;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
    public String getDesc() {
        return desc;
    }
    public void setDesc(String desc) {
        this.desc = desc;
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/mapper/ApsPlanTaskMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.aps.core.mapper;
import com.aps.core.domain.ApsPlanTask;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
/**
* @author zhl
* @description é’ˆå¯¹è¡¨ã€aps_plan_task(计划生成日志表)】的数据库操作Mapper
* @createDate 2025-05-16 14:41:49
* @Entity com.aps.core.domain.ApsPlanTask
*/
@Mapper
public interface ApsPlanTaskMapper extends BaseMapper<ApsPlanTask> {
    Page<ApsPlanTask> pagingList(Page<ApsPlanTask> page , ApsPlanTask task);
}
aps-modules/aps-core/src/main/java/com/aps/core/service/ApsPlanTaskService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
package com.aps.core.service;
import com.aps.core.domain.ApsPlanTask;
import com.aps.core.enums.PLAN_TASK_STATUS;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @author zhl
* @description é’ˆå¯¹è¡¨ã€aps_plan_task(计划生成日志表)】的数据库操作Service
* @createDate 2025-05-16 14:41:49
*/
public interface ApsPlanTaskService extends IService<ApsPlanTask> {
    Page<ApsPlanTask> pagingList(Page<ApsPlanTask> page , ApsPlanTask task);
    void savePlanTask(String batchNum);
    void updateTaskStatus(String batchNum, PLAN_TASK_STATUS status);
}
aps-modules/aps-core/src/main/java/com/aps/core/service/IApsPlateStandardRequireService.java
@@ -69,5 +69,5 @@
    public List<ApsPlateStandardRequire> selectPlateSupplyGapList(ApsPlateStandardRequire apsPlateStandardRequire);
    void generatorPlan();
    void generatorPlan(String batchNum);
}
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsGasPipingRouteStatServiceImpl.java
@@ -592,7 +592,7 @@
                            }
                            List<ApsResourceDateStat> tempList = new ArrayList<>(dayMap.values());
                            HashMap<String, List<ApsResourceDateStat>> temp = new HashMap<>();
                            temp.put(processName + "-" + plant, tempList);
                            temp.put(processName + "_" + plant, tempList);
                            processList.add(temp);
                        }
                    } else {
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlanTaskServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,72 @@
package com.aps.core.service.impl;
import cn.hutool.core.util.IdUtil;
import com.aps.common.core.utils.DateUtils;
import com.aps.common.security.utils.SecurityUtils;
import com.aps.core.enums.PLAN_TASK_STATUS;
import com.aps.core.enums.PLAN_TASK_TYPE;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.aps.core.domain.ApsPlanTask;
import com.aps.core.service.ApsPlanTaskService;
import com.aps.core.mapper.ApsPlanTaskMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @author zhl
* @description é’ˆå¯¹è¡¨ã€aps_plan_task(计划生成日志表)】的数据库操作Service实现
* @createDate 2025-05-16 14:41:49
*/
@Service
public class ApsPlanTaskServiceImpl extends ServiceImpl<ApsPlanTaskMapper, ApsPlanTask> implements ApsPlanTaskService{
    @Autowired
    ApsPlanTaskMapper mapper;
    public Page<ApsPlanTask> pagingList(Page<ApsPlanTask> page ,ApsPlanTask task){
        LambdaQueryWrapper<ApsPlanTask> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.like( !task.getTaskType().isEmpty(),  ApsPlanTask::getTaskType,task.getTaskType());
        return mapper.selectPage(page, queryWrapper);
    }
    /**
     * åˆ›å»ºæ–°ç”Ÿè®¡åˆ’任务
     */
    @Override
    public void savePlanTask(String batchNum){
        ApsPlanTask task = ApsPlanTask.builder().id(IdUtil.getSnowflakeNextId())
                .batchNum(batchNum)
                .taskStatus(PLAN_TASK_STATUS.IN_PROCESS.getCode())
                .taskType(PLAN_TASK_TYPE.PLATE_PLAN.getCode())
                .createBy(SecurityUtils.getUsername())
                .createTime(DateUtils.getNowDate())
                .delFlag(0)
                .build();
        baseMapper.insert(task);
    }
    /**
     * æ ¹æ®æ‰¹æ¬¡å· æ›´æ–°çŠ¶æ€
     * */
    @Override
    public void updateTaskStatus(String batchNum, PLAN_TASK_STATUS status){
        LambdaQueryWrapper<ApsPlanTask> queryWrapper=new LambdaQueryWrapper<>();
        queryWrapper.like(ApsPlanTask::getBatchNum,batchNum);
        ApsPlanTask task = ApsPlanTask.builder()
                .taskStatus(status.getCode())
                .updateBy(SecurityUtils.getUsername())
                .updateTime(DateUtils.getNowDate())
                .build();
        baseMapper.update(task,queryWrapper);
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateOrderPlanManagerServiceImpl.java
@@ -5,9 +5,13 @@
import com.aps.core.domain.ApsPlateOrderPlanManager;
import com.aps.core.domain.ApsPlateOrderPlanRequireDate;
import com.aps.core.domain.ApsPlateStandardRequire;
import com.aps.core.enums.PLAN_TASK_STATUS;
import com.aps.core.mapper.ApsPlateOrderPlanManagerMapper;
import com.aps.core.service.ApsPlanTaskService;
import com.aps.core.service.IApsPlateOrderPlanManagerService;
import com.aps.core.service.IApsPlateStandardRequireBatchService;
import com.aps.core.service.IApsPlateStandardRequireService;
import jakarta.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -27,7 +31,10 @@
    @Autowired
    private IApsPlateStandardRequireService apsPlateStandardRequireService;
    @Resource
    IApsPlateStandardRequireBatchService requireBatchService;
    @Resource
    ApsPlanTaskService planTaskService;
    /**
     * æŸ¥è¯¢é’£é‡‘工单计划管理
     *
@@ -68,6 +75,9 @@
                apsPlateOrderPlanManagerMapper.updatePlanDateByBatch(planRequireDate);
            });
        }
        apsPlateStandardRequireService.generatorPlan();
        String batchNum= requireBatchService.getNewBatchNumber();
        planTaskService.savePlanTask(batchNum);
        apsPlateStandardRequireService.generatorPlan(batchNum);
        planTaskService.updateTaskStatus(batchNum, PLAN_TASK_STATUS.FINISHED);
    }
}
aps-modules/aps-core/src/main/java/com/aps/core/service/impl/ApsPlateStandardRequireServiceImpl.java
@@ -163,7 +163,7 @@
    @Transactional
    @Override
    public void generatorPlan(){
    public void generatorPlan(String batchNum){
        /*初始化数据*/
        requireBatchService.initRequireBatch();
@@ -171,8 +171,6 @@
        String plantCode="FORTUNA";
        /*定义主单类型为钣金主单*/
        String mainOrderType = "main";
        /*生成新批次号*/
        String batchNum= requireBatchService.getNewBatchNumber();
        /*获取钣金主单信息*/
        List<ApsPlatePlan> mainPlans = platePlanMapper.selectPlatePlanByPlantMajor(plantCode,mainOrderType);
        Hashtable<String, ApsMaterialStorageManagement> usedStorage = new Hashtable<>();
aps-modules/aps-core/src/main/resources/mapper/core/ApsPlanTaskMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.aps.core.mapper.ApsPlanTaskMapper">
    <resultMap id="BaseResultMap" type="com.aps.core.domain.ApsPlanTask">
            <result property="id" column="id" />
            <result property="batchNum" column="batch_num" />
            <result property="taskType" column="task_type" />
            <result property="taskStatus" column="task_status" />
            <result property="createBy" column="create_by" />
            <result property="createTime" column="create_time" />
            <result property="updateBy" column="update_by" />
            <result property="updateTime" column="update_time" />
            <result property="delFlag" column="del_flag" />
    </resultMap>
    <sql id="Base_Column_List">
        id,batch_num,task_type,task_status,create_by,create_time,
        update_by,update_time,del_flag
    </sql>
    <select id="pagingList" resultMap="BaseResultMap">
        select * from  aps_plan_task
    </select>
</mapper>
aps-modules/aps-core/src/main/resources/mapper/core/ApsShopMapper.xml
@@ -27,7 +27,6 @@
            <if test="shopCode != null  and shopCode != ''"> and shop_code = #{shopCode}</if>
            <if test="plantCode != null  and plantCode != ''"> and plant_code = #{plantCode}</if>
            <if test="status != null  and status != ''"> and status = #{status}</if>
             and status='1'
        </where>
        order by id asc
    </select>
aps-modules/aps-core/src/main/resources/mapper/core/ApsStandardProcessRouteHeaderMapper.xml
@@ -36,7 +36,6 @@
            <if test="endDate != null  and endDate != ''"> and end_date = #{endDate}</if>
            <if test="orgCode != null  and orgCode != ''"> and org_code = #{orgCode}</if>
            <if test="itemCode != null  and itemCode != ''"> and item_code like '%' || #{itemCode} || '%'</if>
            <if test="orgCode != null  and orgCode != ''"> and org_code = #{orgCode}</if>
            and del_flag = '0'
        </where>
        ORDER BY version desc
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java
@@ -133,7 +133,9 @@
    @Override
    public void getWorkOrderProcessFromU9(List<String> docNos) throws Exception {
        List<String> noProcessDocNos = docNos;
        List<String> noProcessDocNos = new ArrayList<>(docNos);
        List<String> haveProcessDocNos = new ArrayList<>();
        ApsWorkOrderJobLog apsWorkOrderJobLog = new ApsWorkOrderJobLog();
        // è®¾ç½®è¯·æ±‚头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
@@ -151,13 +153,11 @@
            ResponseEntity<String> response = restTemplate.postForEntity(u9WorkOrderProcessUrl, request, String.class);
            String responseBody = response.getBody();
            JSONObject responseBodyJson = JSONObject.parseObject(responseBody);
            ApsWorkOrderJobLog apsWorkOrderJobLog = new ApsWorkOrderJobLog();
            apsWorkOrderJobLog.setRequestData(requestBody.toJSONString());
            apsWorkOrderJobLog.setCreateTime(DateUtils.getNowDate());
            apsWorkOrderJobLog.setBizType("work_order_process");
            apsWorkOrderJobLog.setResult("SUCCESS");
            apsWorkOrderJobLogService.insertApsWorkOrderJobLog(apsWorkOrderJobLog);
            List<String> haveProcessDocNos = new ArrayList<>();
            if (response.getStatusCode().is2xxSuccessful()) {
                if(!StringUtils.isEmpty(responseBody)){
                    if("200".equals(responseBodyJson.getString("status"))){
@@ -166,8 +166,8 @@
                            List<ApsWorkOrderProcess> addList = new ArrayList<>();
                            List<ApsWorkOrderProcess> updateList = new ArrayList<>();
                            String nowDocNo = null;
                            for (Object o : jsonArray) {
                                JSONObject process = (JSONObject) o;
                            for (int i = 0,size=jsonArray.size();i<size;i++) {
                                JSONObject process = jsonArray.getJSONObject(i);
                                if (nowDocNo == null) {
                                    nowDocNo = process.getString("DocNo");
                                    noProcessDocNos.remove(nowDocNo);
@@ -204,9 +204,9 @@
                                    apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate());
                                    addList.add(apsWorkOrderProcess);
//                                }
                                if(!nowDocNo.equals(process.getString("DocNo"))){
                                if(!nowDocNo.equals(process.getString("DocNo")) || i==size-1){
                                    //更新工单同步工序状态
                                    docNos.remove(nowDocNo);
                                    noProcessDocNos.remove(nowDocNo);
                                    haveProcessDocNos.add(nowDocNo);
                                    nowDocNo = process.getString("DocNo");
                                }
@@ -225,23 +225,6 @@
                                apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                                logger.info("【INSERT】获取并插入U9工序成功!【工单号:{}】", docNos);
                            }
                            Map<String, Object> param = new HashMap<>();
                            param.put("status", "1");
                            param.put("docNos", haveProcessDocNos);
                            apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
                        }else{
                            if(!noProcessDocNos.isEmpty()){
                                Map<String, Object> param = new HashMap<>();
                                param.put("status", "2");
                                param.put("docNos", noProcessDocNos);
                                apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
                                apsWorkOrderJobLog.setRequestData(requestBody.toJSONString());
                                apsWorkOrderJobLog.setResponseData(response.getBody());
                                apsWorkOrderJobLog.setResult("empty");
                                apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                                apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                            }
                            break;
                        }
                        if(jsonArray.size()<1000){
                            break;
@@ -265,11 +248,29 @@
                throw new Exception("【ERROR】查询U9工序失败!【工单号:{"+ docNos +"}, é”™è¯¯ç ï¼š{"+ responseBodyJson.getString("status") +"},错误信息:{"+ responseBodyJson.getString("message") +"}】");
            }
        }
        if(!haveProcessDocNos.isEmpty()){
            Map<String, Object> param = new HashMap<>();
            param.put("status", "1");
            param.put("docNos", haveProcessDocNos);
            apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
        }
        if(!noProcessDocNos.isEmpty()){
            Map<String, Object> param = new HashMap<>();
            param.put("status", "2");
            param.put("docNos", noProcessDocNos);
            apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
            apsWorkOrderJobLog.setRequestData(noProcessDocNos.toString());
            apsWorkOrderJobLog.setResponseData("");
            apsWorkOrderJobLog.setResult("empty");
            apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
            apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
        }
    }
    @Override
    public void syncWorkOrderProcessData(String status, Integer pageSize) {
        try{
            Integer pageNum = 1;
            //分页查询工单
            ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob();
            if("".equals(status)){
@@ -282,6 +283,7 @@
                while (true){
                    PageHelper.startPage(1, pageSize);
                    List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
                    PageHelper.clearPage();
                    if(!pageList.isEmpty()){
                        long startTime = System.currentTimeMillis();
                        List<String> docNos = new ArrayList<>();
@@ -293,15 +295,14 @@
                            break;
                        }
                        lastDocNos = String.join(",", docNos);
                        long endTime = System.currentTimeMillis(); // è®°å½•结束时间
                        long duration = endTime - startTime; // è®¡ç®—运行时间
                        System.out.println("运行时间:"+ duration +"毫秒");
                    }
                    pageNum++;
                }
            }else{
                while (true){
                    PageHelper.startPage(1, pageSize);
                    List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
                    PageHelper.clearPage();
                    if(!pageList.isEmpty()){
                        long startTime = System.currentTimeMillis();
                        List<String> docNos = new ArrayList<>();
@@ -312,15 +313,13 @@
                        }
                        if(!docNos.isEmpty()){
                            getWorkOrderProcessFromU9(docNos);
                            long endTime = System.currentTimeMillis(); // è®°å½•结束时间
                            long duration = endTime - startTime; // è®¡ç®—运行时间
                            System.out.println("运行时间:"+ duration +"毫秒");
                        }else{
                            break;
                        }
                    }else{
                        break;
                    }
                    pageNum++;
                }
            }
        }catch (Exception e){