huangjiayang
2025-04-18 e806603a75c6999c040359ffff325fa774c3cc05
【UPDATE】1.增加同步工序数据到业务表定时任务 2.优化同步工序数据方法
已修改7个文件
128 ■■■■ 文件已修改
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWorkOrderJobMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWorkOrderProcessMapper.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWorkOrderProcessService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java 38 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderProcessMapper.xml 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWorkOrderJobMapper.java
@@ -4,6 +4,7 @@
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
/**
 * 工单同步Mapper接口
@@ -67,10 +68,10 @@
    int deleteWorkOrderJobByOrderIds(List<String> orderIds);
    /**
     * 更新工单工序同步状态
     * @param docNo
     * @param params
     * @return
     */
    public int updateApsWorkOrderJobPrccessStatus(String docNo);
    public int updateApsWorkOrderJobPrccessStatus(Map<String, Object> params);
    /**
     * 批量删除零件工单数据
     * */
aps-modules/aps-job/src/main/java/com/aps/job/mapper/ApsWorkOrderProcessMapper.java
@@ -76,12 +76,22 @@
     * @param list
     * @return 更新数量
     */
    int updateApsWorkOrderProcessBatch(@Param("list") List<ApsWorkOrderProcess> list);
    public int updateApsWorkOrderProcessBatch(@Param("list") List<ApsWorkOrderProcess> list);
    /**
     * 批量插入工单工序
     * @param list
     * @return 插入数量
     */
    int insertApsWorkOrderProcessBatch(@Param("list") List<ApsWorkOrderProcess> list);
    public int insertApsWorkOrderProcessBatch(@Param("list") List<ApsWorkOrderProcess> list);
    /**
     * 插入工单工序数据到业务表
     */
    public void insertIntoApsProcessRoute();
    /**
     * 删除临时工序数据
     */
    public void deleteApsProcessRoute();
}
aps-modules/aps-job/src/main/java/com/aps/job/service/IApsWorkOrderProcessService.java
@@ -62,7 +62,7 @@
    /**
     * 从U9获取工单工序信息
     * @param docNo
     * @param docNos
     * @return
     */
    public void getWorkOrderProcessFromU9(List<String> docNos) throws Exception;
@@ -71,4 +71,14 @@
     * 同步工单工序数据
     */
    public void syncWorkOrderProcessData();
    /**
     * 插入工单工序数据到业务表
     */
    public void insertIntoApsProcessRoute();
    /**
     * 删除临时工序数据
     */
    public void deleteApsProcessRoute();
}
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java
@@ -148,6 +148,7 @@
        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"))){
@@ -160,6 +161,8 @@
                            JSONObject process = (JSONObject) o;
                            if (nowDocNo == null) {
                                nowDocNo = process.getString("DocNo");
                                docNos.remove(nowDocNo);
                                haveProcessDocNos.add(nowDocNo);
                            }
                            Map<String, Object> params = new HashMap<>();
                            params.put("docNo", process.getString("DocNo"));
@@ -188,7 +191,8 @@
                            }
                            if(!nowDocNo.equals(process.getString("DocNo"))){
                                //更新工单同步工序状态
                                apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(nowDocNo);
                                docNos.remove(nowDocNo);
                                haveProcessDocNos.add(nowDocNo);
                                nowDocNo = process.getString("DocNo");
                            }
                        }
@@ -204,7 +208,15 @@
                            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);
                    }
                    Map<String, Object> param = new HashMap<>();
                    param.put("status", "2");
                    param.put("docNos", docNos);
                    apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
                }else{
                    apsWorkOrderJobLog.setResponseData(response.getBody());
                    apsWorkOrderJobLog.setResult("fail");
@@ -228,28 +240,36 @@
            //分页查询工单
            ApsWorkOrderJob apsWorkOrderJob = new ApsWorkOrderJob();
            apsWorkOrderJob.setProcessStatus("0");
            List<ApsWorkOrderJob> list = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
            int pageSize = 100;
            int allPage = list.size()/pageSize;
//            int allPage = 1;
            for (int i = 1; i <= allPage; i++) {
                long startTime = System.currentTimeMillis();
                PageHelper.startPage(i, pageSize);
            while (true){
                PageHelper.startPage(1, 100);
                List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
                if(!pageList.isEmpty()){
                    long startTime = System.currentTimeMillis();
                    List<String> docNos = new ArrayList<>();
                    for (ApsWorkOrderJob apsWorkOrderJob1 : pageList){
                        docNos.add(apsWorkOrderJob1.getDocNo());
                    }
                    getWorkOrderProcessFromU9(docNos);
                }
                long endTime = System.currentTimeMillis(); // 记录结束时间
                long duration = endTime - startTime; // 计算运行时间
                System.out.println("运行时间:"+ duration +"毫秒");
                }else{
                    break;
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            logger.error(e.getMessage());
        }
    }
    @Override
    public void insertIntoApsProcessRoute() {
        apsWorkOrderProcessMapper.insertIntoApsProcessRoute();
    }
    @Override
    public void deleteApsProcessRoute() {
        apsWorkOrderProcessMapper.deleteApsProcessRoute();
    }
}
aps-modules/aps-job/src/main/java/com/aps/job/task/RyTask.java
@@ -82,4 +82,13 @@
            currentPage++;
        }
    }
    /**
     * 将工单工序数据同步到业务表中
     */
    public void insertIntoApsProcessRoute()
    {
        iApsWorkOrderProcessService.deleteApsProcessRoute();
        iApsWorkOrderProcessService.insertIntoApsProcessRoute();
    }
}
aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderJobMapper.xml
@@ -283,8 +283,13 @@
        </foreach>
    </delete>
    <update id="updateApsWorkOrderJobPrccessStatus" parameterType="String">
        update aps_work_order_job set process_status='1' where doc_no = #{docNo}
    <update id="updateApsWorkOrderJobPrccessStatus" parameterType="map">
        update aps_work_order_job
        set process_status = #{status}
        where doc_no in
        <foreach item="docNo" collection="docNos" open="(" separator="," close=")">
            #{docNo}
        </foreach>
    </update>
    <delete id="deleteAllPartPlan" >
aps-modules/aps-job/src/main/resources/mapper/job/ApsWorkOrderProcessMapper.xml
@@ -178,4 +178,45 @@
        </foreach>
    </insert>
    <!-- 插入数据到 aps_process_route -->
    <insert id="insertIntoApsProcessRoute">
        INSERT INTO aps_process_route (
            id,
            item_no,
            work_order_no,
            process_number,
            op_id,
            process_name,
            standard_time,
            process_plan_start_day,
            process_plan_end_day,
            process_qty,
            discard_count,
            op_status,
            plant,
            org_code
        )
        SELECT
            id,
            item_code,
            doc_no,
            op_num,
            op_id,
            process_name,
            standard_time,
            plan_start_date,
            plan_complete_date,
            process_qty,
            scrap_qty,
            op_status,
            org,
            org_code
        FROM aps_work_order_process
    </insert>
    <!-- 删除 aps_process_route 表中的数据 -->
    <delete id="deleteApsProcessRoute">
        DELETE FROM aps_process_route
    </delete>
</mapper>