班组退料

This commit is contained in:
mashuai 2025-08-18 15:50:55 +08:00
parent e37ff62fd3
commit e586306296
6 changed files with 363 additions and 189 deletions

View File

@ -17,7 +17,9 @@ import com.bonus.material.back.domain.BackApplyDetails;
import com.bonus.material.back.domain.HandlingOrder; import com.bonus.material.back.domain.HandlingOrder;
import com.bonus.material.back.domain.MaCode; import com.bonus.material.back.domain.MaCode;
import com.bonus.material.back.domain.vo.*; import com.bonus.material.back.domain.vo.*;
import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.common.annotation.PreventRepeatSubmit; import com.bonus.material.common.annotation.PreventRepeatSubmit;
import com.bonus.material.task.mapper.TmTaskMapper;
import com.bonus.system.api.RemoteFileService; import com.bonus.system.api.RemoteFileService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
@ -52,6 +54,9 @@ public class BackApplyInfoController extends BaseController {
@Resource @Resource
private ArchivesService archivesService; private ArchivesService archivesService;
@Resource
private TmTaskMapper taskMapper;
/** /**
* 查询退料任务列表 * 查询退料任务列表
*/ */
@ -365,6 +370,11 @@ public class BackApplyInfoController extends BaseController {
@PostMapping("/submitBackApply") @PostMapping("/submitBackApply")
public AjaxResult submitBackApply(@RequestBody BackApplyInfo backApplyInfo) { public AjaxResult submitBackApply(@RequestBody BackApplyInfo backApplyInfo) {
try { try {
BmUnit unit = taskMapper.selectBmUnitInfo(backApplyInfo);
if (unit != null && unit.getTypeId() == 1731L) {
// 班组退料提交
return backApplyInfoService.submitBzBackApply(backApplyInfo);
}
return backApplyInfoService.submitBackApply(backApplyInfo); return backApplyInfoService.submitBackApply(backApplyInfo);
} catch (Exception e) { } catch (Exception e) {
return error("系统错误, " + e.getMessage()); return error("系统错误, " + e.getMessage());

View File

@ -475,4 +475,18 @@ public interface BackApplyInfoMapper {
* @return * @return
*/ */
List<SltAgreementInfo> getTbList(BackApplyInfo bean); List<SltAgreementInfo> getTbList(BackApplyInfo bean);
/**
* 查看机具在用数据
* @param applyInfo
* @return
*/
List<SltAgreementInfo> getUserList(BackApplyInfo applyInfo);
/**
* 查看材料站在用数据
* @param applyInfo
* @return
*/
List<SltAgreementInfo> getClzUserList(BackApplyInfo applyInfo);
} }

View File

@ -217,5 +217,12 @@ public interface IBackApplyInfoService {
* @return * @return
*/ */
AjaxResult getSort(HandlingOrder bean); AjaxResult getSort(HandlingOrder bean);
/**
* 班组退料提交
* @param backApplyInfo
* @return
*/
AjaxResult submitBzBackApply(BackApplyInfo backApplyInfo);
} }

View File

@ -932,26 +932,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
if (backApplyInfo.getUnitId() == null || backApplyInfo.getProId() == null) { if (backApplyInfo.getUnitId() == null || backApplyInfo.getProId() == null) {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空"); return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空");
} }
BmUnit queryUnitInfo = bmUnitMapper.selectBmUnitByUnitId(backApplyInfo.getUnitId());
if (queryUnitInfo.getTypeId() == null) {
throw new ServiceException("单位类型为空");
}
// 如果单位类型为班组则查询该班在机具签署的协议ID
LeaseOutDetails leaseOutDetail = new LeaseOutDetails();
if (queryUnitInfo.getTypeId() == 1731L) {
// 查询班组挂靠的项目部协议信息
leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject(
Math.toIntExact(backApplyInfo.getUnitId()),
Math.toIntExact(backApplyInfo.getProId())
);
if (leaseOutDetail == null) {
throw new ServiceException("项目部协议信息查询为空");
}
// 把后续流程设置为项目部的协议进行处理
backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId());
backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId());
}
List<BackApplyInfo> codeList = new ArrayList<>(); List<BackApplyInfo> codeList = new ArrayList<>();
// 根据传入的id查询退料申请信息 // 根据传入的id查询退料申请信息
List<BackApplyInfo> applyInfoList = backApplyInfoMapper.selectBackDetails(backApplyInfo); List<BackApplyInfo> applyInfoList = backApplyInfoMapper.selectBackDetails(backApplyInfo);
@ -986,14 +966,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
Long agreementId = backApplyInfoMapper.selectAgreementId(backApplyInfo); Long agreementId = backApplyInfoMapper.selectAgreementId(backApplyInfo);
// 先查第四层类型 // 先查第四层类型
backApplyInfo.setAgreementId(agreementId); backApplyInfo.setAgreementId(agreementId);
// 如果单位类型为班组则查询该班在机具签署的协议ID
if (queryUnitInfo.getTypeId() == 1731L) {
// 把后续流程设置为项目部的协议进行处理
if (leaseOutDetail.getProjectUnitAgreementId() != null) {
backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId());
backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId());
}
}
List<TypeTreeNode> listL4 = mapper.getUseTypeTreeL4(backApplyInfo); List<TypeTreeNode> listL4 = mapper.getUseTypeTreeL4(backApplyInfo);
if (CollectionUtils.isNotEmpty(applyDetails)) { if (CollectionUtils.isNotEmpty(applyDetails)) {
for (BackApplyDetails applyDetail : applyDetails) { for (BackApplyDetails applyDetail : applyDetails) {
@ -1013,12 +985,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
} else { } else {
return AjaxResult.error("退料物资为空,无法进行提交"); return AjaxResult.error("退料物资为空,无法进行提交");
} }
// 判断是否为班组退料将退料同步材料站以及项目部
boolean isClz = false;
BmUnit unit = taskMapper.selectBmUnitInfo(backApplyInfo);
if (unit != null && unit.getTypeId() == 1731L) {
isClz = true;
}
// 设置更新信息, // 设置更新信息,
backApplyInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName()); backApplyInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo.setUpdateTime(DateUtils.getNowDate()); backApplyInfo.setUpdateTime(DateUtils.getNowDate());
@ -1037,95 +1003,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
Long newTaskId = insertTt(SecurityUtils.getLoginUser().getSysUser().getNickName(), backApplyInfo.getRemark(), backApplyInfo.getTaskId()); Long newTaskId = insertTt(SecurityUtils.getLoginUser().getSysUser().getNickName(), backApplyInfo.getRemark(), backApplyInfo.getTaskId());
// 插入协议任务表 // 插入协议任务表
result += insertTta(newTaskId, applyInfoList); result += insertTta(newTaskId, applyInfoList);
MaterialBackApplyInfo materialBackApplyInfo = new MaterialBackApplyInfo();
BmAgreementInfo bmAgreementInfo = new BmAgreementInfo();
bmAgreementInfo.setUnitId(backApplyInfo.getUnitId());
bmAgreementInfo.setProjectId(backApplyInfo.getProId());
BmAgreementInfo info = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo);
BackApplyInfo backApplyInfo4 = new BackApplyInfo();
if (isClz) {
int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId());
String code = genderClzTaskCode(thisMonthMaxOrder);
TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId(),
BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), null, thisMonthMaxOrder + 1, code);
tmTask.setCreateTime(DateUtils.getNowDate());
String createBy = SecurityUtils.getLoginUser().getSysUser().getNickName();
tmTask.setCreateBy(createBy);
materialBackApplyInfo.setCode(code);
materialBackApplyInfo.setCreateBy(createBy);
materialBackApplyInfo.setCreateTime(DateUtils.getNowDate());
// 保存退料信息到 tm_task 表中
result += taskMapper.insertTmTask(tmTask);
if (result > 0) {
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), info.getAgreementId());
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(createBy);
taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
materialBackApplyInfo.setTaskId(tmTask.getTaskId());
materialBackApplyInfo.setBackStyle("2");
materialBackApplyInfo.setStatus("2");
BackApplyInfo backApplyInfo1 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId());
if (backApplyInfo1 != null) {
materialBackApplyInfo.setBackPerson(StringUtils.isNotBlank(backApplyInfo1.getBackPerson()) ? backApplyInfo1.getBackPerson() : "");
materialBackApplyInfo.setPhone(StringUtils.isNotBlank(backApplyInfo1.getPhone()) ? backApplyInfo1.getPhone() : "");
}
result += materialBackInfoMapper.insertBackApplyInfo(materialBackApplyInfo);
if (CollectionUtils.isNotEmpty(applyDetails)) {
for (BackApplyDetails applyInfo : applyDetails) {
MaterialBackApplyDetails details = new MaterialBackApplyDetails();
details.setCode(code);
details.setParentId(materialBackApplyInfo.getId());
details.setPreNum(applyInfo.getPreNum());
details.setAuditNum(applyInfo.getPreNum());
details.setStatus(String.valueOf(BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus()));
details.setCreateBy(createBy);
details.setCreateTime(DateUtils.getNowDate());
details.setTypeId(applyInfo.getTypeId());
// 保存退料详情
result += materialBackInfoMapper.insertBackApplyDetails(details);
}
}
}
// 材料站对分公司建立退料任务
int backMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId());
String backCode = genderTaskCode(backMonthMaxOrder);
TmTask newTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(),
BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(),
null,backMonthMaxOrder + 1, backCode);
newTask.setCreateTime(DateUtils.getNowDate());
newTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo4.setCode(backCode);
backApplyInfo4.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo4.setCreateTime(DateUtils.getNowDate());
// 保存退料信息到 tm_task 表中
result += taskMapper.insertTmTask(newTask);
if (result > 0) {
// 根据单位和工程id查询项目部关联协议id
BackApplyInfo backApplyInfo3 = backApplyInfoMapper.selectInfo(backApplyInfo);
if (backApplyInfo3 != null) {
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTask.getTaskId(), backApplyInfo3.getAgreementId());
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
}
backApplyInfo4.setTaskId(newTask.getTaskId());
BackApplyInfo backApplyInfo2 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId());
if (backApplyInfo2 != null) {
backApplyInfo4.setBackPerson(StringUtils.isNotBlank(backApplyInfo2.getBackPerson()) ? backApplyInfo2.getBackPerson() : "");
backApplyInfo4.setPhone(StringUtils.isNotBlank(backApplyInfo2.getPhone()) ? backApplyInfo2.getPhone() : "");
backApplyInfo4.setBackStyle("2");
}
result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo4);
}
// 保存退料详情
if (CollectionUtils.isNotEmpty(applyDetails)) {
for (BackApplyDetails applyDetail : applyDetails) {
// 保存退料详情
applyDetail.setAuditNum(applyDetail.getPreNum());
result += backApplyInfoMapper.insertBackApplyDetails(applyDetail);
}
}
}
for (String typeId : typeIdList) { for (String typeId : typeIdList) {
// 查询待维修的机具设备 // 查询待维修的机具设备
backApplyInfo.setTypeId(typeId); backApplyInfo.setTypeId(typeId);
@ -1136,50 +1013,11 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
// 更新结算表 // 更新结算表
List<BackApplyInfo> allList = backApplyInfoMapper.selectBackDetails(backApplyInfo); List<BackApplyInfo> allList = backApplyInfoMapper.selectBackDetails(backApplyInfo);
if (CollectionUtils.isNotEmpty(allList)) { if (CollectionUtils.isNotEmpty(allList)) {
int res = updateSlt4Bean(isClz,backApplyInfo, allList); int res = updateSlt4Bean(backApplyInfo, allList);
// 检查机具是否领料 // 检查机具是否领料
if (res == 0) { if (res == 0) {
throw new RuntimeException("该机具未被领料使用"); throw new RuntimeException("该机具未被领料使用");
} }
List<BackApplyInfo> clzList = new ArrayList<>();
List<BackApplyInfo> xmList = new ArrayList<>();
if (isClz) {
for (BackApplyInfo applyInfo : allList) {
applyInfo.setAgreementId(info.getAgreementId());
MaterialBackApplyDetails details = new MaterialBackApplyDetails();
details.setParentId(materialBackApplyInfo.getId());
details.setTypeId(Long.parseLong(typeId));
details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
details.setCreateTime(DateUtils.getNowDate());
details.setPreNum(applyInfo.getBackNum());
details.setStatus("0");
details.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null);
details.setIsFinished(1);
result += materialBackInfoMapper.insertCheckDetails(details);
// 查询材料站同步数据
clzList = backApplyInfoMapper.selectClzList(details);
BackApplyDetails backApplyDetails = new BackApplyDetails();
backApplyDetails.setParentId(backApplyInfo4.getId());
backApplyDetails.setTypeId(Long.parseLong(typeId));
backApplyDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyDetails.setCreateTime(DateUtils.getNowDate());
backApplyDetails.setPreNum(applyInfo.getBackNum());
backApplyDetails.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null);
backApplyDetails.setStatus("0");
backApplyDetails.setIsFinished(1);
result += backApplyInfoMapper.insertCheckDetails(backApplyDetails);
// 查询项目部同步数据
//xmList = backApplyInfoMapper.selectXmList(backApplyDetails);
}
res = updateSlt4BeanClz(materialBackApplyInfo, clzList);
if (res == 0) {
throw new RuntimeException("同步材料站结算出错");
}
/*res = updateSlt4BeanXm(backApplyInfo4, xmList);
if (res == 0) {
throw new RuntimeException("同步项目部结算出错");
}*/
}
} }
// 完成退料部分更新 back_check_details // 完成退料部分更新 back_check_details
finishBackCheckDetails(backApplyInfo); finishBackCheckDetails(backApplyInfo);
@ -2193,6 +2031,251 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
} }
} }
/**
* 班组退料提交
* @param backApplyInfo
* @return
*/
@Override
public AjaxResult submitBzBackApply(BackApplyInfo backApplyInfo) {
if (backApplyInfo.getUnitId() == null || backApplyInfo.getProId() == null) {
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), "参数不能为空");
}
BmUnit queryUnitInfo = bmUnitMapper.selectBmUnitByUnitId(backApplyInfo.getUnitId());
if (queryUnitInfo.getTypeId() == null) {
throw new ServiceException("单位类型为空");
}
// 如果单位类型为班组则查询该班在机具签署的协议ID
LeaseOutDetails leaseOutDetail = new LeaseOutDetails();
if (queryUnitInfo.getTypeId() == 1731L) {
// 查询班组挂靠的项目部协议信息
leaseOutDetail = leaseApplyInfoMapper.selectProjectUnitAgreementIdByTeamAndProject(
Math.toIntExact(backApplyInfo.getUnitId()),
Math.toIntExact(backApplyInfo.getProId())
);
if (leaseOutDetail == null) {
throw new ServiceException("项目部协议信息查询为空");
}
// 把后续流程设置为项目部的协议进行处理
backApplyInfo.setAgreementId(leaseOutDetail.getProjectUnitAgreementId());
backApplyInfo.setUnitId(leaseOutDetail.getProjectUnitAgreementId());
}
SelectDto dto = new SelectDto();
dto.setProId(backApplyInfo.getProId()).setUnitId(Math.toIntExact(backApplyInfo.getUnitId()));
List<AgreementVo> list = mapper.getAgreementInfoByIdBack(dto);
List<BackApplyInfo> codeList = new ArrayList<>();
// 根据传入的id查询退料申请信息
List<BackApplyInfo> applyInfoList = backApplyInfoMapper.selectBackDetails(backApplyInfo);
// 将applyInfoList中状态不为在用的数据收集到新集合中
if (CollectionUtils.isNotEmpty(applyInfoList)) {
for (BackApplyInfo applyInfo : applyInfoList) {
// 根据maId查询设备是否处于在用状态(需要同时查询机具和材料站)
if (applyInfo.getMaId() != null) {
List<SltAgreementInfo> infoList = backApplyInfoMapper.getUserList(applyInfo);
List<SltAgreementInfo> clzList = backApplyInfoMapper.getClzUserList(applyInfo);
if (CollectionUtils.isEmpty(infoList) && CollectionUtils.isEmpty(clzList)) {
codeList.add(applyInfo);
}
}
}
}
if (CollectionUtils.isNotEmpty(codeList)) {
StringBuilder msgBuilder = new StringBuilder("您所选择的编码设备编号");
for (int i = 0; i < codeList.size(); i++) {
String maCode = codeList.get(i).getMaCode();
msgBuilder.append(maCode);
if (i < codeList.size() - 1) {
msgBuilder.append(", ");
}
}
msgBuilder.append("已被他人完成退料,请编辑后重新提交!");
String msg = msgBuilder.toString();
msg = msg.replaceAll("\n", "");
return AjaxResult.error(msg);
}
int result = 0;
//先查询退料详情信息
List<BackApplyDetails> applyDetails = backApplyInfoMapper.selectBackApplyDetailsListByTaskId(backApplyInfo);
if (CollectionUtils.isEmpty(applyDetails)) {
return AjaxResult.error("退料物资为空,无法进行提交");
}
// 设置更新信息,
backApplyInfo.setUpdateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo.setUpdateTime(DateUtils.getNowDate());
backApplyInfo.setTaskStatus(BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus());
// 更新任务表及退料申请表状态
result += updateTaskAndBackInfo(backApplyInfo);
if (result > 0 && CollectionUtils.isNotEmpty(applyInfoList)) {
for (BackApplyInfo applyInfo : applyInfoList) {
// 查询该设备是否存在于材料站中
List<SltAgreementInfo> clzList = backApplyInfoMapper.getClzUserList(applyInfo);
if (CollectionUtils.isEmpty(clzList)) {
result += machineMapper.updateStatus(applyInfo.getMaId(), MaMachineStatusEnum.BACK_REPAIR.getStatus());
}
}
// 获取applyInfoList的typeId并生成集合
List<String> typeIdList = applyInfoList.stream()
.map(BackApplyInfo::getTypeId).distinct()
.collect(Collectors.toList());
// 插入任务表
Long newTaskId = insertTt(SecurityUtils.getLoginUser().getSysUser().getNickName(), backApplyInfo.getRemark(), backApplyInfo.getTaskId());
// 插入协议任务表
result += insertTta(newTaskId, applyInfoList);
MaterialBackApplyInfo materialBackApplyInfo = new MaterialBackApplyInfo();
BmAgreementInfo bmAgreementInfo = new BmAgreementInfo();
bmAgreementInfo.setUnitId(backApplyInfo.getUnitId());
bmAgreementInfo.setProjectId(backApplyInfo.getProId());
BmAgreementInfo info = bmAgreementInfoMapper.queryByTeamIdAndProjectIdCl(bmAgreementInfo);
BackApplyInfo backApplyInfo4 = new BackApplyInfo();
int thisMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId());
String code = genderClzTaskCode(thisMonthMaxOrder);
TmTask tmTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_MATERIAL_BACK.getTaskTypeId(),
BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(), null, thisMonthMaxOrder + 1, code);
tmTask.setCreateTime(DateUtils.getNowDate());
String createBy = SecurityUtils.getLoginUser().getSysUser().getNickName();
tmTask.setCreateBy(createBy);
materialBackApplyInfo.setCode(code);
materialBackApplyInfo.setCreateBy(createBy);
materialBackApplyInfo.setCreateTime(DateUtils.getNowDate());
// 保存退料信息到 tm_task 表中
result += taskMapper.insertTmTask(tmTask);
if (result > 0) {
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(tmTask.getTaskId(), info.getAgreementId());
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(createBy);
taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
materialBackApplyInfo.setTaskId(tmTask.getTaskId());
materialBackApplyInfo.setBackStyle("2");
materialBackApplyInfo.setStatus("2");
BackApplyInfo backApplyInfo1 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId());
if (backApplyInfo1 != null) {
materialBackApplyInfo.setBackPerson(StringUtils.isNotBlank(backApplyInfo1.getBackPerson()) ? backApplyInfo1.getBackPerson() : "");
materialBackApplyInfo.setPhone(StringUtils.isNotBlank(backApplyInfo1.getPhone()) ? backApplyInfo1.getPhone() : "");
}
result += materialBackInfoMapper.insertBackApplyInfo(materialBackApplyInfo);
if (CollectionUtils.isNotEmpty(applyDetails)) {
for (BackApplyDetails applyInfo : applyDetails) {
MaterialBackApplyDetails details = new MaterialBackApplyDetails();
details.setCode(code);
details.setParentId(materialBackApplyInfo.getId());
details.setPreNum(applyInfo.getPreNum());
details.setAuditNum(applyInfo.getPreNum());
details.setStatus(String.valueOf(BackTaskStatusEnum.BACK_TASK_NO_FINISHED.getStatus()));
details.setCreateBy(createBy);
details.setCreateTime(DateUtils.getNowDate());
details.setTypeId(applyInfo.getTypeId());
// 保存退料详情
result += materialBackInfoMapper.insertBackApplyDetails(details);
}
}
}
// 材料站对分公司建立退料任务
int backMonthMaxOrder = taskMapper.getMonthMaxOrderByDate(DateUtils.getCurrentYear(), DateUtils.getCurrentMonth(), TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId());
String backCode = genderTaskCode(backMonthMaxOrder);
TmTask newTask = new TmTask(null, TmTaskTypeEnum.TM_TASK_BACK.getTaskTypeId(),
BackTaskStatusEnum.BACK_TASK_IN_FINISHED.getStatus(),
null, backMonthMaxOrder + 1, backCode);
newTask.setCreateTime(DateUtils.getNowDate());
newTask.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo4.setCode(backCode);
backApplyInfo4.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyInfo4.setCreateTime(DateUtils.getNowDate());
// 保存退料信息到 tm_task 表中
result += taskMapper.insertTmTask(newTask);
if (result > 0) {
// 根据单位和工程id查询项目部关联协议id
BackApplyInfo backApplyInfo3 = backApplyInfoMapper.selectInfo(backApplyInfo);
if (backApplyInfo3 != null) {
TmTaskAgreement tmTaskAgreement = new TmTaskAgreement(newTask.getTaskId(), backApplyInfo3.getAgreementId());
tmTaskAgreement.setCreateTime(DateUtils.getNowDate());
tmTaskAgreement.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
taskAgreementMapper.insertTmTaskAgreement(tmTaskAgreement);
}
backApplyInfo4.setTaskId(newTask.getTaskId());
BackApplyInfo backApplyInfo2 = backApplyInfoMapper.selectBackApplyInfoById(backApplyInfo.getId());
if (backApplyInfo2 != null) {
backApplyInfo4.setBackPerson(StringUtils.isNotBlank(backApplyInfo2.getBackPerson()) ? backApplyInfo2.getBackPerson() : "");
backApplyInfo4.setPhone(StringUtils.isNotBlank(backApplyInfo2.getPhone()) ? backApplyInfo2.getPhone() : "");
backApplyInfo4.setBackStyle("2");
}
result += backApplyInfoMapper.insertBackApplyInfo(backApplyInfo4);
}
// 保存退料详情
if (CollectionUtils.isNotEmpty(applyDetails)) {
for (BackApplyDetails applyDetail : applyDetails) {
// 保存退料详情
applyDetail.setAuditNum(applyDetail.getPreNum());
result += backApplyInfoMapper.insertBackApplyDetails(applyDetail);
}
}
for (String typeId : typeIdList) {
// 查询待维修的机具设备
backApplyInfo.setTypeId(typeId);
List<BackApplyInfo> wxList = backApplyInfoMapper.getWxList(backApplyInfo);
if (CollectionUtils.isNotEmpty(wxList)) {
// 插入维修记录表
result += insertRad(newTaskId, wxList);
// 更新结算表
List<BackApplyInfo> allList = backApplyInfoMapper.selectBackDetails(backApplyInfo);
if (CollectionUtils.isNotEmpty(allList)) {
int res = updateSlt4Bean(backApplyInfo, allList);
// 检查机具是否领料
if (res == 0) {
throw new RuntimeException("该机具未被领料使用");
}
List<BackApplyInfo> clzList = new ArrayList<>();
List<BackApplyInfo> xmList = new ArrayList<>();
for (BackApplyInfo applyInfo : allList) {
applyInfo.setAgreementId(info.getAgreementId());
MaterialBackApplyDetails details = new MaterialBackApplyDetails();
details.setParentId(materialBackApplyInfo.getId());
details.setTypeId(Long.parseLong(typeId));
details.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
details.setCreateTime(DateUtils.getNowDate());
details.setPreNum(applyInfo.getBackNum());
details.setStatus("0");
details.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null);
details.setIsFinished(1);
result += materialBackInfoMapper.insertCheckDetails(details);
// 查询材料站同步数据
clzList = backApplyInfoMapper.selectClzList(details);
BackApplyDetails backApplyDetails = new BackApplyDetails();
backApplyDetails.setParentId(backApplyInfo4.getId());
backApplyDetails.setTypeId(Long.parseLong(typeId));
backApplyDetails.setCreateBy(SecurityUtils.getLoginUser().getSysUser().getNickName());
backApplyDetails.setCreateTime(DateUtils.getNowDate());
backApplyDetails.setPreNum(applyInfo.getBackNum());
backApplyDetails.setMaId(applyInfo.getMaId() != null ? applyInfo.getMaId() : null);
backApplyDetails.setStatus("0");
backApplyDetails.setIsFinished(1);
result += backApplyInfoMapper.insertCheckDetails(backApplyDetails);
// 查询项目部同步数据
//xmList = backApplyInfoMapper.selectXmList(backApplyDetails);
}
res = updateSlt4BeanClz(materialBackApplyInfo, clzList);
if (res == 0) {
throw new RuntimeException("同步材料站结算出错");
}
/*res = updateSlt4BeanXm(backApplyInfo4, xmList);
if (res == 0) {
throw new RuntimeException("同步项目部结算出错");
}*/
}
// 完成退料部分更新 back_check_details
finishBackCheckDetails(backApplyInfo);
}
}
// 如果所有操作都成功
if (result > 0) {
return AjaxResult.success();
}
}
// 操作失败返回错误
return AjaxResult.error(HttpCodeEnum.FAIL.getCode(), HttpCodeEnum.FAIL.getMsg());
}
/** /**
* 关键字搜索 * 关键字搜索
@ -2232,7 +2315,7 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
* @param allList * @param allList
* @return * @return
*/ */
private int updateSlt4Bean(Boolean isClz ,BackApplyInfo record, List<BackApplyInfo> allList) { private int updateSlt4Bean(BackApplyInfo record, List<BackApplyInfo> allList) {
for (BackApplyInfo bean : allList) { for (BackApplyInfo bean : allList) {
List<SltAgreementInfo> infoList = backApplyInfoMapper.getStlInfo(bean); List<SltAgreementInfo> infoList = backApplyInfoMapper.getStlInfo(bean);
// 查询是否存在班组数据 // 查询是否存在班组数据
@ -2267,7 +2350,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
} }
} }
// 非班组退料才同步班组分公司数据 // 非班组退料才同步班组分公司数据
if (!isClz) {
BigDecimal tbBackNum = bean.getBackNum(); BigDecimal tbBackNum = bean.getBackNum();
if (CollectionUtils.isNotEmpty(tbList)) { if (CollectionUtils.isNotEmpty(tbList)) {
for (SltAgreementInfo info : tbList) { for (SltAgreementInfo info : tbList) {
@ -2288,7 +2370,6 @@ public class BackApplyInfoServiceImpl implements IBackApplyInfoService {
} }
} }
} }
}
return 1; return 1;
} }

