Commit 8c2b9102 authored by 温志超's avatar 温志超

更新修改报工

parent bfe938d1
...@@ -150,7 +150,7 @@ public interface ProTaskMapper extends BaseMapper<ProTask> { ...@@ -150,7 +150,7 @@ public interface ProTaskMapper extends BaseMapper<ProTask> {
* @param query * @param query
* @return * @return
*/ */
@Select(value = "select t.task_id, t.task_code, t.task_name\n" + @Select(value = "select t.task_id, t.task_code, t.task_name,t.ordinal\n" +
"\t, t.workstation_id, t.workstation_code, t.workstation_name\n" + "\t, t.workstation_id, t.workstation_code, t.workstation_name\n" +
"\t, t.process_id, t.process_code, t.process_name\n" + "\t, t.process_id, t.process_code, t.process_name\n" +
"\t, t.item_id, t.item_code, t.item_name, t.specification, t.unit_of_measure\n" + "\t, t.item_id, t.item_code, t.item_name, t.specification, t.unit_of_measure\n" +
......
...@@ -25,6 +25,7 @@ import com.ximai.mes.pro.domain.*; ...@@ -25,6 +25,7 @@ import com.ximai.mes.pro.domain.*;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkOrderProcess; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkOrderProcess;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkOrderProcessItem; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkOrderProcessItem;
import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder; import com.ximai.mes.pro.domain.proWorkOrder.ProWorkorder;
import com.ximai.mes.pro.domain.productionSolution.ProProductionSolution;
import com.ximai.mes.pro.domain.sap.SAPDtoFeedback; import com.ximai.mes.pro.domain.sap.SAPDtoFeedback;
import com.ximai.mes.pro.domain.task.ProTask; import com.ximai.mes.pro.domain.task.ProTask;
import com.ximai.mes.pro.domain.task.ProTaskWorkunit; import com.ximai.mes.pro.domain.task.ProTaskWorkunit;
...@@ -36,6 +37,7 @@ import com.ximai.mes.pro.domain.vo.task.FeedbackValidateSerialNoParams; ...@@ -36,6 +37,7 @@ import com.ximai.mes.pro.domain.vo.task.FeedbackValidateSerialNoParams;
import com.ximai.mes.pro.mapper.*; import com.ximai.mes.pro.mapper.*;
import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkOrderProcessItemMapper; import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkOrderProcessItemMapper;
import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper; import com.ximai.mes.pro.mapper.proWorkOrder.ProWorkorderMapper;
import com.ximai.mes.pro.mapper.productionSolution.ProProductionSolutionMapper;
import com.ximai.mes.pro.mapper.task.ProTaskMapper; import com.ximai.mes.pro.mapper.task.ProTaskMapper;
import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper; import com.ximai.mes.pro.mapper.task.ProTaskWorkunitMapper;
import com.ximai.mes.pro.service.IProFeedbackService; import com.ximai.mes.pro.service.IProFeedbackService;
...@@ -88,6 +90,9 @@ public class ProFeedbackServiceImpl implements IProFeedbackService { ...@@ -88,6 +90,9 @@ public class ProFeedbackServiceImpl implements IProFeedbackService {
@Autowired @Autowired
private ProArrangeMapper proArrangeMapper; private ProArrangeMapper proArrangeMapper;
@Autowired
ProProductionSolutionMapper proProductionSolutionMapper;
@Autowired @Autowired
private IProWorkorderService proWorkorderService; private IProWorkorderService proWorkorderService;
...@@ -721,10 +726,16 @@ public class ProFeedbackServiceImpl implements IProFeedbackService { ...@@ -721,10 +726,16 @@ public class ProFeedbackServiceImpl implements IProFeedbackService {
// 减少 // 减少
thisTaskUnQualify = BigDecimal.valueOf(thisTaskUnQualify.doubleValue() - v2abs); thisTaskUnQualify = BigDecimal.valueOf(thisTaskUnQualify.doubleValue() - v2abs);
taskWorkunitUnQualify = proTaskWorkunit.getQuantityUnqualify().doubleValue() - v2abs; taskWorkunitUnQualify = proTaskWorkunit.getQuantityUnqualify().doubleValue() - v2abs;
taskWorkunitProduced = proTaskWorkunit.getQuantityProduced().doubleValue() - v2abs;
thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() - v2abs);
thisTaskWait = BigDecimal.valueOf(thisTaskWait.doubleValue() + v2abs);
} else { } else {
// 增加 // 增加
thisTaskUnQualify = BigDecimal.valueOf(thisTaskUnQualify.doubleValue() + v2abs); thisTaskUnQualify = BigDecimal.valueOf(thisTaskUnQualify.doubleValue() + v2abs);
taskWorkunitUnQualify = proTaskWorkunit.getQuantityUnqualify().doubleValue() + v2abs; taskWorkunitUnQualify = proTaskWorkunit.getQuantityUnqualify().doubleValue() + v2abs;
taskWorkunitProduced = proTaskWorkunit.getQuantityProduced().doubleValue() + v2abs;
thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() + v2abs);
thisTaskWait = BigDecimal.valueOf(thisTaskWait.doubleValue() - v2abs);
} }
} }
...@@ -734,38 +745,55 @@ public class ProFeedbackServiceImpl implements IProFeedbackService { ...@@ -734,38 +745,55 @@ public class ProFeedbackServiceImpl implements IProFeedbackService {
if (v1 < 0) { if (v1 < 0) {
// 减少 // 减少
taskWorkunitQualify = proTaskWorkunit.getQuantityQualify().doubleValue() - v1abc; taskWorkunitQualify = proTaskWorkunit.getQuantityQualify().doubleValue() - v1abc;
taskWorkunitProduced = proTaskWorkunit.getQuantityProduced().doubleValue() - v1abc;
thisTaskQualify = BigDecimal.valueOf(thisTaskQualify.doubleValue() - v1abc); thisTaskQualify = BigDecimal.valueOf(thisTaskQualify.doubleValue() - v1abc);
thisTaskWait = BigDecimal.valueOf(thisQuantity.doubleValue() - thisTaskQualify.doubleValue()); taskWorkunitProduced = taskWorkunitProduced - v1abc;
thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() - v1abc); thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() - v1abc);
thisTaskWait = BigDecimal.valueOf(thisTaskWait.doubleValue() + v1abc);
nextTaskWait = BigDecimal.valueOf(nextTaskWait.doubleValue() - v1abc); nextTaskWait = BigDecimal.valueOf(nextTaskWait.doubleValue() - v1abc);
} else { } else {
// 增加 // 增加
taskWorkunitQualify = proTaskWorkunit.getQuantityQualify().doubleValue() + v1abc; taskWorkunitQualify = proTaskWorkunit.getQuantityQualify().doubleValue() + v1abc;
taskWorkunitProduced = proTaskWorkunit.getQuantityProduced().doubleValue() + v1abc;
thisTaskQualify = BigDecimal.valueOf(thisTaskQualify.doubleValue() + v1abc); thisTaskQualify = BigDecimal.valueOf(thisTaskQualify.doubleValue() + v1abc);
thisTaskWait = BigDecimal.valueOf(thisTaskWait.doubleValue() - v1abc); taskWorkunitProduced = taskWorkunitProduced + v1abc;
thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() + v1abc); thisTaskProduced = BigDecimal.valueOf(thisTaskProduced.doubleValue() + v1abc);
thisTaskWait = BigDecimal.valueOf(thisTaskWait.doubleValue() - v1abc);
nextTaskWait = BigDecimal.valueOf(nextTaskWait.doubleValue() + v1abc); nextTaskWait = BigDecimal.valueOf(nextTaskWait.doubleValue() + v1abc);
} }
} }
QueryWrapper<ProWorkorder> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("t1.workorder_code", proFeedback.getWorkorderCode());
queryWrapper.notIn("t1.status", Arrays.asList(WorkorderStatusEnum.CLOSE.getValue(), WorkorderStatusEnum.CANCEL.getValue(), WorkorderStatusEnum.CANCELED.getValue()));
List<ProWorkorder> proWorkorders = proWorkorderService.selectListByQw(queryWrapper);
if(thisTaskWait.compareTo(BigDecimal.ZERO) < 0){
if(thisProTask.getOrdinal() != 1){
if(proWorkorders.size() > 0 && proWorkorders.get(0).getProductionSolutionId() != null){
ProProductionSolution proProductionSolution
= proProductionSolutionMapper.selectProProductionSolutionByProductionSolutionId(proWorkorders.get(0).getProductionSolutionId());
if(proProductionSolution != null && proProductionSolution.getSurpassState() != null){
if(!proProductionSolution.getSurpassState()){
//不允许超报 可报工数目 - (合格数 + 不合格数)不能小于 0
ExceptionUtil.checkTrueThrowException(
true, "工单关联的生产版本不允许超报行为");
}
}
}
}else{
ExceptionUtil.checkTrueThrowException(true, "非首工序不允许超过可报工数报工");
}
}
proTaskWorkunit.setQuantityQualify(BigDecimal.valueOf(taskWorkunitQualify));
proTaskWorkunit.setQuantityProduced(BigDecimal.valueOf(taskWorkunitProduced));
proTaskWorkunit.setQuantityUnqualify(BigDecimal.valueOf(taskWorkunitUnQualify));
thisProTask.setQuantityQualify(thisTaskQualify);
proTaskWorkunit.setQuantityQualify(taskWorkunitQualify > 0 ? BigDecimal.valueOf(taskWorkunitQualify) : BigDecimal.ZERO); thisProTask.setQuantityUnqualify( thisTaskUnQualify);
proTaskWorkunit.setQuantityProduced(taskWorkunitProduced > 0 ? BigDecimal.valueOf(taskWorkunitProduced) : BigDecimal.ZERO); thisProTask.setQuantityWait( thisTaskWait);
proTaskWorkunit.setQuantityUnqualify(taskWorkunitUnQualify > 0 ? BigDecimal.valueOf(taskWorkunitUnQualify) : BigDecimal.ZERO); thisProTask.setQuantityProduced( thisTaskProduced);
nextProTask.setQuantityWait(nextTaskWait);
thisProTask.setQuantityQualify(thisTaskQualify.doubleValue() >= 0 ? thisTaskQualify : BigDecimal.ZERO);
thisProTask.setQuantityUnqualify(thisTaskUnQualify.doubleValue() >= 0 ? thisTaskUnQualify : BigDecimal.ZERO);
thisProTask.setQuantityWait(thisTaskWait.doubleValue() >= 0 ? thisTaskWait : BigDecimal.ZERO);
thisProTask.setQuantityProduced(thisTaskProduced.doubleValue() >= 0 ? thisTaskProduced : BigDecimal.ZERO);
nextProTask.setQuantityWait(nextTaskWait.doubleValue() >= 0 ? nextTaskWait : BigDecimal.ZERO);
proTaskService.updateProTask(thisProTask); proTaskService.updateProTask(thisProTask);
proTaskService.updateProTask(nextProTask); proTaskService.updateProTask(nextProTask);
if (proTaskWorkunit.getQuantityProduced().doubleValue() >= proTaskWorkunit.getQuantity().doubleValue()) { if (thisTaskWait.compareTo(BigDecimal.ZERO) > 0 && !proTaskWorkunit.getStatus().equals(TaskWorkunitStatusEnum.BEGINNING.getStatus())) {
proTaskWorkunit.setStatus(TaskWorkunitStatusEnum.BEGINNING.getStatus()); proTaskWorkunit.setStatus(TaskWorkunitStatusEnum.BEGINNING.getStatus());
thisProTask.setTaskWorkunitId(proTaskWorkunit.getTaskWorkunitId()); thisProTask.setTaskWorkunitId(proTaskWorkunit.getTaskWorkunitId());
thisProTask.setWorkunitId(proTaskWorkunit.getWorkunitId()); thisProTask.setWorkunitId(proTaskWorkunit.getWorkunitId());
......
...@@ -807,7 +807,9 @@ public class ProTaskServiceImpl implements IProTaskService { ...@@ -807,7 +807,9 @@ public class ProTaskServiceImpl implements IProTaskService {
queryWrapper.notIn("t1.status", Arrays.asList(WorkorderStatusEnum.CLOSE.getValue(), WorkorderStatusEnum.CANCEL.getValue(), WorkorderStatusEnum.CANCELED.getValue())); queryWrapper.notIn("t1.status", Arrays.asList(WorkorderStatusEnum.CLOSE.getValue(), WorkorderStatusEnum.CANCEL.getValue(), WorkorderStatusEnum.CANCELED.getValue()));
List<ProWorkorder> proWorkorders = proWorkorderService.selectListByQw(queryWrapper); List<ProWorkorder> proWorkorders = proWorkorderService.selectListByQw(queryWrapper);
double maxWorkunitQuantityConst = taskWorkunit.getQuantity().doubleValue(); double maxWorkunitQuantityConst = taskWorkunit.getQuantity().doubleValue();
//检查该工单绑定的生产版本是否允许超报 //检查该工单绑定的生产版本是否允许超报,PS只有首工序允许
if(taskQuantityWaitConst.compareTo(feedbackQualifyConst.add(fuantityUnqualify)) < 0){
if(task.getOrdinal() != 1){
if(proWorkorders.size() > 0 && proWorkorders.get(0).getProductionSolutionId() != null){ if(proWorkorders.size() > 0 && proWorkorders.get(0).getProductionSolutionId() != null){
ProProductionSolution proProductionSolution ProProductionSolution proProductionSolution
= proProductionSolutionMapper.selectProProductionSolutionByProductionSolutionId(proWorkorders.get(0).getProductionSolutionId()); = proProductionSolutionMapper.selectProProductionSolutionByProductionSolutionId(proWorkorders.get(0).getProductionSolutionId());
...@@ -819,6 +821,11 @@ public class ProTaskServiceImpl implements IProTaskService { ...@@ -819,6 +821,11 @@ public class ProTaskServiceImpl implements IProTaskService {
} }
} }
} }
}else{
ExceptionUtil.checkTrueThrowException(true, "非首工序不允许超过可报工数报工");
}
}
//本次合格数和不合格数总和大于可报工数目 与 已报工数目已经超过了排产数量 //本次合格数和不合格数总和大于可报工数目 与 已报工数目已经超过了排产数量
if ((feedbackQualityDouConst + fuantityUnqualify.doubleValue())>= task.getQuantityWait().doubleValue() && task.getQuantity().doubleValue() <= (execQuantityQualifySumConst + feedbackQualityDouConst + fuantityUnqualify.doubleValue())) { if ((feedbackQualityDouConst + fuantityUnqualify.doubleValue())>= task.getQuantityWait().doubleValue() && task.getQuantity().doubleValue() <= (execQuantityQualifySumConst + feedbackQualityDouConst + fuantityUnqualify.doubleValue())) {
taskWorkunit.setStatus(FINISHED.getStatus()); taskWorkunit.setStatus(FINISHED.getStatus());
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment