This commit is contained in:
hayu 2025-12-12 17:37:25 +08:00
parent ff80946f86
commit 1f8ff23fcb
5 changed files with 182 additions and 6 deletions

View File

@ -18,6 +18,9 @@ import com.bonus.material.back.mapper.BackChangeMapper;
import com.bonus.material.back.service.BackChangeService;
import com.bonus.material.common.constants.TypeConstants;
import com.bonus.material.common.enums.TypeEnums;
import com.bonus.material.devchange.domain.CsDeviceInfo;
import com.bonus.material.repair.domain.ToBeRepair;
import com.bonus.material.repair.mapper.RepairMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -42,6 +45,9 @@ public class BackChangeServiceImpl implements BackChangeService {
@Resource
private BackChangeMapper mapper;
@Resource
private RepairMapper repairMapper;
@Resource
private ApprovalInstanceMapper instanceMapper;
@ -403,6 +409,12 @@ public class BackChangeServiceImpl implements BackChangeService {
}
}
if (CollectionUtils.isNotEmpty(devDetailsList)) {
// 创建维修任务
String re = createRepairTask(devDetailsList);
if ("-1".equals(re)){
throw new RuntimeException("创建维修任务失败");
}
for (BackCsDeviceDetails csDeviceDetails : devDetailsList) {
// 装备
if ("1".equals(csDeviceDetails.getDevType())) {
@ -466,4 +478,75 @@ public class BackChangeServiceImpl implements BackChangeService {
}
return AjaxResult.success("审核成功");
}
private String createRepairTask(List<BackCsDeviceDetails> devDetailsList){
try {
//在此处将需要维修的设备生成一个维修单
List<ToBeRepair> toBeRepairList = new ArrayList<>();
for (BackCsDeviceDetails csDeviceDetails : devDetailsList){
if ("1".equals(csDeviceDetails.getIsRepair())){
ToBeRepair toBeRepair = new ToBeRepair();
toBeRepair.setCode(csDeviceDetails.getDevCode());
toBeRepair.setDevType(csDeviceDetails.getDevType());
toBeRepair.setRepairNum(csDeviceDetails.getRealNum());
toBeRepair.setTypeId(csDeviceDetails.getTypeId()+ "");
toBeRepairList.add(toBeRepair);
}
}
//如果有需要维修的设备
if (toBeRepairList.size() > 0){
//创建维修任务
String userName = SecurityUtils.getLoginUser().getSysUser().getNickName();
Long changeId = addRepairTask(userName);
//保存明细
for (ToBeRepair toBeRepair : toBeRepairList){
toBeRepair.setChangeId(changeId);
toBeRepair.setCreateUser(userName);
repairMapper.addRepairData(toBeRepair);
}
}
return "1";
} catch (Exception e) {
log.error(e.getMessage());
return "-1";
}
}
/**
* 创建维修任务
*/
private Long addRepairTask(String username) throws Exception {
int maxOrder = repairMapper.getMonthMaxOrderByDate(
DateUtils.getCurrentYear(),
DateUtils.getCurrentMonth(),
TypeEnums.TM_TASK_REPAIR.getTaskTypeId()
);
String code = genderRepairTaskCode(maxOrder);
CsDeviceInfo deviceInfo = new CsDeviceInfo();
deviceInfo.setType("4");
deviceInfo.setCode(code);
deviceInfo.setReviewStatus("5");
deviceInfo.setCreateUser(username);
deviceInfo.setCompanyId(SecurityUtils.getLoginUser().getSysUser().getDeptId());
int result = repairMapper.addDeviceChange(deviceInfo);
if (result < 1) {
throw new Exception("添加任务失败");
}
return deviceInfo.getId();
}
/**
* 生成维修任务编号
* @param thisMonthMaxOrder
* @return
*/
private String genderRepairTaskCode(int thisMonthMaxOrder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date nowDate = DateUtils.getNowDate();
String format = dateFormat.format(nowDate);
String result = format.replace("-", "");
return TypeConstants.REPAIR_TASK_TYPE_LABEL + result + String.format("-%04d", thisMonthMaxOrder + 1);
}
}

View File

@ -147,4 +147,7 @@ public class ToBeRepair {
@ApiModelProperty(value = "所属公司id")
private Long companyId;
@ApiModelProperty(value = "是否是审核")
private int isAudit;
}

View File

@ -142,4 +142,39 @@ public interface RepairMapper {
* @return
*/
int auditInfoById(ToBeRepair info);
/**
* 物理删除设备详情信息
* @param bean
* @return
*/
int physicalDeletionDetailsByChangeId(ToBeRepair bean);
/**
* 更新任务状态
* @param bean
* @return
*/
int updateStatusById(ToBeRepair bean);
/**
* 更新设备状态
* @param detail
* @return
*/
int updateDevStatus(ToBeRepair detail);
/**
* 获取设备详情信息
* @param detail
* @return
*/
int updateToolStatus(ToBeRepair detail);
/**
* 获取设备详情信息
* @param detail
* @return
*/
int updateToolNum(ToBeRepair detail);
}

View File

@ -74,9 +74,33 @@ public class RepairServiceImpl implements RepairService {
}
String username = getCurrentUsername();
// 1. 创建维修任务
Long changeId = createRepairTask(username);
Long changeId;
if (bean.getChangeId()==null){
// 1. 创建维修任务
changeId = createRepairTask(username);
//将申请的设备状态都改为维修
for (ToBeRepair detail : list){
if ("编码管理".equals(detail.getManageMode()) && !StringHelper.isNullOrEmptyString(detail.getCode())){
//1如果是编码管理将设备状态改为维修状态
if ("装备".equals(detail.getType())){
int re1 = mapper.updateDevStatus(detail);
} else if ("工具".equals(detail.getType())){
int re2 = mapper.updateToolStatus(detail);
}
} else if ("数量管理".equals(detail.getManageMode())){
//目前数量管理的设备都是工具
//将在库数量减掉增加维修数量
int re3 = mapper.updateToolNum(detail);
}
}
} else {
//退料维修任务提交
changeId = bean.getChangeId();
//清除旧数据
int res = mapper.physicalDeletionDetailsByChangeId(bean);
//修改主表任务为待审核
int re = mapper.updateStatusById(bean);
}
// 2. 保存明细
for (ToBeRepair detail : list) {
processRepairDetail(detail, changeId, username);

View File

@ -137,6 +137,33 @@
review_time=NOW()
where id = #{changeId}
</update>
<update id="updateStatusById">
update cs_device_change
set review_status = '0',
update_time = NOW()
where id = #{changeId}
</update>
<update id="updateDevStatus">
update ma_dev_info
set ma_status ='5'
where type_id = #{typeId}
and `code` = #{code}
</update>
<update id="updateToolStatus">
update tool_ledger
set status = '2'
where type_id = #{typeId}
and tool_code = #{code}
</update>
<update id="updateToolNum">
update tool_ledger
set available_num=available_num - #{repairNum},
repair_num=repair_num + #{repairNum}
where type_id = #{typeId}
</update>
<delete id="physicalDeletionDetailsByChangeId">
delete from cs_device_change_details where change_id = #{changeId}
</delete>
<select id="selectToBeRepairList" resultType="com.bonus.material.repair.domain.ToBeRepair">
SELECT
@ -166,8 +193,8 @@
LEFT JOIN tool_type tt4 on tt4.type_id = tt5.parent_id
LEFT JOIN tool_type tt3 on tt3.type_id = tt4.parent_id
LEFT JOIN tool_type tt2 on tt2.type_id = tt3.parent_id
WHERE ((tl.manage_mode = '1' AND tl.repair_num IS NOT NULL AND tl.repair_num > 0)
OR (tl.manage_mode = '0' AND tl.`status` = '2'))
WHERE ((tl.manage_mode = '1' AND tl.available_num IS NOT NULL AND tl.available_num > 0)
OR (tl.manage_mode = '0' AND tl.`status` = '0'))
<if test="manageType != null and manageType!=''">
AND tl.manage_mode = #{manageType}
</if>
@ -186,6 +213,7 @@
<if test='devType == "1"'>
AND 1=0
</if>
HAVING tobeRepairNum > 0
UNION
@ -206,7 +234,7 @@
LEFT JOIN ma_type mt4 on mt4.type_id = mt5.parent_id
LEFT JOIN ma_type mt3 on mt3.type_id = mt4.parent_id
LEFT JOIN ma_type mt2 on mt2.type_id = mt3.parent_id
WHERE mdi.ma_status = '5'
WHERE mdi.ma_status = '1'
<if test="typeName != null and typeName!=''">
AND mdi.device_name like concat('%',#{typeName},'%')
</if>
@ -260,6 +288,9 @@
<if test="companyId != null">
and cdc.company_id = #{companyId}
</if>
<if test="isAudit==1">
and cdc.review_status !='5'
</if>
GROUP BY cdc.id
ORDER BY cdc.create_time DESC
</select>