View File

@ -1,5 +1,6 @@
package com.bonus.material.common.service.impl; package com.bonus.material.common.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.nacos.common.utils.StringUtils; import com.alibaba.nacos.common.utils.StringUtils;
import com.bonus.common.biz.config.DateTimeHelper; import com.bonus.common.biz.config.DateTimeHelper;
import com.bonus.common.biz.domain.*; import com.bonus.common.biz.domain.*;
@ -10,7 +11,6 @@ import com.bonus.material.back.domain.BackApplyInfo;
import com.bonus.material.basic.domain.BmProject; import com.bonus.material.basic.domain.BmProject;
import com.bonus.material.basic.domain.BmUnit; import com.bonus.material.basic.domain.BmUnit;
import com.bonus.material.basic.mapper.BmUnitMapper; import com.bonus.material.basic.mapper.BmUnitMapper;
import com.bonus.material.clz.domain.lease.MaterialLeaseApplyInfo;
import com.bonus.material.clz.service.MaterialLeaseInfoService; import com.bonus.material.clz.service.MaterialLeaseInfoService;
import com.bonus.material.common.domain.dto.SelectDto; import com.bonus.material.common.domain.dto.SelectDto;
import com.bonus.material.common.domain.vo.AgreementVo; import com.bonus.material.common.domain.vo.AgreementVo;
@ -526,12 +526,6 @@ public class SelectServiceImpl implements SelectService {
} }
// 如果单位类型为班组则查询该班在机具签署的协议ID // 如果单位类型为班组则查询该班在机具签署的协议ID
if (queryUnitInfo.getTypeId() == 1731L) { if (queryUnitInfo.getTypeId() == 1731L) {
// List<AgreementVo> agreementInfos = mapper.getMaterialAgreementInfoByIdBack(new SelectDto().setProId(bean.getProId()).setUnitId(Math.toIntExact(queryUnitInfo.getUnitId())));
// if (CollectionUtils.isNotEmpty(agreementInfos)) {
// bean.setClzAgreementId(Long.valueOf(agreementInfos.get(0).getAgreementId()));
// } else {
// throw new ServiceException("该班组没有在机具签署✍️的协议");
// }
List<AgreementVo> clzAgreementInfos = mapper.getAgreementInfoByIdBack(new SelectDto().setProId(bean.getProId()).setUnitId(Math.toIntExact(bean.getUnitId()))); List<AgreementVo> clzAgreementInfos = mapper.getAgreementInfoByIdBack(new SelectDto().setProId(bean.getProId()).setUnitId(Math.toIntExact(bean.getUnitId())));
// 如果在材料站该单位有签署协议 // 如果在材料站该单位有签署协议
if (CollectionUtils.isNotEmpty(clzAgreementInfos)) { if (CollectionUtils.isNotEmpty(clzAgreementInfos)) {
@ -542,9 +536,27 @@ public class SelectServiceImpl implements SelectService {
} }
} }
Map<Long, TypeTreeNode> mergedMap = new HashMap<>();
// 先查第四层类型 // 先查第四层类型
listL4 = mapper.getUseTypeTreeL4(bean); listL4 = mapper.getUseTypeTreeL4(bean);
if (CollectionUtils.isNotEmpty(listL4)) { if (CollectionUtils.isNotEmpty(listL4)) {
// 将listL4中typeId相同数据进行合并数量相加
for (TypeTreeNode item : listL4) {
Long typeId = item.getTypeId();
if (mergedMap.containsKey(typeId)) {
// 若存在则将数量累加
TypeTreeNode existingItem = mergedMap.get(typeId);
existingItem.setNum(existingItem.getNum().add(item.getNum()));
} else {
// 若不存在则将当前对象放入Map
TypeTreeNode newItem = new TypeTreeNode();
// 复制属性
BeanUtil.copyProperties(item, newItem);
mergedMap.put(typeId, newItem);
}
}
// 将Map中的值转换为List
listL4 = new ArrayList<>(mergedMap.values());
List<Long> list4ParentIds = listL4.stream().map(TypeTreeNode::getParentId).collect(Collectors.toList()); List<Long> list4ParentIds = listL4.stream().map(TypeTreeNode::getParentId).collect(Collectors.toList());
// 根据第四层parentId 查第三层类型 // 根据第四层parentId 查第三层类型
listL3 = mapper.getUseTypeTreeL3(list4ParentIds); listL3 = mapper.getUseTypeTreeL3(list4ParentIds);

View File

@ -1460,4 +1460,54 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
order by start_time asc order by start_time asc
</select> </select>
<select id="getUserList" resultType="com.bonus.material.settlement.domain.SltAgreementInfo">
SELECT
id AS id,
agreement_id AS agreementId,
type_id AS typeId,
ma_id AS maId,
num AS backNum,
start_time AS startTime,
end_time AS endTime,
status AS status,
lease_id AS leaseId,
lease_type AS leaseType,
back_id AS backId,
lease_price AS leasePrice,
buy_price AS buyPrice,
company_id AS companyId
FROM
slt_agreement_info
WHERE
status = 0
AND type_id = #{typeId}
AND ma_id = #{maId}
order by start_time asc
</select>
<select id="getClzUserList" resultType="com.bonus.material.settlement.domain.SltAgreementInfo">
SELECT
id AS id,
agreement_id AS agreementId,
type_id AS typeId,
ma_id AS maId,
num AS backNum,
start_time AS startTime,
end_time AS endTime,
status AS status,
lease_id AS leaseId,
lease_type AS leaseType,
back_id AS backId,
lease_price AS leasePrice,
buy_price AS buyPrice,
company_id AS companyId
FROM
clz_slt_agreement_info
WHERE
status = 0
AND type_id = #{typeId}
AND ma_id = #{maId}
order by start_time asc
</select>
</mapper> </mapper>