Commit a7f84ce3 authored by 温志超's avatar 温志超

更新报工逻辑,将不良品增加到可加工数中

parent 9b92e2c8
......@@ -239,5 +239,9 @@ public class ProProductionSolutionProcess {
/** 封切机分切 */
@Excel(name = "封切机分切")
private String sacmForSlitting;
/**
* 规格书
*/
@ApiModelProperty("单价")
private BigDecimal unitPrice;
}
......@@ -241,6 +241,14 @@ public class ProProductionSolutionProcessVo extends BaseEntity {
@ApiModelProperty("工装夹具")
private List<ProProductionSolutionProcessToolVo> toolList=new ArrayList<>();
/**
* 规格书
*/
@ApiModelProperty("单价")
private BigDecimal unitPrice;
/**
* 生产版本工序图纸
**/
......
......@@ -227,7 +227,11 @@ public class ProWorkorderQuery extends BaseEntity {
private Long taskWorkunitId;
private String parentId;
@ApiModelProperty("订单单号")
private String orderCode;
@ApiModelProperty("订单序号")
private String orderSerial;
@TableField(exist = false)
private List<Long> workorderIds;
......
......@@ -90,6 +90,11 @@ public interface IProFeedbackService {
int deleteProFeedbackByRecordId(Long recordId);
/**
* 温志超修改 :合格和非合格数量都将计入数量中
* @param proFeedback
* @return
*/
Double selectQuantityQualifySum(ProFeedback proFeedback);
LinkedHashMap<String, ProFeedbackSplitInfo> taskFeedback(ProTask proTask, ProFeedback mainFeedBack);
......
......@@ -802,8 +802,10 @@ public class ProFeedbackServiceImpl implements IProFeedbackService {
} else {
queryWrapper.eq(StringUtils.isNotEmpty(proFeedback.getWorkorderId()), "workorder_id", proFeedback.getWorkorderId());
}
DoubleSummaryStatistics collect = proFeedbackMapper.selectListByQw(queryWrapper).stream().collect(Collectors.summarizingDouble(x -> DataUtil.getNormalData(x.getQuantityQualify()).doubleValue()));
return collect.getSum();
DoubleSummaryStatistics collectQuantityQualify = proFeedbackMapper.selectListByQw(queryWrapper).stream().collect(Collectors.summarizingDouble(x -> DataUtil.getNormalData(x.getQuantityQualify()).doubleValue()));
DoubleSummaryStatistics collectQuantityUnqualify = proFeedbackMapper.selectListByQw(queryWrapper).stream().collect(Collectors.summarizingDouble(x -> DataUtil.getNormalData(x.getQuantityUnqualify()).doubleValue()));
return collectQuantityQualify.getSum() + collectQuantityUnqualify.getSum();
}
@Override
......
......@@ -772,8 +772,10 @@ public class ProTaskServiceImpl implements IProTaskService {
public List<ProPackagePrintResult> feedBack(ProFeedback feedback) {
List<ProPackagePrintResult> response = new ArrayList<>();
BigDecimal feedbackQualifyConst = feedback.getQuantityQualify();
ExceptionUtil.checkTrueThrowException(feedbackQualifyConst.compareTo(BigDecimal.ZERO) <= 0,
MessageUtils.message("pro.feedback.error.min.quantity"));
BigDecimal fuantityUnqualify = feedback.getQuantityUnqualify();
//温志超修改 :合格和非合格数量都不允许小于0
ExceptionUtil.checkTrueThrowException(feedbackQualifyConst.compareTo(BigDecimal.ZERO) <= 0 || fuantityUnqualify.compareTo(BigDecimal.ZERO) <= 0,
MessageUtils.message("pro.feedback.error.min.quantity、unqualify"));
if(StringUtils.isNotEmpty(feedback.getQrcode())){
FeedbackValidateSerialNoParams feedbackValidateSerialNoParams = new FeedbackValidateSerialNoParams();
feedbackValidateSerialNoParams.setQrcode(feedback.getQrcode());
......@@ -784,7 +786,7 @@ public class ProTaskServiceImpl implements IProTaskService {
ProTaskWorkunit taskWorkunit = proTaskWorkunitService.selectProTaskWorkunitByTaskWorkunitId(feedback.getTaskWorkunitId());
ExceptionUtil.checkTrueThrowException(!taskWorkunit.getStatus().equals(TaskStatusEnum.BEGINNING.getStatus()), MessageUtils.message("pro.feedback.error.before.start"));
//更新派工表数量
//检索已经报工的数量
double execQuantityQualifySumConst = proFeedbackService.selectQuantityQualifySum(new ProFeedback(null, null, null, taskWorkunit.getTaskWorkunitId()));
ProTask task = this.selectProTaskByTaskId(feedback.getTaskId());
......@@ -808,40 +810,23 @@ public class ProTaskServiceImpl implements IProTaskService {
= proProductionSolutionMapper.selectProProductionSolutionByProductionSolutionId(proWorkorders.get(0).getProductionSolutionId());
if(proProductionSolution != null && proProductionSolution.getSurpassState() != null){
if(!proProductionSolution.getSurpassState()){
//不允许超报 可报工数目 - 合格数 不能小于 0
//不允许超报 可报工数目 - (合格数 + 不合格数)不能小于 0
ExceptionUtil.checkTrueThrowException(
taskQuantityWaitConst.compareTo(feedbackQualifyConst) < 0, "工单关联的生产版本不允许超报行为");
taskQuantityWaitConst.compareTo(feedbackQualifyConst.add(fuantityUnqualify)) < 0, "工单关联的生产版本不允许超报行为");
}
}
}
// 查看当前工单已报工数量
if (proWorkorders.size() == 1) {
if (feedbackQualityDouConst >= task.getQuantity().doubleValue() || taskQuantityWaitDouConst == 0) {
taskWorkunit.setStatus(FINISHED.getStatus());
}
// 判断已经报工数和未报工数
if (execQuantityQualifySumConst >= 0) {
// 第一次进入
if (maxWorkunitQuantityConst > execQuantityQualifySumConst) {
// 工单大于已报工数量 工单减去已报工数量
feedbackQualityVal = new BigDecimal(maxWorkunitQuantityConst - execQuantityQualifySumConst);
// 报工数量大于可报工数量取报工数量
if (feedbackQualityVal.doubleValue() > feedbackQualityDouConst) {
feedbackQualityVal = feedbackQualifyConst;
}
} else {
feedbackQualityVal = BigDecimal.valueOf(Math.min(maxWorkunitQuantityConst, feedbackQualityDouConst));
}
}
quantityWaitVal = taskQuantityWaitConst.subtract(feedbackQualityVal);
//本次合格数和不合格数总和大于可报工数目 与 已报工数目已经超过了排产数量
if ((feedbackQualityDouConst + fuantityUnqualify.doubleValue())>= task.getQuantityWait().doubleValue() && task.getQuantity().doubleValue() <= (execQuantityQualifySumConst + feedbackQualityDouConst + fuantityUnqualify.doubleValue())) {
taskWorkunit.setStatus(FINISHED.getStatus());
}
quantityWaitVal = taskQuantityWaitConst.subtract(feedbackQualityVal.add(fuantityUnqualify));
task.setQuantityWait(quantityWaitVal.doubleValue() < 0D ? BigDecimal.ZERO : quantityWaitVal);
task.setQuantityProduced(DataUtil.getNormalData(task.getQuantityProduced()).add(feedbackQualityVal));
task.setQuantityWait(quantityWaitVal);
task.setQuantityProduced(DataUtil.getNormalData(task.getQuantityProduced()).add(feedbackQualityVal).add(fuantityUnqualify));
task.setQuantityQualify(DataUtil.getNormalData(task.getQuantityQualify()).add(feedbackQualityVal));
taskWorkunit.setQuantityProduced(DataUtil.getNormalData(taskWorkunit.getQuantityProduced()).add(feedbackQualityVal));
taskWorkunit.setQuantityProduced(DataUtil.getNormalData(taskWorkunit.getQuantityProduced()).add(feedbackQualityVal).add(fuantityUnqualify));
taskWorkunit.setQuantityQualify(DataUtil.getNormalData(taskWorkunit.getQuantityQualify()).add(feedbackQualityVal));
......
......@@ -92,7 +92,8 @@
ppsp.sacm_for_molar_tooth,
ppsp.sacm_for_slitting,
pro.process_code, pro.process_name,
pro.process_id
pro.process_id,
ppsp.unit_price
from pro_production_solution_process ppsp
left join pro_process pro on pro.process_id = ppsp.process_id
left join md_workstation mw on ppsp.workstation_id = mw.workstation_id
......@@ -162,6 +163,7 @@
<if test="sacmForThermalSelfFusion != null">sacm_for_thermal_self_fusion,</if>
<if test="sacmForMolarTooth != null">sacm_for_molar_tooth,</if>
<if test="sacmForSlitting != null">sacm_for_slitting,</if>
<if test="unitPrice != null">unit_price,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="productionSolutionId != null">#{productionSolutionId},</if>
......@@ -202,6 +204,7 @@
<if test="sacmForThermalSelfFusion != null">#{sacmForThermalSelfFusion},</if>
<if test="sacmForMolarTooth != null">#{sacmForMolarTooth},</if>
<if test="sacmForSlitting != null">#{sacmForSlitting},</if>
<if test="unitPrice != null">#{unitPrice},</if>
</trim>
</insert>
......@@ -246,6 +249,7 @@
<if test="sacmForThermalSelfFusion != null">sacm_for_thermal_self_fusion = #{sacmForThermalSelfFusion},</if>
<if test="sacmForMolarTooth != null">sacm_for_molar_tooth = #{sacmForMolarTooth},</if>
<if test="sacmForSlitting != null">sacm_for_slitting = #{sacmForSlitting},</if>
<if test="unitPrice != null">unit_price = #{unitPrice},</if>
</trim>
where production_solution_process_id = #{productionSolutionProcessId}
</update>
......
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