This commit is contained in:
mashuai 2025-02-21 02:53:27 +08:00
parent 0bd8c9f6eb
commit e5e01f5fd4
3 changed files with 22 additions and 184 deletions

View File

@ -514,9 +514,11 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
int result = 0;
if (CollectionUtils.isNotEmpty(maCodeList)) {
for (MaCodeVo maCodeVo : maCodeList) {
if (maCodeVo.getMaId() != null) {
result += machineMapper.updateStatus(maCodeVo.getMaId(), MaMachineStatusEnum.IN_USE.getStatus());
}
}
}
// 删除相关任务信息
result += backApplyInfoMapper.deleteBackApplyDetails(id);
result += backApplyInfoMapper.deleteCheckDetails(id);

View File

@ -460,9 +460,6 @@ public class RepairServiceImpl implements RepairService {
@Override
public AjaxResult batchRepairApply(@NotNull List<RepairDeviceVO> repairDeviceVOList) {
BigDecimal innerNum = BigDecimal.ZERO;
BigDecimal outerNum = BigDecimal.ZERO;
BigDecimal scrapRepairNum = BigDecimal.ZERO;
// 准备业务逻辑数据
LoginUser loginUser = SecurityUtils.getLoginUser();
// 配件集合
@ -470,72 +467,7 @@ public class RepairServiceImpl implements RepairService {
// 校验参数过滤空数据
repairDeviceVOList.removeIf(Objects::isNull);
// 先根据任务id查询维修任务详情判断是否需要维修拆分
boolean isNeedSplit = false;
// 过滤出repairType不为null的RepairDeviceVO并获取它们的id组成一个集合
List<Long> idList = repairDeviceVOList.stream()
.filter(device -> device.getRepairType() != null)
.map(RepairDeviceVO::getId)
.collect(Collectors.toList());
List<RepairTaskDetails> detailsList = repairApplyDetailsMapper.getRepairDetailsWhichNotSent(repairDeviceVOList.get(0).getTaskId());
if (!CollectionUtils.isEmpty(detailsList)) {
for (RepairTaskDetails bean : detailsList) {
for (RepairDeviceVO repairDeviceVO : repairDeviceVOList) {
if (Objects.equals(MaTypeManageTypeEnum.CODE_DEVICE.getTypeId(), repairDeviceVO.getManageType())) {
if (!idList.contains(bean.getId()) && "0".equals(bean.getStatus())) {
isNeedSplit = true;
break;
}
} else if (Objects.equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId(), repairDeviceVO.getManageType())) {
if (!idList.contains(bean.getId()) && "0".equals(bean.getStatus())) {
isNeedSplit = true;
} else if (idList.contains(bean.getId())) {
if (Objects.equals(bean.getTypeId(), repairDeviceVO.getTypeId().toString())) {
if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberInRepairPartList())) {
partList = repairDeviceVO.getNumberInRepairPartList();
if (null != partList.get(0).getRepairNum() && 0 < partList.get(0).getRepairNum().compareTo(BigDecimal.ZERO)) {
// 分拆维修单, 准备数据
innerNum = partList.get(0).getRepairNum();
}
}
if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberOutRepairPartList())) {
partList = repairDeviceVO.getNumberOutRepairPartList();
if (null != partList.get(0).getRepairNum() && partList.get(0).getRepairNum().compareTo(BigDecimal.ZERO) > 0) {
// 分拆维修单, 准备数据
outerNum = partList.get(0).getRepairNum();
}
}
// 处理配件集合数据 -- 数量管理--报废维修
if (CollectionUtil.isNotEmpty(repairDeviceVO.getNumberScrapRepairPartList())) {
// 判断报废数量是否为空
if (repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum() != null && repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum().compareTo(BigDecimal.ZERO) > 0) {
// 分拆维修单, 准备数据
scrapRepairNum = repairDeviceVO.getNumberScrapRepairPartList().get(0).getScrapNum();
}
}
}
}
BigDecimal add = innerNum.add(outerNum).add(scrapRepairNum);
BigDecimal subtract = bean.getRepairNum().subtract(bean.getRepairedNum()).subtract(bean.getScrapNum());
if (add.compareTo(subtract) < 0) {
isNeedSplit = true;
}
}
}
}
}
Long newTaskId = null;
if (isNeedSplit) {
// 查询协议ID
Long agreementId = taskAgreementMapper.selectAgreementIdByTaskId(repairDeviceVOList.get(0).getTaskId());
// 插入任务表
newTaskId = insertTt(SecurityUtils.getUsername());
// 插入协议任务表
int res = insertTta(newTaskId, agreementId);
if (res <= 0) {
throw new ServiceException("协议任务表插入失败");
}
}
for (RepairDeviceVO bean : repairDeviceVOList) {
if (null == bean.getManageType()) {throw new ServiceException("请选择物资管理方式");}
if (Objects.equals(MaTypeManageTypeEnum.CODE_DEVICE.getTypeId(), bean.getManageType())) {
@ -548,29 +480,12 @@ public class RepairServiceImpl implements RepairService {
partList = bean.getCodeInRepairPartList();
// 更新维修数量并修改维修人员
repairMapper.updateRepairedNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUsername(), loginUser.getUserid());
if (isNeedSplit) {
bean.setNewTaskId(newTaskId);
bean.setRepairer(loginUser.getUsername());
bean.setRepairedNum(bean.getRepairNum());
bean.setParentId(bean.getId());
bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1");
bean.setCreateBy(SecurityUtils.getUsername());
repairMapper.insertRepaired(bean);
}
break;
}
case RETURN_FACTORY: {
partList = bean.getCodeOutRepairPartList();
// 更新维修数量维修人员不变
repairMapper.updateRepairedNumTwoAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUserid());
if (isNeedSplit) {
bean.setNewTaskId(newTaskId);
bean.setRepairedNum(bean.getRepairNum());
bean.setParentId(bean.getId());
bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1");
bean.setCreateBy(SecurityUtils.getUsername());
repairMapper.insertRepaired(bean);
}
break;
}
case TO_SCRAP: {
@ -578,14 +493,6 @@ public class RepairServiceImpl implements RepairService {
partList = bean.getCodeScrapRepairPartList();
// 更新报废数量
repairMapper.updateScrapNumAndStatus(bean.getId(), BigDecimal.ONE, 1, loginUser.getUserid());
if (isNeedSplit) {
bean.setNewTaskId(newTaskId);
bean.setScrapNum(bean.getRepairNum());
bean.setParentId(bean.getId());
bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1");
bean.setCreateBy(SecurityUtils.getUsername());
repairMapper.insertRepaired(bean);
}
break;
}
default:
@ -602,7 +509,7 @@ public class RepairServiceImpl implements RepairService {
}
// 统一处理配件集合数据
copeNumberManageInList(bean, partList, loginUser, bean.getManageType(), isNeedSplit, newTaskId);
copeNumberManageInList(bean, partList, loginUser, bean.getManageType());
} else if (Objects.equals(MaTypeManageTypeEnum.NUMBER_DEVICE.getTypeId(), bean.getManageType())) {
// 物资管理方式--数量管理
@ -645,7 +552,7 @@ public class RepairServiceImpl implements RepairService {
// 分拆维修单, 准备数据
innerRepairNum = partList.get(0).getRepairNum();
// 处理配件集合数据
copeNumberManageInList(bean, partList, loginUser, bean.getManageType(), isNeedSplit, newTaskId);
copeNumberManageInList(bean, partList, loginUser, bean.getManageType());
}
}
@ -725,10 +632,6 @@ public class RepairServiceImpl implements RepairService {
// 因报废操作无需配件, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
if (isNeedSplit) {
repairApplyRecord.setTaskId(newTaskId);
repairMapper.addRecord(repairApplyRecord);
}
}
} else {
// 报废类型无需配件所以配件为空添加维修记录表
@ -743,28 +646,13 @@ public class RepairServiceImpl implements RepairService {
// 因报废操作无需配件, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
if (isNeedSplit) {
repairApplyRecord.setTaskId(newTaskId);
repairMapper.addRecord(repairApplyRecord);
}
}
}
}
// 拆分维修单
splitRepairDetailsToMultiple(bean, innerRepairNum, outerRepairNum, scrapNum, loginUser);
if (isNeedSplit) {
// 维修单拆分合并
bean.setNewTaskId(newTaskId);
bean.setRepairNum(innerRepairNum.add(outerRepairNum).add(scrapNum));
bean.setRepairedNum(innerRepairNum.add(outerRepairNum));
bean.setScrapNum(scrapNum);
bean.setStatus("1");
bean.setParentId(bean.getId());
bean.setLevel((StringUtils.isNotBlank(bean.getLevel())) ? String.valueOf(Integer.parseInt(bean.getLevel()) + 1) : "1");
bean.setCreateBy(SecurityUtils.getUsername());
repairMapper.insertRepaired(bean);
}
} else {
throw new ServiceException("请选择正确的维修类型");
}
@ -869,7 +757,7 @@ public class RepairServiceImpl implements RepairService {
* @param loginUser 当前登录用户
* @param manageType 管理方式0编码管理 1数量管理
*/
private void copeNumberManageInList(RepairDeviceVO bean, List<RepairPartDetails> partList, LoginUser loginUser, Integer manageType, Boolean isNeedSplit, Long newTaskId) {
private void copeNumberManageInList(RepairDeviceVO bean, List<RepairPartDetails> partList, LoginUser loginUser, Integer manageType) {
if (CollectionUtil.isNotEmpty(partList)) {
if (null == bean.getManageType()) {
throw new ServiceException("请选择物资管理方式");
@ -948,9 +836,9 @@ public class RepairServiceImpl implements RepairService {
// 统计已维修数量 + 本次维修数量
BigDecimal repairNum = bean.getRepairedNum().add(bean.getRepairNum()) ;
// 统计报废数量 + 维修合计数量 不能 大与> 总的待维修量
/*if (repairNum.add(bean.getScrapNum()).compareTo(bean.getRepairNum())>0 ) {
if (repairNum.add(bean.getScrapNum()).compareTo(bean.getRepairNum())>0 ) {
throw new ServiceException("维修数量大于维修总量");
}*/
}
// 更新维修数量维修人员不变
repairMapper.updateRepairedNumTwo(bean.getId(), repairNum, loginUser.getUserid());
@ -998,10 +886,6 @@ public class RepairServiceImpl implements RepairService {
repairApplyRecord.setScrapReason(partList.get(0).getScrapReason());
// 不选维修配件时, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
if (isNeedSplit) {
repairApplyRecord.setTaskId(newTaskId);
repairMapper.addRecord(repairApplyRecord);
}
}
} else {
// 配件为空添加维修记录表
@ -1015,10 +899,6 @@ public class RepairServiceImpl implements RepairService {
repairApplyRecord.setScrapReason(partList.get(0).getScrapReason());
// 不选维修配件时, 只添加维修记录表
repairMapper.addRecord(repairApplyRecord);
if (isNeedSplit) {
repairApplyRecord.setTaskId(newTaskId);
repairMapper.addRecord(repairApplyRecord);
}
}
}
@ -1049,36 +929,22 @@ public class RepairServiceImpl implements RepairService {
throw new ServiceException("任务" + task.getTaskId() + "还有未完成维修的数据,请先完成维修");
}
}
// 根据taskId去查询维修任务详情按照level进行重新排序确保维修拆分顺利进行
List<RepairTask> list = repairMapper.getRepairTaskDetails(taskList);
// 根据查询的list集合根据level进行从大到小级别排序
list.sort(Comparator.comparing(RepairTask::getLevel).reversed());
// 3.业务逻辑处理
for (RepairTask task : list) {
for (RepairTask task : taskList) {
// 查询维修任务的详情表
Long oldWxTaskId = task.getTaskId();
List<RepairTaskDetails> preDetailsList = null;
List<RepairTaskDetails> detailsList = repairApplyDetailsMapper.getRepairDetailsWhichNotSent(oldWxTaskId);
BigDecimal thisRepairedNum = detailsList.stream().map(RepairTaskDetails::getRepairedNum).reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal thisScrapNum = detailsList.stream().map(RepairTaskDetails::getScrapNum).reduce(BigDecimal.ZERO, BigDecimal::add);
if (!CollectionUtils.isEmpty(detailsList) && 0 < (thisRepairedNum.add(thisScrapNum)).compareTo(BigDecimal.ZERO)) {
if (StringUtils.isNotBlank(detailsList.get(0).getLevel()) && Integer.parseInt(detailsList.get(0).getLevel()) > 1){
preDetailsList = repairApplyDetailsMapper.getRepairDetails(oldWxTaskId);
if (!CollectionUtils.isEmpty(preDetailsList)) {
for (RepairTaskDetails repairTaskDetails : preDetailsList) {
if (repairTaskDetails.getParentId() != null && repairTaskDetails.getParentId() != 0) {
preDetailsList = getPreDetailsForTask(repairTaskDetails);
}
}
}
}
task.setCreateBy(loginUser.getUserid());
Long agreementId = repairMapper.getAgreementId(task);
// 新增tm_task表数据修饰审核任务状态是待审核
task.setTaskType(TmTaskTypeEnum.TM_TASK_REPAIR_AUDIT.getTaskTypeId());
task.setTaskStatus(RepairTaskStatusEnum.TASK_STATUS_TO_EXAM.getStatus());
int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_REPAIR_AUDIT.getTaskTypeId());
// 生成维修审核单号
// 生成维修单号
String code = genderWsTaskCode(thisMonthMaxOrder);
task.setRepairCode(code);
task.setMonthOrder(thisMonthMaxOrder + 1);
@ -1092,50 +958,17 @@ public class RepairServiceImpl implements RepairService {
// 新增审计记录
for (RepairTaskDetails details : detailsList) {
/*RepairApplyDetails repairApplyDetails = createRepairDetailsCope(details);
repairApplyDetailsMapper.updateRepairApplyDetails(repairApplyDetails);*/
RepairApplyDetails repairApplyDetails = createRepairDetailsCope(details);
repairApplyDetailsMapper.updateRepairApplyDetails(repairApplyDetails);
details.setCreateBy(String.valueOf(loginUser.getUserid()));
details.setTaskId(task.getTaskId());
/*details.setRepairNum(details.getRepairNum());
details.setRepairNum(details.getRepairNum());
details.setRepairedNum(details.getRepairedNum());
details.setScrapNum(details.getScrapNum());*/
details.setScrapNum(details.getScrapNum());
// 先根据id查询审核表中是否存在数据存在则不用重复插入
if (StringUtils.isNotBlank(details.getMaId())) {
List<RepairTaskDetails> taskDetails = repairMapper.getRepairDetailsById(details);
if (CollectionUtils.isEmpty(taskDetails)) {
if (CollectionUtils.isEmpty(repairMapper.getAuditDetailsById(details))) {
repairMapper.addAuditDetails(details);
}
} else {
List<RepairTaskDetails> taskDetails = repairMapper.getRepairDetailsById(details);
if (!CollectionUtils.isEmpty(taskDetails) && taskDetails.size() > 0) {
for (RepairTaskDetails taskDetail : taskDetails) {
if (!CollectionUtils.isEmpty(preDetailsList) && preDetailsList.size() > 0) {
//获取到preDetailsList中的typeId和taskDetail相同的数据
for (RepairTaskDetails preDetails : preDetailsList) {
if (preDetails.getTypeId().equals(taskDetail.getTypeId())) {
if (taskDetail.getRepairNum().compareTo(preDetails.getPreRepairNum()) < 0) {
details.setRepairNum(preDetails.getPreRepairNum().subtract(taskDetail.getRepairNum()));
details.setScrapNum(preDetails.getPreScrapNum().subtract(taskDetail.getScrapNum()).compareTo(BigDecimal.ZERO) > 0 ? preDetails.getPreScrapNum().subtract(taskDetail.getScrapNum()) : BigDecimal.ZERO);
details.setRepairedNum(preDetails.getPreRepairedNum().subtract(taskDetail.getRepairedNum()).compareTo(BigDecimal.ZERO) > 0 ? preDetails.getPreRepairedNum().subtract(taskDetail.getRepairedNum()) : BigDecimal.ZERO);
repairMapper.addAuditDetails(details);
}
}
}
} else {
if (taskDetail.getTypeId().equals(details.getTypeId())) {
if (taskDetail.getRepairNum().compareTo(details.getRepairNum()) < 0) {
details.setRepairNum(details.getRepairNum().subtract(taskDetail.getRepairNum()));
details.setScrapNum(details.getScrapNum().subtract(taskDetail.getScrapNum()).compareTo(BigDecimal.ZERO) > 0 ? details.getScrapNum().subtract(taskDetail.getScrapNum()) : BigDecimal.ZERO);
details.setRepairedNum(details.getRepairedNum().subtract(taskDetail.getRepairedNum()).compareTo(BigDecimal.ZERO) > 0 ? details.getRepairedNum().subtract(taskDetail.getRepairedNum()) : BigDecimal.ZERO);
repairMapper.addAuditDetails(details);
}
}
}
}
} else {
repairMapper.addAuditDetails(details);
}
}
}
}
}

View File

@ -35,6 +35,9 @@ public class TmTask extends BaseEntity {
@ApiModelProperty(value = "任务类型(定义数据字典)")
private Integer taskType;
@ApiModelProperty(value = "领料分任务类型(定义数据字典)")
private Integer splitType;
/** 任务状态(定义数据字典) */
@Excel(name = "任务状态(定义数据字典)")
@ApiModelProperty(value = "任务状态(定义数据字典)")