问题修改
This commit is contained in:
parent
cbd7538120
commit
2983184263
|
|
@ -11,7 +11,7 @@ import lombok.Getter;
|
|||
@Getter
|
||||
public enum RepairTaskStatusEnum {
|
||||
|
||||
TASK_STATUS_PROCESSING(0, "维修管理--进行中"),
|
||||
TASK_STATUS_PROCESSING(0, "定损--进行中"),
|
||||
TASK_STATUS_COMPLETE(1, "维修管理--已完成"),
|
||||
TASK_STATUS_REJECT(2, "维修管理--驳回退料"),
|
||||
TASK_STATUS_AUDIT_REJECT(3, "维修管理--修饰审核驳回"),
|
||||
|
|
@ -19,7 +19,7 @@ public enum RepairTaskStatusEnum {
|
|||
TASK_STATUS_REVIEW(11, "修饰审核--审核完成"),
|
||||
TASK_STATUS_NO_REVIEW(12, "修饰审核--审核不通过"),
|
||||
SCRAP_UNDER_REVIEW(6, "报废审核--待审核"),
|
||||
TASK_LOSS_ASSESSMENT_COMPLETE(4, "定损完成");
|
||||
TASK_LOSS_ASSESSMENT_COMPLETE(4, "维修--进行中");
|
||||
|
||||
private final Integer status;
|
||||
private final String statusName;
|
||||
|
|
|
|||
|
|
@ -64,8 +64,34 @@ public class LossAssessmentServiceImpl implements LossAssessmentService {
|
|||
@Override
|
||||
public List<RepairTask> getLossAssessmentList(RepairTask bean) {
|
||||
try {
|
||||
Long userId = SecurityUtils.getLoginUser().getUserid();
|
||||
// 首先根据用户名去ma_type_manage表查询是否存在绑定物资信息
|
||||
List<Long> typeIdList = backApplyInfoMapper.selectTypeIdList(userId);
|
||||
if (CollectionUtils.isEmpty(typeIdList)) {
|
||||
bean.setUserId(userId == 0 ? null : userId);
|
||||
}
|
||||
List<RepairTask> list = mapper.getLossAssessmentList(bean);
|
||||
if (CollectionUtil.isNotEmpty(list)) {
|
||||
if (CollectionUtil.isNotEmpty(typeIdList)) {
|
||||
// 使用流过滤符合条件的元素
|
||||
list = list.stream()
|
||||
.filter(item -> {
|
||||
String firstIdStr = item.getFirstId();
|
||||
if (firstIdStr == null) {
|
||||
return false;
|
||||
}
|
||||
// 将逗号分隔的字符串转为集合
|
||||
Set<Long> firstIds = Arrays.stream(firstIdStr.split(","))
|
||||
.map(String::trim)
|
||||
.filter(s -> !s.isEmpty())
|
||||
.map(Long::parseLong)
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
// 判断两个集合是否有交集
|
||||
return firstIds.stream().anyMatch(typeIdList::contains);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
String keyWord = bean.getKeyWord();
|
||||
// 如果关键字不为空,进行过滤
|
||||
if (!StringUtils.isBlank(keyWord)) {
|
||||
|
|
|
|||
|
|
@ -58,6 +58,16 @@ public class PartTypeController extends BaseController
|
|||
return partTypeService.selectPartTypeList(partType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据配件配置管理,以及领用配件数量,查询配件列表
|
||||
*/
|
||||
@ApiOperation(value = "查询配件列表")
|
||||
@GetMapping("/partList")
|
||||
public AjaxResult partList(PartType partType)
|
||||
{
|
||||
return partTypeService.selectPartTypeListNew(partType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据左列表类型id查询右表格
|
||||
*
|
||||
|
|
|
|||
|
|
@ -125,4 +125,11 @@ public interface PartTypeMapper
|
|||
* @return
|
||||
*/
|
||||
PartType getUserName(PartType partType);
|
||||
|
||||
/**
|
||||
* 根据配件配置管理,以及领用配件数量,查询配件列表
|
||||
* @param partType
|
||||
* @return
|
||||
*/
|
||||
List<TreeNode> selectPartTypeListNew(PartType partType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -92,4 +92,11 @@ public interface IPartTypeService
|
|||
* @return
|
||||
*/
|
||||
List<PartType> getMyTypeAndBindUsers(List<PartType> maTypeVos);
|
||||
|
||||
/**
|
||||
* 根据配件配置管理,以及领用配件数量,查询配件列表
|
||||
* @param partType
|
||||
* @return
|
||||
*/
|
||||
AjaxResult selectPartTypeListNew(PartType partType);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,6 +109,23 @@ public class PartTypeServiceImpl implements IPartTypeService
|
|||
return AjaxResult.success(groupList);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AjaxResult selectPartTypeListNew(PartType partType) {
|
||||
List<TreeNode> list = new ArrayList<>();
|
||||
try {
|
||||
String userId = SecurityUtils.getLoginUser().getUserid().toString();
|
||||
partType.setUserId(Long.valueOf(userId));
|
||||
list = partTypeMapper.selectPartTypeListNew(partType);
|
||||
if (CollectionUtils.isNotEmpty(list)){
|
||||
TreeBuild treeBuild = new TreeBuild(list);
|
||||
list = treeBuild.buildTree();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
log.error("配件类型树-查询失败", e);
|
||||
}
|
||||
return AjaxResult.success(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增配件类型管理
|
||||
*
|
||||
|
|
@ -273,4 +290,5 @@ public class PartTypeServiceImpl implements IPartTypeService
|
|||
}
|
||||
return maTypeVos;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ import java.util.List;
|
|||
@Data
|
||||
@ApiModel(value="维修配件")
|
||||
public class RepairPart {
|
||||
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务ID
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -189,4 +189,9 @@ public class RepairTask {
|
|||
|
||||
@ApiModelProperty(value = "一级类型id")
|
||||
private String firstId;
|
||||
|
||||
/**
|
||||
* 数据状态 3-修饰后入库驳回
|
||||
*/
|
||||
private String dataStatus;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -334,4 +334,25 @@ public interface RepairMapper {
|
|||
* @return
|
||||
*/
|
||||
int deleteRepairById(Long id);
|
||||
|
||||
/**
|
||||
* 查询配件数量
|
||||
* @param partId
|
||||
* @return
|
||||
*/
|
||||
int getPartNum(Long partId);
|
||||
|
||||
/**
|
||||
* 获取配件列表
|
||||
* @param partId
|
||||
* @return
|
||||
*/
|
||||
List<RepairPart> getPartList(Long partId);
|
||||
|
||||
/**
|
||||
* 修改配件数量
|
||||
* @param currentPart
|
||||
* @return
|
||||
*/
|
||||
int updatePartNum(RepairPart currentPart);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -878,10 +878,28 @@ public class RepairServiceImpl implements RepairService {
|
|||
.setPartId(Optional.ofNullable(partDetails.getPartId()).orElse(0L));
|
||||
// 添加【维修记录表】
|
||||
repairMapper.addRecord(repairApplyRecord);
|
||||
// 扣减个人库配件库存数量
|
||||
int res = repairMapper.updateStorageNum(partDetails);
|
||||
if (0 == res) {
|
||||
throw new ServiceException("个人配件库存不足");
|
||||
|
||||
//1、查询该附件的库存数量
|
||||
int partNum = repairMapper.getPartNum(partDetails.getPartId());
|
||||
if (partNum >= partDetails.getPartNum()) {
|
||||
//2、查询所有该配件数据,数据根据数量递减,扣除数量
|
||||
List<RepairPart> list = repairMapper.getPartList(partDetails.getPartId());
|
||||
Integer partNums = partDetails.getPartNum();
|
||||
for (int i = 0; i < list.size() && partNums > 0; i++) {
|
||||
RepairPart currentPart = list.get(i);
|
||||
if (currentPart.getPartNum() >= partNums) {
|
||||
// 当前记录数量足够,直接减去全部需要的数量
|
||||
currentPart.setPartNum(currentPart.getPartNum() - partNums);
|
||||
partNums = 0;
|
||||
} else {
|
||||
// 当前记录数量不足,全部减去,并继续下一条记录
|
||||
partNums -= currentPart.getPartNum();
|
||||
}
|
||||
// 更新数据库中的配件数量
|
||||
repairMapper.updatePartNum(currentPart);
|
||||
}
|
||||
} else {
|
||||
throw new ServiceException("配件库存不足");
|
||||
}
|
||||
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -284,7 +284,8 @@
|
|||
0
|
||||
ELSE
|
||||
1
|
||||
END `status`
|
||||
END `status`,
|
||||
rd.`status` as dataStatus
|
||||
FROM
|
||||
repair_apply_details rd
|
||||
LEFT JOIN ma_type mt on rd.type_id = mt.type_id
|
||||
|
|
@ -297,6 +298,9 @@
|
|||
LEFT JOIN bm_project bpi ON bai2.project_id = bpi.pro_id and bpi.del_flag = '0'
|
||||
left join sys_user su on rd.create_by = su.user_id
|
||||
left join sys_user su2 on su2.user_id = rd.repairer
|
||||
<if test="userId != null">
|
||||
JOIN ma_type_repair mtr ON mtr.type_id = rd.type_id AND mtr.user_id = #{userId}
|
||||
</if>
|
||||
where
|
||||
rd.is_ds=1
|
||||
<if test="appTaskStatus !=null">
|
||||
|
|
|
|||
|
|
@ -280,4 +280,94 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
WHERE
|
||||
mp.type_id = #{id}
|
||||
</select>
|
||||
<select id="selectPartTypeListNew" resultType="com.bonus.common.biz.domain.TreeNode">
|
||||
SELECT
|
||||
mpt.pa_id as id,
|
||||
mpt.pa_name as label,
|
||||
mpt.parent_id as parentId,
|
||||
mpt.unit_name as unitName,
|
||||
mpt.buy_price as buyPrice,
|
||||
mpt.`level`,
|
||||
mpt.remark,
|
||||
pps.part_num as storageNum
|
||||
FROM
|
||||
ma_part_type_keeper mpk
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
part_id,
|
||||
SUM(part_num) as part_num
|
||||
FROM
|
||||
pa_person_storage
|
||||
GROUP BY part_id
|
||||
) pps ON pps.part_id = mpk.type_id
|
||||
LEFT JOIN ma_part_type mpt ON mpt.pa_id = mpk.type_id AND mpt.del_flag = '0'
|
||||
WHERE
|
||||
mpk.user_id = #{userId}
|
||||
-- 添加条件:如果level为3,则要求part_num > 0
|
||||
AND (mpt.`level` != 3 OR (mpt.`level` = 3 AND (pps.part_num IS NOT NULL AND pps.part_num > 0)))
|
||||
|
||||
GROUP BY pa_id
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 一级父级
|
||||
SELECT
|
||||
p1.pa_id,
|
||||
p1.pa_name,
|
||||
p1.parent_id,
|
||||
p1.unit_name,
|
||||
p1.buy_price,
|
||||
p1.`level`,
|
||||
p1.remark,
|
||||
NULL AS part_num
|
||||
FROM
|
||||
ma_part_type_keeper mpk
|
||||
JOIN ma_part_type c ON c.pa_id = mpk.type_id AND c.del_flag = '0'
|
||||
JOIN ma_part_type p1 ON p1.pa_id = c.parent_id AND p1.del_flag = '0'
|
||||
WHERE
|
||||
mpk.user_id = #{userId}
|
||||
-- 确保原始部件满足level=3时的part_num条件
|
||||
AND (c.`level` != 3 OR EXISTS (
|
||||
SELECT 1 FROM (
|
||||
SELECT part_id, SUM(part_num) as part_num
|
||||
FROM pa_person_storage
|
||||
GROUP BY part_id
|
||||
) pps
|
||||
WHERE pps.part_id = c.pa_id
|
||||
AND pps.part_num > 0
|
||||
))
|
||||
|
||||
GROUP BY pa_id
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 二级父级(祖父级)
|
||||
SELECT
|
||||
p2.pa_id,
|
||||
p2.pa_name,
|
||||
p2.parent_id,
|
||||
p2.unit_name,
|
||||
p2.buy_price,
|
||||
p2.`level`,
|
||||
p2.remark,
|
||||
NULL AS part_num
|
||||
FROM
|
||||
ma_part_type_keeper mpk
|
||||
JOIN ma_part_type c ON c.pa_id = mpk.type_id AND c.del_flag = '0'
|
||||
JOIN ma_part_type p1 ON p1.pa_id = c.parent_id AND p1.del_flag = '0'
|
||||
JOIN ma_part_type p2 ON p2.pa_id = p1.parent_id AND p2.del_flag = '0'
|
||||
WHERE
|
||||
mpk.user_id = #{userId}
|
||||
-- 确保原始部件满足level=3时的part_num条件
|
||||
AND (c.`level` != 3 OR EXISTS (
|
||||
SELECT 1 FROM (
|
||||
SELECT part_id, SUM(part_num) as part_num
|
||||
FROM pa_person_storage
|
||||
GROUP BY part_id
|
||||
) pps
|
||||
WHERE pps.part_id = c.pa_id
|
||||
AND pps.part_num > 0
|
||||
))
|
||||
GROUP BY pa_id
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -424,7 +424,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<if test="rejectNum != null">
|
||||
#{rejectNum},
|
||||
</if>
|
||||
0,
|
||||
3,
|
||||
<if test="createBy != null and createBy != ''">
|
||||
#{createBy},
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -1005,6 +1005,22 @@
|
|||
WHERE
|
||||
id = #{id}
|
||||
</select>
|
||||
<select id="getPartNum" resultType="java.lang.Integer">
|
||||
SELECT SUM(part_num) as partNum
|
||||
FROM pa_person_storage
|
||||
WHERE part_id = #{partId}
|
||||
GROUP BY part_id
|
||||
</select>
|
||||
<select id="getPartList" resultType="com.bonus.material.repair.domain.RepairPart">
|
||||
SELECT id,
|
||||
part_id AS partId,
|
||||
part_num AS partNum
|
||||
FROM pa_person_storage
|
||||
WHERE part_id = #{partId}
|
||||
AND is_active = '1'
|
||||
AND part_num > 0
|
||||
ORDER BY part_num DESC
|
||||
</select>
|
||||
|
||||
<update id="updateRepairedAndScrapNum">
|
||||
update
|
||||
|
|
@ -1049,4 +1065,12 @@
|
|||
where
|
||||
id = #{id}
|
||||
</update>
|
||||
<update id="updatePartNum">
|
||||
update
|
||||
pa_person_storage
|
||||
set
|
||||
part_num = part_num - #{partNum}
|
||||
where
|
||||
id=#{id}
|
||||
</update>
|
||||
</mapper>
|
||||
|
|
|
|||
Loading…
Reference in New Issue