|
|
|
|
@ -18,6 +18,7 @@ import org.springblade.desk.order.service.IAssayContentService; |
|
|
|
|
import org.springblade.desk.order.service.IPlateGoodsApplyService; |
|
|
|
|
import org.springblade.desk.order.service.IPlateGoodsRecordService; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
import org.springframework.transaction.annotation.Transactional; |
|
|
|
|
|
|
|
|
|
import java.math.BigDecimal; |
|
|
|
|
import java.util.*; |
|
|
|
|
@ -42,6 +43,25 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM |
|
|
|
|
return page.setRecords(dataList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean confirmBatch(List<Long> ids, Integer approvalStatus, String approvalMemo) { |
|
|
|
|
List<PlateGoodsApply> dataList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
|
ids.forEach(id -> { |
|
|
|
|
PlateGoodsApply item = new PlateGoodsApply(); |
|
|
|
|
item.setId(id); |
|
|
|
|
item.setApprovalMan(user.getUserId()); |
|
|
|
|
item.setApprovalTime(DateUtil.now()); |
|
|
|
|
item.setApprovalStatus(approvalStatus); |
|
|
|
|
item.setApprovalMemo(approvalMemo); |
|
|
|
|
dataList.add(item); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return this.updateBatchById(dataList); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
|
@Override |
|
|
|
|
public boolean save(List<AssayContentDetail> assayContentDetailList, List<Long> recordIdList) { |
|
|
|
|
// 1. 更新化验记录相关数据
|
|
|
|
|
@ -53,12 +73,12 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM |
|
|
|
|
assayContentService.changeStatus(Arrays.asList(assayContentId), AssayContentEnum.STATUS_USED.getCode()); |
|
|
|
|
|
|
|
|
|
// 1.2 报错化验记录明细
|
|
|
|
|
assayContentDetailService.saveBatch(assayContentDetailList); |
|
|
|
|
assayContentDetailService.updateBatchById(assayContentDetailList); |
|
|
|
|
|
|
|
|
|
// 2. 计算本次总添加量
|
|
|
|
|
BigDecimal addVal = assayContentDetailList.stream() |
|
|
|
|
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal()) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
.map(detail -> detail.getAddVal() == null ? BigDecimal.ZERO : detail.getAddVal()) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
|
|
|
|
// 3. 更新需求单的相关数据
|
|
|
|
|
// 3.1 根据id查询需求单
|
|
|
|
|
@ -66,13 +86,13 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM |
|
|
|
|
|
|
|
|
|
// 3.2 将需求单按照创建时间正序排列,
|
|
|
|
|
recordList = recordList.stream() |
|
|
|
|
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo))) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
.sorted(Comparator.comparing(PlateGoodsRecord::getCreateTime, Comparator.nullsLast(Date::compareTo))) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
|
|
// 计算本次申请总添加量
|
|
|
|
|
BigDecimal applyTotalVal = recordList.stream() |
|
|
|
|
.map(detail -> detail.getSurplus() == null ? BigDecimal.ZERO : detail.getSurplus()) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
.map(detail -> detail.getSurplus() == null ? BigDecimal.ZERO : detail.getSurplus()) |
|
|
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
// 本次剩余单号余量, 最小为0
|
|
|
|
|
BigDecimal notAddVal = applyTotalVal.subtract(addVal); |
|
|
|
|
notAddVal = notAddVal.compareTo(BigDecimal.ZERO) < 0 ? BigDecimal.ZERO : notAddVal; |
|
|
|
|
@ -105,33 +125,15 @@ public class PlateGoodsApplyServiceImpl extends BaseServiceImpl<PlateGoodsApplyM |
|
|
|
|
|
|
|
|
|
// 4. 记录添加的需求单信息; 关联单号, 本次剩余单号余量
|
|
|
|
|
String addAbortRecordNo = addRecordList.stream() |
|
|
|
|
.map(PlateGoodsRecord::getDemandCode) |
|
|
|
|
.filter(code -> code != null && !code.trim().isEmpty()) |
|
|
|
|
.collect(Collectors.joining(",")); |
|
|
|
|
.map(PlateGoodsRecord::getDemandCode) |
|
|
|
|
.filter(code -> code != null && !code.trim().isEmpty()) |
|
|
|
|
.collect(Collectors.joining(",")); |
|
|
|
|
|
|
|
|
|
for (PlateGoodsRecord plateGoodsRecord : addRecordList) { |
|
|
|
|
plateGoodsRecord.setInvolvingRecordCode(addAbortRecordNo); |
|
|
|
|
plateGoodsRecord.setSurplus(notAddVal); |
|
|
|
|
} |
|
|
|
|
goodsRecordService.saveBatch(addRecordList); |
|
|
|
|
goodsRecordService.updateBatchById(addRecordList); |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean confirmBatch(List<Long> ids, Integer approvalStatus, String approvalMemo) { |
|
|
|
|
List<PlateGoodsApply> dataList = new ArrayList<>(); |
|
|
|
|
|
|
|
|
|
BladeUser user = AuthUtil.getUser(); |
|
|
|
|
ids.forEach(id -> { |
|
|
|
|
PlateGoodsApply item = new PlateGoodsApply(); |
|
|
|
|
item.setId(id); |
|
|
|
|
item.setApprovalMan(user.getUserId()); |
|
|
|
|
item.setApprovalTime(DateUtil.now()); |
|
|
|
|
item.setApprovalStatus(approvalStatus); |
|
|
|
|
item.setApprovalMemo(approvalMemo); |
|
|
|
|
dataList.add(item); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
return this.updateBatchById(dataList); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|