diff --git a/src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java b/src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java index 7e7d08e..a90d340 100644 --- a/src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java +++ b/src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java @@ -46,14 +46,14 @@ public class PqcServiceImpl implements PqcService { @Autowired private QcServiceImpl qcService; - @Autowired - private QcDao qcDao; + // @Autowired + // private QcDao qcDao; - @Autowired - private SysOssService sysOssService; + // @Autowired + // private SysOssService sysOssService; - @Autowired - private SysOssDao sysOssDao; + // @Autowired + // private SysOssDao sysOssDao; // @Value("${sys-file.oss-url}") // private String ossUrl; @@ -61,14 +61,14 @@ public class PqcServiceImpl implements PqcService { @Value("${sys-file.file-path}") private String filePath; - @Value("${toacc.name}") - private String toacc; + // @Value("${toacc.name}") + // private String toacc; - @Autowired - private ProcedureDao procedureDao; + // @Autowired + // private ProcedureDao procedureDao; - @Autowired - private RedisTemplate redisTemplate; + // @Autowired + // private RedisTemplate redisTemplate; /** diff --git a/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java b/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java index 4c8411e..133c03d 100644 --- a/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java +++ b/src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java @@ -723,7 +723,8 @@ public class DailyPlanServiceImpl implements DailyPlanService { transData=dailyPlanMapper.getTransData(inData.getSite(),transNo); } updateTvBase(inData.getSite(),"",inData.getSeqNo(),inData.getOperatorId()); - if(inData.getAcceptQty() > 0) { + // 修改:Double → BigDecimal 避免精度问题 - rqrq + if(inData.getAcceptQty() != null && inData.getAcceptQty() > 0) { Date date = DateUtil.getDateToDate(new Date(), "yyyy-MM-dd"); // TaskDto taskDto=abnormalMapper.getOriginator(); TaskDto taskDto = new TaskDto(); @@ -735,7 +736,11 @@ public class DailyPlanServiceImpl implements DailyPlanService { taskDto.setFinalStatus("未完成"); taskDto.setRequiredCompletionDate(date); taskDto.setStatus("未受理"); - taskDto.setTaskDescription("瑕疵品数量" + (Double.parseDouble(inData.getQtyReported()) - Double.parseDouble(inData.getQtyApprove())) + "让步接收"); + // 修改:用BigDecimal精确计算 - rqrq + BigDecimal qtyReportedVal = new BigDecimal(inData.getQtyReported()); + BigDecimal qtyApproveVal = new BigDecimal(inData.getQtyApprove()); + BigDecimal defectQtyForTask = qtyReportedVal.subtract(qtyApproveVal); + taskDto.setTaskDescription("瑕疵品数量" + defectQtyForTask + "让步接收"); taskDto.setTaskHeader(inData.getPartNo() + inData.getPartDescription()); taskDto.setTaskInitiator(taskDto.getCreatedBy()); taskDto.setTaskStartDate(date); @@ -748,7 +753,8 @@ public class DailyPlanServiceImpl implements DailyPlanService { taskListService.saveBatchTaskList(taskDto); } SOOpsTransferData badData=null; - if(inData.getAcceptQty()>0){ + // 修改:Double → BigDecimal 避免精度问题 - rqrq + if(inData.getAcceptQty() != null && inData.getAcceptQty() > 0){ //获取瑕疵品标签信息 badData=dailyPlanMapper.getBadPrintData(inData.getSite(),inData.getSeqNo()); } @@ -770,8 +776,9 @@ public class DailyPlanServiceImpl implements DailyPlanService { dailyPlanMapper.closeSchedule(closeData); } //报废率大于系统参数 自动生成异常单跳转并触发实验室检验 - Double qtyReported=Double.valueOf(inData.getQtyReported()); - Double qtyApprove=Double.valueOf(inData.getQtyApprove()); + // 修改:String直接转BigDecimal,避免Double精度问题 - rqrq + BigDecimal qtyReported = new BigDecimal(inData.getQtyReported()); + BigDecimal qtyApprove = new BigDecimal(inData.getQtyApprove()); Integer id =null; List checkUserSeqNo=dailyPlanMapper.checkUserSeqNo(inData.getSeqNo(), ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername()); if(checkUserSeqNo.isEmpty()){ @@ -779,7 +786,12 @@ public class DailyPlanServiceImpl implements DailyPlanService { } //函数取物料报废标准 Double ifChaobiao=inventoryStockDao.getPartRejectSYS(inData.getSite(),checkUserSeqNo.get(0).getPartNo()); - if( (qtyReported-qtyApprove)*100.0/qtyReported>=ifChaobiao ){ + // 修改:使用BigDecimal精确计算报废率 - rqrq + BigDecimal defectQty = qtyReported.subtract(qtyApprove); + BigDecimal hundred = new BigDecimal("100"); + BigDecimal defectRate = defectQty.multiply(hundred) + .divide(qtyReported, 2, java.math.RoundingMode.HALF_UP); + if(defectRate.compareTo(new BigDecimal(ifChaobiao)) >= 0){ AbnormalFeedBackDataIn inData2 = new AbnormalFeedBackDataIn(); inData2.setSite(inData.getSite()); inData2.setSeqNo(inData.getSeqNo()); @@ -787,7 +799,8 @@ public class DailyPlanServiceImpl implements DailyPlanService { inData2.setAbnormalCode("A00068"); inData2.setAbnormalRemark(""); inData2.setAbnormalInfluence(""); - inData2.setAbnormalQty(qtyReported-qtyApprove); + // 修改:使用BigDecimal.doubleValue() - rqrq + inData2.setAbnormalQty(defectQty.doubleValue()); inData2.setOrderNo(dailyPlanMapper.getSeqNoOrderNo(inData.getSeqNo())); inData2.setSite(inData.getSite()); abnormalMapper.saveAbnormalData(inData2); @@ -798,7 +811,8 @@ public class DailyPlanServiceImpl implements DailyPlanService { checkUserSeqNo.get(0).setToTypeFlagDb("B"); //检验单加入暂停备注 checkUserSeqNo.get(0).setInspectRemark("产量报告报废超标"); - checkUserSeqNo.get(0).setQtyRequired( new BigDecimal(qtyReported-qtyApprove) ); + // 修改:直接使用BigDecimal,不经过Double运算 - rqrq + checkUserSeqNo.get(0).setQtyRequired(defectQty); //硫化创建实验室检验单 dailyPlanMapper.saveSOOpsTransferHeaderNew(checkUserSeqNo.get(0)); dailyPlanMapper.saveSOOpsTransferDetailNew(checkUserSeqNo.get(0)); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index a3c721a..6d784cb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -85,7 +85,7 @@ ftp: #文件的存放的路径 sys-file: file-path: 'D:\MesUpload' #不可以放入中文字符 - + oss-url: 'ckp-file' toacc: name: 888 #ERP账套号 \ No newline at end of file