zhanghl
2025-04-24 2cb3ab8f849af5fd01e6150aae2c84e24321ce96
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java
@@ -7,6 +7,7 @@
import com.aps.job.domain.ApsWorkOrderJob;
import com.aps.job.domain.ApsWorkOrderJobLog;
import com.aps.job.domain.ApsWorkOrderProcess;
import com.aps.job.mapper.ApsWorkOrderJobLogMapper;
import com.aps.job.mapper.ApsWorkOrderJobMapper;
import com.aps.job.mapper.ApsWorkOrderProcessMapper;
import com.aps.job.service.IApsWorkOrderJobLogService;
@@ -53,6 +54,9 @@
    @Autowired
    private IApsWorkOrderJobLogService apsWorkOrderJobLogService;
    @Autowired
    private ApsWorkOrderJobLogMapper apsWorkOrderJobLogMapper;
    /**
     * 查询工单工序
@@ -148,6 +152,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 +165,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"));
@@ -182,13 +189,16 @@
                            apsWorkOrderProcess.setOrgCode(process.getString("OrgCode"));
                            if (existsId != null) {
                                apsWorkOrderProcess.setId(existsId);
                                apsWorkOrderProcess.setUpdateTime(DateUtils.getNowDate());
                                updateList.add(apsWorkOrderProcess);
                            } else {
                                apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate());
                                addList.add(apsWorkOrderProcess);
                            }
                            if(!nowDocNo.equals(process.getString("DocNo"))){
                                //更新工单同步工序状态
                                apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(nowDocNo);
                                docNos.remove(nowDocNo);
                                haveProcessDocNos.add(nowDocNo);
                                nowDocNo = process.getString("DocNo");
                            }
                        }
@@ -204,7 +214,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");
@@ -223,33 +241,93 @@
    }
    @Override
    public void syncWorkOrderProcessData() {
    public void syncWorkOrderProcessData(String status, Integer pageSize) {
        try{
            //分页查询工单
            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);
                List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
                if(!pageList.isEmpty()){
                    List<String> docNos = new ArrayList<>();
                    for (ApsWorkOrderJob apsWorkOrderJob1 : pageList){
                        docNos.add(apsWorkOrderJob1.getDocNo());
            if("".equals(status)){
                status = "0";
            }
            apsWorkOrderJob.setProcessStatus(status);
            // 补查之前没有查到工序的工单
            if("2".equals(status)){
                int total = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob).size();
                int pages = total % pageSize == 0 ? total / pageSize : total / pageSize + 1;
                for (int i = 1; i <= pages; i++){
                    PageHelper.startPage(i, pageSize);
                    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 +"毫秒");
                    }
                    getWorkOrderProcessFromU9(docNos);
                }
                long endTime = System.currentTimeMillis(); // 记录结束时间
                long duration = endTime - startTime; // 计算运行时间
                System.out.println("运行时间:"+ duration +"毫秒");
            }else{
                while (true){
                    PageHelper.startPage(1, pageSize);
                    List<ApsWorkOrderJob> pageList = apsWorkOrderJobMapper.selectApsWorkOrderJobList(apsWorkOrderJob);
                    if(!pageList.isEmpty()){
                        long startTime = System.currentTimeMillis();
                        List<String> docNos = new ArrayList<>();
                        for (ApsWorkOrderJob apsWorkOrderJob1 : pageList){
                            if(apsWorkOrderJob1.getDocNo()!=null){
                                docNos.add(apsWorkOrderJob1.getDocNo());
                            }
                        }
                        if(!docNos.isEmpty()){
                            getWorkOrderProcessFromU9(docNos);
                            long endTime = System.currentTimeMillis(); // 记录结束时间
                            long duration = endTime - startTime; // 计算运行时间
                            System.out.println("运行时间:"+ duration +"毫秒");
                        }else{
                            break;
                        }
                    }else{
                        break;
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            logger.error(e.getMessage());
        }
    }
    @Override
    public void insertIntoApsProcessRoute() {
        apsWorkOrderProcessMapper.insertIntoApsProcessRoute();
    }
    @Override
    public void deleteApsProcessRoute() {
        apsWorkOrderProcessMapper.deleteApsProcessRoute();
    }
    @Override
    public boolean retryRequestWorkOrderProcessByLogId(Long id) {
        try {
            ApsWorkOrderJobLog apsWorkOrderJobLog = apsWorkOrderJobLogMapper.selectApsWorkOrderJobLogById(id);
            JSONObject requestBodyJson = JSONObject.parseObject(apsWorkOrderJobLog.getRequestData());
            JSONArray docListArray = requestBodyJson.getJSONArray("DocList");
            List<String> docNos = new ArrayList<>();
            for (int i = 0; i < docListArray.size(); i++) {
                if(docListArray.getString(i)!=null){
                    docNos.add(docListArray.getString(i));
                }
            }
            if(!docNos.isEmpty()){
                getWorkOrderProcessFromU9(docNos);
            }
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
        return true;
    }
}