This commit is contained in:
parent
0bd8c9f6eb
commit
e5e01f5fd4
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ public class TmTask extends BaseEntity {
|
|||
@ApiModelProperty(value = "任务类型(定义数据字典)")
|
||||
private Integer taskType;
|
||||
|
||||
@ApiModelProperty(value = "领料分任务类型(定义数据字典)")
|
||||
private Integer splitType;
|
||||
|
||||
/** 任务状态(定义数据字典) */
|
||||
@Excel(name = "任务状态(定义数据字典)")
|
||||
@ApiModelProperty(value = "任务状态(定义数据字典)")
|
||||
|
|
|
|||
Loading…
Reference in New Issue