| | |
| | | |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.aps.common.core.utils.DateUtils; |
| | | import com.aps.common.core.utils.StringUtils; |
| | | import com.aps.job.domain.ApsWorkOrderJob; |
| | | import com.aps.job.domain.ApsWorkOrderJobLog; |
| | | import com.aps.job.domain.ApsWorkOrderProcess; |
| | | import com.aps.job.mapper.ApsWorkOrderJobMapper; |
| | | import com.aps.job.mapper.ApsWorkOrderProcessMapper; |
| | | import com.aps.job.service.IApsWorkOrderJobLogService; |
| | | import com.aps.job.service.IApsWorkOrderProcessService; |
| | | import jakarta.annotation.Resource; |
| | | import com.github.pagehelper.PageHelper; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | |
| | | private final Logger logger = LoggerFactory.getLogger(ApsWorkOrderProcessServiceImpl.class); |
| | | |
| | | @Resource |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | @Resource |
| | | @Autowired |
| | | private ApsWorkOrderProcessMapper apsWorkOrderProcessMapper; |
| | | |
| | | @Autowired |
| | | private ApsWorkOrderJobMapper apsWorkOrderJobMapper; |
| | | |
| | | @Autowired |
| | | private IApsWorkOrderJobLogService apsWorkOrderJobLogService; |
| | | |
| | | /** |
| | | * 查询工单工序 |
| | |
| | | // 设置请求体 |
| | | 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); |
| | | if (response.getStatusCode().is2xxSuccessful()) { |
| | | String responseBody = response.getBody(); |
| | | if(StringUtils.isEmpty(responseBody)){ |
| | | JSONObject responseBodyJson = JSONObject.parseObject(responseBody); |
| | | if(!"200".equals(responseBodyJson.getString("status"))){ |
| | | if(!StringUtils.isEmpty(responseBody)){ |
| | | if("200".equals(responseBodyJson.getString("status"))){ |
| | | JSONArray jsonArray = responseBodyJson.getJSONArray("data"); |
| | | if (jsonArray != null) { |
| | | jsonArray.forEach(jsonObject -> { |
| | | JSONObject process = (JSONObject) jsonObject; |
| | | 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"); |
| | | } |
| | | Map<String, Object> params = new HashMap<>(); |
| | | params.put("docNo", process.getString("DocNo")); |
| | | params.put("opNum", process.getString("OpNum")); |
| | |
| | | apsWorkOrderProcess.setOpStatus(process.getString("OpStatus")); |
| | | apsWorkOrderProcess.setOrg(process.getString("Org")); |
| | | apsWorkOrderProcess.setOrgCode(process.getString("OrgCode")); |
| | | if(existsId!=null){ |
| | | if (existsId != null) { |
| | | apsWorkOrderProcess.setId(existsId); |
| | | apsWorkOrderProcessMapper.updateApsWorkOrderProcess(apsWorkOrderProcess); |
| | | logger.info("【UPDATE】获取并更新U9工序成功!【工单号:{},工序号:{}】", docNos, apsWorkOrderProcess.getOpNum()); |
| | | }else{ |
| | | apsWorkOrderProcessMapper.insertApsWorkOrderProcess(apsWorkOrderProcess); |
| | | logger.info("【INSERT】获取并插入U9工序成功!【工单号:{}, 工序号:{}】", docNos, apsWorkOrderProcess.getOpNum()); |
| | | updateList.add(apsWorkOrderProcess); |
| | | } else { |
| | | addList.add(apsWorkOrderProcess); |
| | | } |
| | | }); |
| | | if(!nowDocNo.equals(process.getString("DocNo"))){ |
| | | //更新工单同步工序状态 |
| | | apsWorkOrderJobMapper.updateApsWorkOrderJobPrccessStatus(nowDocNo); |
| | | nowDocNo = process.getString("DocNo"); |
| | | } |
| | | } |
| | | if(!updateList.isEmpty()){ |
| | | apsWorkOrderProcessMapper.updateApsWorkOrderProcessBatch(updateList); |
| | | apsWorkOrderJobLog.setResult("ok update "+updateList.size()); |
| | | apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); |
| | | logger.info("【UPDATE】获取并更新U9工序成功!【工单号:{}】", docNos); |
| | | } |
| | | if(!addList.isEmpty()){ |
| | | apsWorkOrderProcessMapper.insertApsWorkOrderProcessBatch(addList); |
| | | apsWorkOrderJobLog.setResult("ok insert "+updateList.size()); |
| | | apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); |
| | | logger.info("【INSERT】获取并插入U9工序成功!【工单号:{}】", docNos); |
| | | } |
| | | } |
| | | }else{ |
| | | apsWorkOrderJobLog.setResponseData(response.getBody()); |
| | | apsWorkOrderJobLog.setResult("fail"); |
| | | apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); |
| | | logger.error("【ERROR】查询U9工序失败!【工单号:{}, 错误码:{},错误信息:{}】", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message")); |
| | | } |
| | | }else{ |
| | | logger.warn("【WARNING】未查询到U9工序!【工单号:{}】", docNos); |
| | | } |
| | | } else { |
| | | throw new Exception("【ERROR】获取U9工序失败!【工单号:"+ docNos +"】"); |
| | | apsWorkOrderJobLog.setResponseData(response.getBody()); |
| | | apsWorkOrderJobLog.setResult("fail"); |
| | | apsWorkOrderJobLogService.updateApsWorkOrderJobLog(apsWorkOrderJobLog); |
| | | throw new Exception("【ERROR】查询U9工序失败!【工单号:{"+ docNos +"}, 错误码:{"+ responseBodyJson.getString("status") +"},错误信息:{"+ responseBodyJson.getString("message") +"}】"); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void syncWorkOrderProcessData() { |
| | | 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()); |
| | | } |
| | | getWorkOrderProcessFromU9(docNos); |
| | | } |
| | | long endTime = System.currentTimeMillis(); // 记录结束时间 |
| | | long duration = endTime - startTime; // 计算运行时间 |
| | | System.out.println("运行时间:"+ duration +"毫秒"); |
| | | } |
| | | }catch (Exception e){ |
| | | e.printStackTrace(); |
| | | logger.error(e.getMessage()); |
| | | } |
| | | } |
| | | } |