维修单分拆

This commit is contained in:
sxu 2024-11-28 16:24:51 +08:00
parent 99195a8a81
commit 11d34c654a
1 changed files with 33 additions and 24 deletions

View File

@ -29,7 +29,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.*;
@ -480,21 +479,9 @@ public class RepairServiceImpl implements RepairService {
// }
// 分拆维修单
int thisTimeRepairedNum = bean.getNumberInRepairPartList().get(0).getRepairNum();
if ((bean.getRepairNum() - thisTimeRepairedNum) == 0) { //本次修完了
repairMapper.updateRepairedNum(bean.getId(), thisTimeRepairedNum, loginUser.getUserid(), loginUser.getUserid());
} else {
RepairApplyDetails newDetail = new RepairApplyDetails();
BeanUtils.copyProperties(bean, newDetail);
newDetail.setRepairNum((long) (thisTimeRepairedNum));
newDetail.setRepairedNum((long) thisTimeRepairedNum);
newDetail.setCreateBy(SecurityUtils.getUsername());
newDetail.setCreateTime(DateUtils.getNowDate());
newDetail.setRepairer(SecurityUtils.getUsername());
newDetail.setStatus("1");
repairApplyDetailsMapper.insertRepairApplyDetails(newDetail);
repairMapper.updateRepairNum(bean.getId(), bean.getRepairNum() - thisTimeRepairedNum, loginUser.getUserid(), loginUser.getUserid());
}
splitRepairList(bean, thisTimeRepairedNum, loginUser);
// 处理配件集合数据
copeNumberManageInList(bean, partList, loginUser, bean.getManageType());
@ -519,15 +506,20 @@ public class RepairServiceImpl implements RepairService {
// 判断外部维修配件数量是否为空
if (partList.get(0).getRepairNum() != null && partList.get(0).getRepairNum() != 0) {
// 统计已维修数量 + 本次维修数量
int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + partList.get(0).getRepairNum();
// 统计报废数量 + 维修合计数量
if ((repairNum + OptionalInt.of(details.getScrapNum()).orElse(0)) > details.getRepairNum()) {
throw new ServiceException("维修数量大于维修总量");
}
// // 统计已维修数量 + 本次维修数量
// int repairNum = OptionalInt.of(details.getRepairedNum()).orElse(0) + partList.get(0).getRepairNum();
// // 统计报废数量 + 维修合计数量
// if ((repairNum + OptionalInt.of(details.getScrapNum()).orElse(0)) > details.getRepairNum()) {
// throw new ServiceException("维修数量大于维修总量");
// }
//
// // 更新维修数量维修人员不变
// repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid());
// 分拆维修单
int thisTimeRepairedNum = partList.get(0).getRepairNum();
splitRepairList(bean, thisTimeRepairedNum, loginUser);
// 更新维修数量维修人员不变
repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid());
if (partList.get(0).getSupplierId() == null) {
throw new ServiceException("请选择返厂厂家");
@ -625,6 +617,23 @@ public class RepairServiceImpl implements RepairService {
return AjaxResult.success("维修完成");
}
private void splitRepairList(RepairDeviceVO bean, int thisTimeRepairedNum, LoginUser loginUser) {
if ((bean.getRepairNum() - thisTimeRepairedNum) == 0) { //本次修完了
repairMapper.updateRepairedNum(bean.getId(), thisTimeRepairedNum, loginUser.getUserid(), loginUser.getUserid());
} else {
RepairApplyDetails newDetail = new RepairApplyDetails();
BeanUtils.copyProperties(bean, newDetail);
newDetail.setRepairNum((long) (thisTimeRepairedNum));
newDetail.setRepairedNum((long) thisTimeRepairedNum);
newDetail.setCreateBy(SecurityUtils.getUsername());
newDetail.setCreateTime(DateUtils.getNowDate());
newDetail.setRepairer(SecurityUtils.getUsername());
newDetail.setStatus("1");
repairApplyDetailsMapper.insertRepairApplyDetails(newDetail);
repairMapper.updateRepairNum(bean.getId(), bean.getRepairNum() - thisTimeRepairedNum, loginUser.getUserid(), loginUser.getUserid());
}
}
/**
* 配件列表价格合计
* @param partList 配件列表
@ -633,7 +642,7 @@ public class RepairServiceImpl implements RepairService {
*/
private static BigDecimal countPartCosts(List<RepairPartDetails> partList, BigDecimal sfCosts) {
for (RepairPartDetails partDetails : partList) {
if (partDetails.getPartPrice() != null) {
if (partDetails.getPartPrice() != null && partDetails.getPartNum() != null) {
BigDecimal partPrice = partDetails.getPartPrice();
BigDecimal partNumber = new BigDecimal(partDetails.getPartNum());
sfCosts = sfCosts.add(partPrice.multiply(partNumber));