Browse Source

精度

master
常熟吴彦祖 3 weeks ago
parent
commit
6583c2bfa1
  1. 24
      src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java
  2. 30
      src/main/java/com/heai/modules/production/service/impl/DailyPlanServiceImpl.java
  3. 2
      src/main/resources/application.yml

24
src/main/java/com/heai/modules/pms/service/Impl/PqcServiceImpl.java

@ -46,14 +46,14 @@ public class PqcServiceImpl implements PqcService {
@Autowired @Autowired
private QcServiceImpl qcService; 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}") // @Value("${sys-file.oss-url}")
// private String ossUrl; // private String ossUrl;
@ -61,14 +61,14 @@ public class PqcServiceImpl implements PqcService {
@Value("${sys-file.file-path}") @Value("${sys-file.file-path}")
private String filePath; 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<String, Object> redisTemplate;
// @Autowired
// private RedisTemplate<String, Object> redisTemplate;
/** /**

30
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); transData=dailyPlanMapper.getTransData(inData.getSite(),transNo);
} }
updateTvBase(inData.getSite(),"",inData.getSeqNo(),inData.getOperatorId()); 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"); Date date = DateUtil.getDateToDate(new Date(), "yyyy-MM-dd");
// TaskDto taskDto=abnormalMapper.getOriginator(); // TaskDto taskDto=abnormalMapper.getOriginator();
TaskDto taskDto = new TaskDto(); TaskDto taskDto = new TaskDto();
@ -735,7 +736,11 @@ public class DailyPlanServiceImpl implements DailyPlanService {
taskDto.setFinalStatus("未完成"); taskDto.setFinalStatus("未完成");
taskDto.setRequiredCompletionDate(date); taskDto.setRequiredCompletionDate(date);
taskDto.setStatus("未受理"); 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.setTaskHeader(inData.getPartNo() + inData.getPartDescription());
taskDto.setTaskInitiator(taskDto.getCreatedBy()); taskDto.setTaskInitiator(taskDto.getCreatedBy());
taskDto.setTaskStartDate(date); taskDto.setTaskStartDate(date);
@ -748,7 +753,8 @@ public class DailyPlanServiceImpl implements DailyPlanService {
taskListService.saveBatchTaskList(taskDto); taskListService.saveBatchTaskList(taskDto);
} }
SOOpsTransferData badData=null; SOOpsTransferData badData=null;
if(inData.getAcceptQty()>0){
// 修改Double BigDecimal 避免精度问题 - rqrq
if(inData.getAcceptQty() != null && inData.getAcceptQty() > 0){
//获取瑕疵品标签信息 //获取瑕疵品标签信息
badData=dailyPlanMapper.getBadPrintData(inData.getSite(),inData.getSeqNo()); badData=dailyPlanMapper.getBadPrintData(inData.getSite(),inData.getSeqNo());
} }
@ -770,8 +776,9 @@ public class DailyPlanServiceImpl implements DailyPlanService {
dailyPlanMapper.closeSchedule(closeData); 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; Integer id =null;
List<SOScheduledRoutingOutData> checkUserSeqNo=dailyPlanMapper.checkUserSeqNo(inData.getSeqNo(), ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername()); List<SOScheduledRoutingOutData> checkUserSeqNo=dailyPlanMapper.checkUserSeqNo(inData.getSeqNo(), ((SysUserEntity) SecurityUtils.getSubject().getPrincipal()).getUsername());
if(checkUserSeqNo.isEmpty()){ if(checkUserSeqNo.isEmpty()){
@ -779,7 +786,12 @@ public class DailyPlanServiceImpl implements DailyPlanService {
} }
//函数取物料报废标准 //函数取物料报废标准
Double ifChaobiao=inventoryStockDao.getPartRejectSYS(inData.getSite(),checkUserSeqNo.get(0).getPartNo()); 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(); AbnormalFeedBackDataIn inData2 = new AbnormalFeedBackDataIn();
inData2.setSite(inData.getSite()); inData2.setSite(inData.getSite());
inData2.setSeqNo(inData.getSeqNo()); inData2.setSeqNo(inData.getSeqNo());
@ -787,7 +799,8 @@ public class DailyPlanServiceImpl implements DailyPlanService {
inData2.setAbnormalCode("A00068"); inData2.setAbnormalCode("A00068");
inData2.setAbnormalRemark(""); inData2.setAbnormalRemark("");
inData2.setAbnormalInfluence(""); inData2.setAbnormalInfluence("");
inData2.setAbnormalQty(qtyReported-qtyApprove);
// 修改使用BigDecimal.doubleValue() - rqrq
inData2.setAbnormalQty(defectQty.doubleValue());
inData2.setOrderNo(dailyPlanMapper.getSeqNoOrderNo(inData.getSeqNo())); inData2.setOrderNo(dailyPlanMapper.getSeqNoOrderNo(inData.getSeqNo()));
inData2.setSite(inData.getSite()); inData2.setSite(inData.getSite());
abnormalMapper.saveAbnormalData(inData2); abnormalMapper.saveAbnormalData(inData2);
@ -798,7 +811,8 @@ public class DailyPlanServiceImpl implements DailyPlanService {
checkUserSeqNo.get(0).setToTypeFlagDb("B"); checkUserSeqNo.get(0).setToTypeFlagDb("B");
//检验单加入暂停备注 //检验单加入暂停备注
checkUserSeqNo.get(0).setInspectRemark("产量报告报废超标"); 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.saveSOOpsTransferHeaderNew(checkUserSeqNo.get(0));
dailyPlanMapper.saveSOOpsTransferDetailNew(checkUserSeqNo.get(0)); dailyPlanMapper.saveSOOpsTransferDetailNew(checkUserSeqNo.get(0));

2
src/main/resources/application.yml

@ -85,7 +85,7 @@ ftp:
#文件的存放的路径 #文件的存放的路径
sys-file: sys-file:
file-path: 'D:\MesUpload' #不可以放入中文字符 file-path: 'D:\MesUpload' #不可以放入中文字符
oss-url: 'ckp-file'
toacc: toacc:
name: 888 #ERP账套号 name: 888 #ERP账套号
Loading…
Cancel
Save