package com.aps.job.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aps.common.core.utils.StringUtils; import com.aps.job.domain.ApsWorkOrderProcess; import com.aps.job.mapper.ApsWorkOrderProcessMapper; import com.aps.job.service.IApsWorkOrderProcessService; import jakarta.annotation.Resource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 工单工序Service业务层处理 * * @author hjy * @date 2025-04-17 */ @Service public class ApsWorkOrderProcessServiceImpl implements IApsWorkOrderProcessService { @Value("${u9.workOrderProcessUrl}") private String u9WorkOrderProcessUrl; private final Logger logger = LoggerFactory.getLogger(ApsWorkOrderProcessServiceImpl.class); @Resource private RestTemplate restTemplate; @Resource private ApsWorkOrderProcessMapper apsWorkOrderProcessMapper; /** * 查询工单工序 * * @param id 工单工序主键 * @return 工单工序 */ @Override public ApsWorkOrderProcess selectApsWorkOrderProcessById(Long id) { return apsWorkOrderProcessMapper.selectApsWorkOrderProcessById(id); } /** * 查询工单工序列表 * * @param apsWorkOrderProcess 工单工序 * @return 工单工序 */ @Override public List selectApsWorkOrderProcessList(ApsWorkOrderProcess apsWorkOrderProcess) { return apsWorkOrderProcessMapper.selectApsWorkOrderProcessList(apsWorkOrderProcess); } /** * 新增工单工序 * * @param apsWorkOrderProcess 工单工序 * @return 结果 */ @Override public int insertApsWorkOrderProcess(ApsWorkOrderProcess apsWorkOrderProcess) { return apsWorkOrderProcessMapper.insertApsWorkOrderProcess(apsWorkOrderProcess); } /** * 修改工单工序 * * @param apsWorkOrderProcess 工单工序 * @return 结果 */ @Override public int updateApsWorkOrderProcess(ApsWorkOrderProcess apsWorkOrderProcess) { return apsWorkOrderProcessMapper.updateApsWorkOrderProcess(apsWorkOrderProcess); } /** * 批量删除工单工序 * * @param ids 需要删除的工单工序主键 * @return 结果 */ @Override public int deleteApsWorkOrderProcessByIds(Long[] ids) { return apsWorkOrderProcessMapper.deleteApsWorkOrderProcessByIds(ids); } /** * 删除工单工序信息 * * @param id 工单工序主键 * @return 结果 */ @Override public int deleteApsWorkOrderProcessById(Long id) { return apsWorkOrderProcessMapper.deleteApsWorkOrderProcessById(id); } @Override public void getWorkOrderProcessFromU9(List docNos) throws Exception { // 设置请求头 HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); // 设置请求体 JSONObject requestBody = new JSONObject(); requestBody.put("DocList", docNos); // 创建HttpEntity对象 HttpEntity request = new HttpEntity<>(requestBody.toJSONString(), headers); // 发送POST请求 ResponseEntity response = restTemplate.postForEntity(u9WorkOrderProcessUrl, request, String.class); if (response.getStatusCode().is2xxSuccessful()) { String responseBody = response.getBody(); if(StringUtils.isEmpty(responseBody)){ JSONObject responseBodyJson = JSONObject.parseObject(responseBody); if(!"200".equals(responseBodyJson.getString("status"))){ JSONArray jsonArray = responseBodyJson.getJSONArray("data"); if (jsonArray != null) { jsonArray.forEach(jsonObject -> { JSONObject process = (JSONObject) jsonObject; Map 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("WorkCenter")); apsWorkOrderProcess.setStandardTime(process.getFloat("StandardTime")); apsWorkOrderProcess.setPalnStartDate(process.getDate("PlanStartDate")); apsWorkOrderProcess.setPlanCompleteDate(process.getDate("PlanCompleteDate")); apsWorkOrderProcess.setProcessQty(process.getFloat("ProcessQty")); apsWorkOrderProcess.setScrapQty(process.getFloat("ScrapQty")); apsWorkOrderProcess.setOpStatus(process.getString("OpStatus")); apsWorkOrderProcess.setOrg(process.getString("Org")); apsWorkOrderProcess.setOrgCode(process.getString("OrgCode")); 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()); } }); } }else{ logger.error("【ERROR】查询U9工序失败!【工单号:{}, 错误码:{},错误信息:{}】", docNos, responseBodyJson.getString("status"), responseBodyJson.getString("message")); } }else{ logger.warn("【WARNING】未查询到U9工序!【工单号:{}】", docNos); } } else { throw new Exception("【ERROR】获取U9工序失败!【工单号:"+ docNos +"】"); } } }