维修--修饰审核--字典引入、逻辑优化、SQL优化

This commit is contained in:
syruan 2024-11-14 17:37:57 +08:00
parent fc797a22f3
commit 6aad1d0d8f
4 changed files with 153 additions and 80 deletions

View File

@ -57,6 +57,9 @@ public class MaterialConstants {
/** 领料单号的开头字母 */
public static final String LEASE_TASK_TYPE_LABEL = "L";
/** 维修单号的开头字母 */
public static final String REPAIR_TASK_TYPE_LABEL = "WX";
public static final String INNER_PROTOCAL = "1"; //内部单位协议
public static final String OUTER_PROTOCAL = "2"; //外部单位协议

View File

@ -1,6 +1,8 @@
package com.bonus.material.repair.mapper;
import java.util.List;
import java.util.Map;
import com.bonus.material.repair.domain.RepairAuditDetails;
import com.bonus.material.repair.domain.RepairPart;
import com.bonus.material.repair.domain.RepairRecord;
@ -76,11 +78,25 @@ public interface RepairAuditDetailsMapper {
List<ScrapApplyDetailsVO> selectRepairQuestList(RepairAuditDetails repairAuditDetails);
/**
* 根据taskId查询单个规格名称---单个
* @param taskId 任务id
*/
String selectTypeNameByTaskId(Long taskId);
/**
* 根据taskIds批量查询规格名称---批量
* @param taskIds 任务id集合
*/
Map<Long, String> selectTypeNamesByTaskIds(List<Long> taskIds);
List<RepairAuditDetails> selectRepairAuditDetailsByTaskId(Long taskId);
List<RepairAuditDetails> selectnotAuditByTaskId(Long taskId);
/**
* 根据taskId查询未审核的数据
* @param taskId 任务id
*/
List<RepairAuditDetails> selectNotAuditByTaskId(Long taskId);
List<RepairAuditDetails> selectRepairInputByTaskId(Long taskId);

View File

@ -1,11 +1,10 @@
package com.bonus.material.repair.service.impl;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
import com.bonus.common.biz.constant.MaterialConstants;
import com.bonus.common.biz.enums.RepairTaskStatusEnum;
import com.bonus.common.biz.enums.TmTaskTypeEnum;
import com.bonus.common.core.exception.ServiceException;
@ -100,13 +99,37 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
*/
@Override
public List<ScrapApplyDetailsVO> selectRepairQuestList(RepairAuditDetails repairAuditDetails) {
List<ScrapApplyDetailsVO> repairQuestList = repairAuditDetailsMapper.selectRepairQuestList(repairAuditDetails);
for (ScrapApplyDetailsVO scrapApplyDetailsVO : repairQuestList) {
Long taskId = scrapApplyDetailsVO.getTaskId();
String typeName = repairAuditDetailsMapper.selectTypeNameByTaskId(taskId);
scrapApplyDetailsVO.setItemType(typeName);
try {
// 获取所有需要查询的 taskId过滤空的
List<ScrapApplyDetailsVO> repairQuestList = repairAuditDetailsMapper.selectRepairQuestList(repairAuditDetails);
// 通过流过滤掉空对象 并转换为 List集合
List<Long> taskIds = repairQuestList.stream()
.filter(Objects::nonNull) // 过滤掉空的 ScrapApplyDetailsVO 对象
.map(ScrapApplyDetailsVO::getTaskId)
.filter(Objects::nonNull) // 过滤掉空的 taskId
.distinct()
.collect(Collectors.toList());
// 批量查询 typeName
Map<Long, String> typeNameMap = repairAuditDetailsMapper.selectTypeNamesByTaskIds(taskIds);
// 设置 itemType
for (ScrapApplyDetailsVO scrapApplyDetailsVO : repairQuestList) {
Long taskId = scrapApplyDetailsVO.getTaskId();
if (taskId != null) {
String typeName = typeNameMap.get(taskId);
if (typeName != null) {
scrapApplyDetailsVO.setItemType(typeName);
}
}
}
return repairQuestList;
} catch (Exception e) {
// 异常处理
e.printStackTrace();
throw new ServiceException("Failed to get repair quest list" + e.getMessage());
}
return repairQuestList;
}
/**
@ -124,13 +147,13 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
Integer b = 0;
for (Long taskId : taskIdList) {
char status;
TmTask task1 = taskMapper.selectTmTaskByTaskId(taskId);
if (task1.getTaskStatus() == 47) {
TmTask tmTask = taskMapper.selectTmTaskByTaskId(taskId);
if (tmTask.getTaskStatus() == 47) {
throw new Exception("任务已审核已通过");
}
List<RepairAuditDetails> auditAllList = repairAuditDetailsMapper.selectRepairAuditDetailsByTaskId(taskId);
List<RepairAuditDetails> notAuditList = repairAuditDetailsMapper.selectnotAuditByTaskId(taskId);
List<RepairAuditDetails> notAuditList = repairAuditDetailsMapper.selectNotAuditByTaskId(taskId);
// 查询协议表
TmTaskAgreement tmTaskAgreement = agreementMapper.selectTmTaskAgreementByTaskId(taskId);
String taskCode;
@ -231,16 +254,16 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
// 修饰审核通过时改修任务为已通过审核
if (auditDetailList != null) {
if (auditDetailList.size() == notAuditList.size()) {
task1.setTaskStatus(47);
tmTask.setTaskStatus(47);
}
} else if (auditAllList != null) {
if (auditAllList.size() == notAuditList.size()) {
task1.setTaskStatus(47);
tmTask.setTaskStatus(47);
}
}
task1.setUpdateTime(new Date());
task1.setUpdateBy(String.valueOf(SecurityUtils.getLoginUser().getUserid()));
taskMapper.updateTmTask(task1);
tmTask.setUpdateTime(new Date());
tmTask.setUpdateBy(String.valueOf(SecurityUtils.getLoginUser().getUserid()));
taskMapper.updateTmTask(tmTask);
} else {
status = 2;
List<RepairAuditDetails> repairDetailList = new ArrayList<>();
@ -253,7 +276,7 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
if (repairDetailList.get(0).getCompanyId() != null) {
companyId = repairDetailList.get(0).getCompanyId();
}
taskCode = purchaseCodeRule("WX", 41);
taskCode = purchaseCodeRule(MaterialConstants.REPAIR_TASK_TYPE_LABEL, 41);
taskStatus = 43;
taskType = 41;
long inputTaskId = genTask(taskCode, taskType, taskStatus, tmTaskAgreement, companyId);
@ -275,15 +298,15 @@ public class RepairAuditDetailsServiceImpl implements IRepairAuditDetailsService
}
}
// 修饰审核任务不通过时
TmTask tmTask = new TmTask();
tmTask.setTaskId(taskId);
tmTask.setRemark(scrapAudit.getRemark());
TmTask tmTaskNotExam = new TmTask();
tmTaskNotExam.setTaskId(taskId);
tmTaskNotExam.setRemark(scrapAudit.getRemark());
if (repairDetailList.size() == notAuditList.size()) {
tmTask.setTaskStatus(48);
tmTaskNotExam.setTaskStatus(48);
}
tmTask.setUpdateTime(new Date());
tmTask.setUpdateBy(String.valueOf(SecurityUtils.getLoginUser().getUserid()));
taskMapper.updateTmTask(tmTask);
tmTaskNotExam.setUpdateTime(new Date());
tmTaskNotExam.setUpdateBy(String.valueOf(SecurityUtils.getLoginUser().getUserid()));
taskMapper.updateTmTask(tmTaskNotExam);
}
if (scrapAudit.getAuditDetailList() != null && scrapAudit.getAuditDetailList().size() > 0) {
if (auditDetailList != null) {

View File

@ -25,7 +25,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectRepairAuditDetailsVo">
select id, task_id, repair_id, ma_id, type_id, repair_num, repaired_num, scrap_num, audit_by, audit_time, audit_remark, status, create_by, create_time, update_by, update_time, remark, company_id from repair_audit_details
select id, task_id, repair_id, ma_id, type_id, repair_num, repaired_num, scrap_num, audit_by, audit_time,
audit_remark, status, create_by, create_time, update_by, update_time, remark, company_id
from repair_audit_details
</sql>
<select id="selectRepairAuditDetailsList" parameterType="com.bonus.material.repair.domain.RepairAuditDetails" resultMap="RepairAuditDetailsResult">
@ -41,7 +43,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="auditBy != null "> and audit_by = #{auditBy}</if>
<if test="auditTime != null "> and audit_time = #{auditTime}</if>
<if test="auditRemark != null and auditRemark != ''"> and audit_remark = #{auditRemark}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
<if test="status != null and status != ''"> and `status` = #{status}</if>
<if test="companyId != null "> and company_id = #{companyId}</if>
</where>
</select>
@ -52,34 +54,40 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getRepairId" resultType="com.bonus.material.repair.domain.RepairAuditDetails">
select task_id as taskId,
ma_id as maId,
type_id as typeId
from repair_apply_details
where id = #{repairId}
select
task_id as taskId,
ma_id as maId,
type_id as typeId
from
repair_apply_details
where
id = #{repairId}
</select>
<select id="getPartRecord" resultType="com.bonus.material.repair.domain.RepairPart">
select concat(mpt2.pa_name,'-',mpt1.pa_name,'-',mpt.pa_name) as partName,
rpd.part_num as partNum,
rpd.part_cost as partCost,
rpd.part_type as partType,
rpd.remark as remark,
rpd.repair_content as repairContent
from repair_part_details rpd
select
concat(mpt2.pa_name,'-',mpt1.pa_name,'-',mpt.pa_name) as partName,
rpd.part_num as partNum,
rpd.part_cost as partCost,
rpd.part_type as partType,
rpd.remark as remark,
rpd.repair_content as repairContent
from
repair_part_details rpd
left join ma_part_type mpt on mpt.pa_id = rpd.part_id
left join ma_part_type mpt1 on mpt1.pa_id = mpt.parent_id
left join ma_part_type mpt2 on mpt2.pa_id = mpt1.parent_id
where 1=1
<if test="taskId != null and taskId != ''">
and rpd.task_id = #{taskId}
</if>
<if test="maId != null and maId != ''">
and rpd.ma_id = #{maId}
</if>
<if test="typeId != null and typeId != ''">
and rpd.type_id = #{typeId}
</if>
<where>
<if test="taskId != null and taskId != ''">
and rpd.task_id = #{taskId}
</if>
<if test="maId != null and maId != ''">
and rpd.ma_id = #{maId}
</if>
<if test="typeId != null and typeId != ''">
and rpd.type_id = #{typeId}
</if>
</where>
</select>
<select id="exportRepairQuestList" resultType="com.bonus.material.repair.domain.vo.RepairAuditDetailsVO">
@ -141,33 +149,38 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="getRepairRecord" resultType="com.bonus.material.repair.domain.RepairRecord">
select repair_num as repairNum,
scrap_num as scrapNum,
repair_type as repairType,
scrap_reason as scrapReason,
scrap_type as scrapType,
msi.supplier as supplier,
part_num as partNum,
part_price as partPrice,
repair_content as repairContent,
part_type as partType,
part_name as partName,
file_ids as fileIds,
su.nick_name as repairer,
rar.remark
from repair_apply_record rar
left join ma_supplier_info msi on msi.supplier_id = rar.supplier_id
left join sys_user su on su.user_id = rar.repairer
where 1=1
<if test="taskId != null and taskId != ''">
and rar.task_id = #{taskId}
</if>
<if test="maId != null and maId != ''">
and rar.ma_id = #{maId}
</if>
<if test="typeId != null and typeId != ''">
and rar.type_id = #{typeId}
</if>
select
repair_num as repairNum,
scrap_num as scrapNum,
repair_type as repairType,
scrap_reason as scrapReason,
scrap_type as scrapType,
msi.supplier as supplier,
part_num as partNum,
part_price as partPrice,
repair_content as repairContent,
part_type as partType,
part_name as partName,
file_ids as fileIds,
su.nick_name as repairer,
rar.remark
from
repair_apply_record rar
left join
ma_supplier_info msi on msi.supplier_id = rar.supplier_id
left join
sys_user su on su.user_id = rar.repairer
<where>
<if test="taskId != null and taskId != ''">
and rar.task_id = #{taskId}
</if>
<if test="maId != null and maId != ''">
and rar.ma_id = #{maId}
</if>
<if test="typeId != null and typeId != ''">
and rar.type_id = #{typeId}
</if>
</where>
</select>
<insert id="insertRepairAuditDetails" parameterType="com.bonus.material.repair.domain.RepairAuditDetails" useGeneratedKeys="true" keyProperty="id">
@ -316,9 +329,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where task_id = #{taskId}
</select>
<select id="selectnotAuditByTaskId" resultMap="RepairAuditDetailsResult">
<select id="selectNotAuditByTaskId" resultMap="RepairAuditDetailsResult">
<include refid="selectRepairAuditDetailsVo"/>
where task_id = #{taskId} and rd.STATUS = '0'
where task_id = #{taskId} and `status` = '0'
</select>
<select id="selectRepairInputByTaskId" resultMap="RepairAuditDetailsResult">
@ -435,4 +448,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateRecodeStatus">
update repair_apply_record set status = 1,update_time = now() where id = #{id}
</update>
<select id="selectTypeNamesByTaskIds" resultType="java.util.Map">
<if test="taskIds != null and taskIds.size() > 0">
select
task_id, GROUP_CONCAT(type_name) as typeName
from
(select distinct rad.task_id, mt1.type_name
from repair_audit_details rad
left join ma_type mt on rad.type_id = mt.type_id
left join ma_type mt1 on mt.parent_id = mt1.type_id
where rad.task_id in
<foreach item="taskId" index="index" collection="taskIds" open="(" separator="," close=")">
#{taskId}
</foreach>
) t
GROUP BY task_id
</if>
</select>
</mapper>