huangjiayang
2025-04-29 1a08afcfe658682aefcd0677dcf47ac3443e58f4
【UPDATE】修改拉取U9工序数据分页
已修改1个文件
219 ■■■■ 文件已修改
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java 219 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
aps-modules/aps-job/src/main/java/com/aps/job/service/impl/ApsWorkOrderProcessServiceImpl.java
@@ -137,117 +137,132 @@
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        // 设置请求体
        JSONObject requestBody = new JSONObject();
        requestBody.put("DocList", docNos);
        requestBody.put("PageIndex", 1);
        requestBody.put("PageSize", 1000);
        // 创建HttpEntity对象
        HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
        // 发送POST请求
        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"))){
                    JSONArray jsonArray = responseBodyJson.getJSONArray("data");
                    if (!jsonArray.isEmpty()) {
                        List<ApsWorkOrderProcess> addList = new ArrayList<>();
                        List<ApsWorkOrderProcess> updateList = new ArrayList<>();
                        String nowDocNo = null;
                        for (Object o : jsonArray) {
                            JSONObject process = (JSONObject) o;
                            if (nowDocNo == null) {
                                nowDocNo = process.getString("DocNo");
                                docNos.remove(nowDocNo);
                                haveProcessDocNos.add(nowDocNo);
        int pageSize = 1000;
        int pageIndex = 1;
        while (true){
            JSONObject requestBody = new JSONObject();
            requestBody.put("DocList", docNos);
            requestBody.put("PageIndex", pageIndex);
            requestBody.put("PageSize", pageSize);
            // 创建HttpEntity对象
            HttpEntity<String> request = new HttpEntity<>(requestBody.toJSONString(), headers);
            // 发送POST请求
            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"))){
                        JSONArray jsonArray = responseBodyJson.getJSONArray("data");
                        if (!jsonArray.isEmpty()) {
                            List<ApsWorkOrderProcess> addList = new ArrayList<>();
                            List<ApsWorkOrderProcess> updateList = new ArrayList<>();
                            String nowDocNo = null;
                            for (Object o : jsonArray) {
                                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"));
                                params.put("opNum", process.getString("OpNum"));
                                params.put("opId", process.getString("OpID"));
                                Long existsId = apsWorkOrderProcessMapper.existsByDocNoOpNumOpId(params);
                                ApsWorkOrderProcess apsWorkOrderProcess = new ApsWorkOrderProcess();
                                apsWorkOrderProcess.setItemCode(process.getString("ItemCode"));
                                apsWorkOrderProcess.setDocNo(process.getString("DocNo"));
                                apsWorkOrderProcess.setOpNum(process.getString("OpNum"));
                                apsWorkOrderProcess.setOpId(process.getString("OpID"));
                                apsWorkOrderProcess.setProcessName(process.getString("StdOp"));
                                apsWorkOrderProcess.setStandardTime(process.getBigDecimal("StandardTime"));
                                apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate"));
                                apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate"));
                                apsWorkOrderProcess.setProcessQty(process.getBigDecimal("ProcessQty"));
                                apsWorkOrderProcess.setScrapQty(process.getBigDecimal("ScrapQty"));
                                apsWorkOrderProcess.setOpStatus(process.getString("OpStatus"));
                                apsWorkOrderProcess.setOrg(process.getString("Org"));
                                apsWorkOrderProcess.setOrgCode(process.getString("OrgCode"));
                                apsWorkOrderProcess.setWorkCenter(process.getString("WorkCenter"));
                                if (existsId != null) {
                                    apsWorkOrderProcess.setId(existsId);
                                    apsWorkOrderProcess.setUpdateBy("task");
                                    apsWorkOrderProcess.setUpdateTime(DateUtils.getNowDate());
                                    updateList.add(apsWorkOrderProcess);
                                } else {
                                    apsWorkOrderProcess.setId(IdUtil.getSnowflakeNextId());
                                    apsWorkOrderProcess.setCreateBy("task");
                                    apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate());
                                    addList.add(apsWorkOrderProcess);
                                }
                                if(!nowDocNo.equals(process.getString("DocNo"))){
                                    //更新工单同步工序状态
                                    docNos.remove(nowDocNo);
                                    haveProcessDocNos.add(nowDocNo);
                                    nowDocNo = process.getString("DocNo");
                                }
                            }
                            Map<String, Object> params = new HashMap<>();
                            params.put("docNo", process.getString("DocNo"));
                            params.put("opNum", process.getString("OpNum"));
                            params.put("opId", process.getString("OpID"));
                            Long existsId = apsWorkOrderProcessMapper.existsByDocNoOpNumOpId(params);
                            ApsWorkOrderProcess apsWorkOrderProcess = new ApsWorkOrderProcess();
                            apsWorkOrderProcess.setItemCode(process.getString("ItemCode"));
                            apsWorkOrderProcess.setDocNo(process.getString("DocNo"));
                            apsWorkOrderProcess.setOpNum(process.getString("OpNum"));
                            apsWorkOrderProcess.setOpId(process.getString("OpID"));
                            apsWorkOrderProcess.setProcessName(process.getString("StdOp"));
                            apsWorkOrderProcess.setStandardTime(process.getBigDecimal("StandardTime"));
                            apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate"));
                            apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate"));
                            apsWorkOrderProcess.setProcessQty(process.getBigDecimal("ProcessQty"));
                            apsWorkOrderProcess.setScrapQty(process.getBigDecimal("ScrapQty"));
                            apsWorkOrderProcess.setOpStatus(process.getString("OpStatus"));
                            apsWorkOrderProcess.setOrg(process.getString("Org"));
                            apsWorkOrderProcess.setOrgCode(process.getString("OrgCode"));
                            apsWorkOrderProcess.setWorkCenter(process.getString("WorkCenter"));
                            if (existsId != null) {
                                apsWorkOrderProcess.setId(existsId);
                                apsWorkOrderProcess.setUpdateBy("task");
                                apsWorkOrderProcess.setUpdateTime(DateUtils.getNowDate());
                                updateList.add(apsWorkOrderProcess);
                            } else {
                                apsWorkOrderProcess.setId(IdUtil.getSnowflakeNextId());
                                apsWorkOrderProcess.setCreateBy("task");
                                apsWorkOrderProcess.setCreateTime(DateUtils.getNowDate());
                                addList.add(apsWorkOrderProcess);
                            if(!updateList.isEmpty()){
                                apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList);
                                apsWorkOrderJobLog.setResult("ok update "+updateList.size());
                                apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                                apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                                logger.info("【UPDATE】获取并更新U9工序成功!【工单号:{}】", docNos);
                            }
                            if(!nowDocNo.equals(process.getString("DocNo"))){
                                //更新工单同步工序状态
                                docNos.remove(nowDocNo);
                                haveProcessDocNos.add(nowDocNo);
                                nowDocNo = process.getString("DocNo");
                            if(!addList.isEmpty()){
                                apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList);
                                apsWorkOrderJobLog.setResult("ok insert "+updateList.size());
                                apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                                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(!docNos.isEmpty()){
                                Map<String, Object> param = new HashMap<>();
                                param.put("status", "2");
                                param.put("docNos", docNos);
                                apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
                                apsWorkOrderJobLog.setRequestData(requestBody.toJSONString());
                                apsWorkOrderJobLog.setResponseData(response.getBody());
                                apsWorkOrderJobLog.setResult("empty");
                                apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                                apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                            }
                            break;
                        }
                        if(!updateList.isEmpty()){
                            apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList);
                            apsWorkOrderJobLog.setResult("ok update "+updateList.size());
                            apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                            apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                            logger.info("【UPDATE】获取并更新U9工序成功!【工单号:{}】", docNos);
                        if(jsonArray.size()<1000){
                            break;
                        }
                        if(!addList.isEmpty()){
                            apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList);
                            apsWorkOrderJobLog.setResult("ok insert "+updateList.size());
                            apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                            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);
                    }
                    if(!docNos.isEmpty()){
                        Map<String, Object> param = new HashMap<>();
                        param.put("status", "2");
                        param.put("docNos", docNos);
                        apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(param);
                        pageIndex++;
                    }else{
                        apsWorkOrderJobLog.setResponseData(response.getBody());
                        apsWorkOrderJobLog.setResult("fail");
                        apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                        apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                        logger.error("【ERROR】查询U9工序失败!【工单号:{}, 错误码:{},错误信息:{}】", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message"));
                    }
                }else{
                    apsWorkOrderJobLog.setResponseData(response.getBody());
                    apsWorkOrderJobLog.setResult("fail");
                    apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                    apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                    logger.error("【ERROR】查询U9工序失败!【工单号:{}, 错误码:{},错误信息:{}】", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message"));
                    logger.warn("【WARNING】未查询到U9工序!【工单号:{}】", docNos);
                }
            }else{
                logger.warn("【WARNING】未查询到U9工序!【工单号:{}】", docNos);
            } else {
                apsWorkOrderJobLog.setResponseData(response.getBody());
                apsWorkOrderJobLog.setResult("fail");
                apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
                apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
                throw new Exception("【ERROR】查询U9工序失败!【工单号:{"+ docNos +"}, 错误码:{"+ responseBodyJson.getString("status") +"},错误信息:{"+ responseBodyJson.getString("message") +"}】");
            }
        } else {
            apsWorkOrderJobLog.setResponseData(response.getBody());
            apsWorkOrderJobLog.setResult("fail");
            apsWorkOrderJobLog.setUpdateTime(DateUtils.getNowDate());
            apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog);
            throw new Exception("【ERROR】查询U9工序失败!【工单号:{"+ docNos +"}, 错误码:{"+ responseBodyJson.getString("status") +"},错误信息:{"+ responseBodyJson.getString("message") +"}】");
        }
    }