Merge remote-tracking branch 'origin/master'

This commit is contained in:
sxu 2025-01-16 20:46:50 +08:00
commit 39a952ae4c
6 changed files with 355 additions and 173 deletions

View File

@ -107,7 +107,6 @@ public class SecondaryWarehouseController extends BaseController {
@PostMapping("/exportList")
public void exportList(HttpServletResponse response, @RequestBody SecondaryWarehouse bean) {
if (bean.getLeaseType().equals(0)) {
SecondaryWarehouseVo bean1 = new SecondaryWarehouseVo();
BeanUtils.copyProperties(bean, bean1);
List<SecondaryWarehouseVo> list = service.getList1(bean1);
@ -131,6 +130,37 @@ public class SecondaryWarehouseController extends BaseController {
return toAjax(i);
}
@ApiOperation(value = "获取二级库报废申请列表")
@GetMapping("/getSecondScrapList")
public TableDataInfo getSecondScrapList(SecondCcrapApplyDetails bean) {
startPage();
List<SecondCcrapApplyDetails> list = service.getSecondScrapList(bean);
return getDataTable(list);
}
@ApiOperation(value = "获取二级库报废申请列表详情(查看)")
@GetMapping("/getSecondScrapListDetails")
public TableDataInfo getSecondScrapListDetails(SecondCcrapApplyDetails bean) {
startPage();
List<SecondCcrapApplyDetails> list = service.getSecondScrapListDetails(bean);
return getDataTable(list);
}
@ApiOperation(value = "二级库报废申请")
@PostMapping("/seconfScrap")
public AjaxResult seconfScrap(SecondCcrapApplyDetails bean) {
Integer i = service.seconfScrap(bean);
return toAjax(i);
}
@ApiOperation(value = "二级库报废审核(通过/驳回)")
@PostMapping("/auditSeconfScrap")
public AjaxResult auditSeconfScrap(SecondCcrapApplyDetails bean) {
Integer i = service.auditSeconfScrap(bean);
return toAjax(i);
}
/**
* 获取操作记录
*/

View File

@ -0,0 +1,48 @@
package com.bonus.sgzb.material.domain;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
* @Authorliang.chao
* @Date2025/1/16 - 13:29
*/
@Data
public class SecondCcrapApplyDetails {
private Integer id;
// 报废单号
private String code;
// 机具ID
private String maId;
// 规格ID
private String typeId;
// 报废数量默认值为0
private Integer scrapNum;
// 状态0进行中1已审核2驳回
private Integer status;
// 审核人
private Integer auditBy;
// 审核时间
private Date auditTime;
// 报废申请备注
private String auditRemark;
// 创建者
private String createBy;
// 创建时间
private Date createTime;
// 更新者
private String updateBy;
// 更新时间
private Date updateTime;
// 所属二级库
private Integer unitId;
private Integer type;
private List<TeamLeaseInfo> teamLeaseInfos;
private String unitName;
private String modelName;
private String typeName;
}

View File

@ -79,4 +79,18 @@ public interface SecondaryWarehouseMapper {
Integer selectParentId(TeamLeaseInfo teamLeaseInfo);
List<MaMachine> getDevStockCount(SecondaryWarehouse bean);
List<SecondCcrapApplyDetails> getSecondScrapList(SecondCcrapApplyDetails bean);
Integer secondScrapApplyDetails(SecondCcrapApplyDetails teamLeaseInfo);
Integer auditSeconfScrap(SecondCcrapApplyDetails bean);
List<SecondCcrapApplyDetails> getSeconfScrapByCode(SecondCcrapApplyDetails bean);
Integer updateMaMachineStatus(String maId);
Integer updateDevNum(SecondCcrapApplyDetails secondCcrapApplyDetails);
List<SecondCcrapApplyDetails> getSecondScrapListDetails(SecondCcrapApplyDetails bean);
}

View File

@ -42,4 +42,12 @@ public interface SecondaryWarehouseService {
Integer getDevCount(SecondaryWarehouse bean);
List<MaMachine> getDevStockCount(SecondaryWarehouse bean);
List<SecondCcrapApplyDetails> getSecondScrapList(SecondCcrapApplyDetails bean);
Integer seconfScrap(SecondCcrapApplyDetails bean);
Integer auditSeconfScrap(SecondCcrapApplyDetails bean);
List<SecondCcrapApplyDetails> getSecondScrapListDetails(SecondCcrapApplyDetails bean);
}

View File

@ -152,6 +152,74 @@ public class SecondaryWarehouseServiceImpl implements SecondaryWarehouseService
return mapper.getDevStockCount(bean);
}
@Override
public List<SecondCcrapApplyDetails> getSecondScrapList(SecondCcrapApplyDetails bean) {
return mapper.getSecondScrapList(bean);
}
@Override
public Integer seconfScrap(SecondCcrapApplyDetails teamLeaseInfo) {
teamLeaseInfo.setCreateBy(String.valueOf(SecurityUtils.getLoginUser().getUserid()));
Integer num = 0;
String code = "BF" + System.currentTimeMillis();
if (teamLeaseInfo.getTeamLeaseInfos().size() > 0) {
num = 0;
for (TeamLeaseInfo bean : teamLeaseInfo.getTeamLeaseInfos()) {
// 编码设备
if (StringUtils.isNotBlank(bean.getMaIds())) {
for (String maId : bean.getMaIds().split(",")) {
// 出库
teamLeaseInfo.setMaId(maId);
teamLeaseInfo.setTypeId(bean.getTypeId());
teamLeaseInfo.setScrapNum(1);
teamLeaseInfo.setCode(code);
teamLeaseInfo.setStatus(0);
num = mapper.secondScrapApplyDetails(teamLeaseInfo);
}
} else {
// 数量设备
teamLeaseInfo.setScrapNum(bean.getOutNum());
teamLeaseInfo.setTypeId(bean.getTypeId());
teamLeaseInfo.setMaId(null);
teamLeaseInfo.setCode(code);
teamLeaseInfo.setStatus(0);
num = mapper.secondScrapApplyDetails(teamLeaseInfo);
}
}
}
return num;
}
@Override
public Integer auditSeconfScrap(SecondCcrapApplyDetails bean) {
// 目前先做成统一审核后续如果需要对不同机具单独审核在做修改
int num = 0;
if (bean.getStatus() == 1) {
//同意
num = mapper.auditSeconfScrap(bean);
if (num > 0) {
// 更新设备状态
List<SecondCcrapApplyDetails> list = mapper.getSeconfScrapByCode(bean);
for (SecondCcrapApplyDetails secondCcrapApplyDetails : list) {
if (StringUtils.isNotBlank(secondCcrapApplyDetails.getMaId())) {
mapper.updateMaMachineStatus(secondCcrapApplyDetails.getMaId());
} else {
mapper.updateDevNum(secondCcrapApplyDetails);
}
}
}
} else if (bean.getStatus() == 2) {
//驳回
num = mapper.auditSeconfScrap(bean);
}
return num;
}
@Override
public List<SecondCcrapApplyDetails> getSecondScrapListDetails(SecondCcrapApplyDetails bean) {
return mapper.getSecondScrapListDetails(bean);
}
@Override
public List<SecondaryWarehouse> getList(SecondaryWarehouse bean) {
bean.setLeaseType(1);

View File

@ -30,6 +30,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE
id = #{id}
</update>
<update id="auditSeconfScrap">
UPDATE second_ccrap_apply_details
SET
audit_by = #{auditBy},
audit_time = now(),
status = #{status}
WHERE
code = #{code}
</update>
<update id="updateMaMachineStatus">
UPDATE ma_machine
SET
ma_status = 22
WHERE
ma_id = #{maId}
</update>
<update id="updateDevNum">
UPDATE ma_type
SET
num = num - #{scrapNum}
WHERE
type_id = #{typeId}
</update>
<delete id="delConfig">
DELETE FROM second_lot_config
WHERE
@ -388,35 +411,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where ma_id = #{maId}
</select>
<select id="getUseMaStatusByMaId" resultType="com.bonus.sgzb.base.api.domain.MaMachine">
WITH type_counts AS (
SELECT
rd.ma_id,
SUM(CASE WHEN rd.type = '1' THEN 1 ELSE 0 END) as type1_count,
SUM(CASE WHEN rd.type = '2' THEN 1 ELSE 0 END) as type2_count
FROM
receive_detail rd
WHERE
rd.type IN ('1', '2')
AND rd.team_group_id = #{teamGroupId}
AND rd.unit_id = #{unitId}
GROUP BY
rd.ma_id
),
ranked_details AS (
SELECT
rd.*,
tc.type1_count,
tc.type2_count,
ROW_NUMBER() OVER (PARTITION BY rd.ma_id, rd.type ORDER BY rd.out_num DESC) as rn
FROM
receive_detail rd
JOIN
type_counts tc ON rd.ma_id = tc.ma_id
WHERE
rd.type IN ('1', '2')
AND rd.team_group_id = #{teamGroupId}
AND rd.unit_id = #{unitId}
)
SELECT DISTINCT
mt.type_name modelName,
mt.manage_type manageType,
@ -426,77 +420,82 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mt.unit_name AS nuitName,
SUM(rd.out_num) receiveNum,
GROUP_CONCAT(rd.ma_id) maIds
FROM
ranked_details rd
LEFT JOIN
ma_machine mm ON rd.ma_id = mm.ma_id
LEFT JOIN
ma_type mt ON mt.type_id = mm.type_id
LEFT JOIN
ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE
mm.ma_status = 132
FROM (
SELECT
rd.*,
tc.type1_count,
tc.type2_count,
@rn := IF(@prev_ma_id = rd.ma_id AND @prev_type = rd.type, @rn + 1, 1) AS rn,
@prev_ma_id := rd.ma_id,
@prev_type := rd.type
FROM receive_detail rd,
(SELECT
rd.ma_id,
SUM(CASE WHEN rd.type = '1' THEN 1 ELSE 0 END) as type1_count,
SUM(CASE WHEN rd.type = '2' THEN 1 ELSE 0 END) as type2_count
FROM receive_detail rd
WHERE rd.type IN ('1', '2')
AND rd.team_group_id = #{teamGroupId}
AND rd.unit_id = #{unitId}
GROUP BY rd.ma_id) tc,
(SELECT @prev_ma_id := NULL, @prev_type := NULL, @rn := 0) vars
WHERE rd.type IN ('1', '2')
AND rd.team_group_id = #{teamGroupId}
AND rd.unit_id = #{unitId}
AND rd.ma_id = tc.ma_id
ORDER BY rd.ma_id, rd.type, rd.out_num DESC
) rd
LEFT JOIN ma_machine mm ON rd.ma_id = mm.ma_id
LEFT JOIN ma_type mt ON mt.type_id = mm.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE mm.ma_status = 132
AND ((rd.type = '1' AND rd.rn &lt;= GREATEST(0, rd.type1_count - rd.type2_count))
OR (rd.type = '2' AND rd.rn &lt;= GREATEST(0, rd.type2_count - rd.type1_count)))
GROUP BY
rd.type_id, rd.parent_id UNION
GROUP BY rd.type_id, rd.parent_id
UNION
SELECT DISTINCT
mt.type_name modelName,
mt.manage_type manageType,
mt2.type_name typeName,
rd.type_id typeId,
rd.parent_id as id,
mt.unit_name AS nuitName,
(SUM(CASE WHEN rd.type = '1' THEN rd.out_num ELSE 0 END)
- SUM(CASE WHEN rd.type = '2' THEN rd.out_num ELSE 0 END)) AS receiveNum,
GROUP_CONCAT( rd.ma_id ) maIds
FROM
receive_detail rd
LEFT JOIN ma_type mt ON mt.type_id = rd.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE
rd.type IN ( '1', '2' )
AND rd.team_group_id = #{teamGroupId}
AND rd.ma_id IS NULL
AND rd.unit_id = #{unitId}
AND NOT EXISTS (
SELECT
1
FROM
receive_detail rd2
WHERE
rd2.ma_id = rd.ma_id
AND ((
rd2.type = '1'
AND EXISTS (
SELECT
1
FROM
receive_detail rd3
WHERE
rd3.ma_id = rd.ma_id
AND rd3.type = '2'
AND rd3.type_id = rd2.type_id
AND rd3.team_group_id = rd2.team_group_id
AND rd3.unit_id = rd2.unit_id
))
OR (
rd2.type = '2'
AND EXISTS (
SELECT
1
FROM
receive_detail rd4
WHERE
rd4.ma_id = rd.ma_id
AND rd4.type = '1'
AND rd4.type_id = rd2.type_id
AND rd4.team_group_id = rd2.team_group_id
AND rd4.unit_id = rd2.unit_id
)))
mt.type_name modelName,
mt.manage_type manageType,
mt2.type_name typeName,
rd.type_id typeId,
rd.parent_id as id,
mt.unit_name AS nuitName,
(SUM(CASE WHEN rd.type = '1' THEN rd.out_num ELSE 0 END)
- SUM(CASE WHEN rd.type = '2' THEN rd.out_num ELSE 0 END)) AS receiveNum,
GROUP_CONCAT(rd.ma_id) maIds
FROM receive_detail rd
LEFT JOIN ma_type mt ON mt.type_id = rd.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE rd.type IN ('1', '2')
AND rd.team_group_id = #{teamGroupId}
AND rd.ma_id IS NULL
AND rd.unit_id = #{unitId}
AND NOT EXISTS (
SELECT 1
FROM receive_detail rd2
WHERE rd2.ma_id = rd.ma_id
AND ((rd2.type = '1'
AND EXISTS (
SELECT 1
FROM receive_detail rd3
WHERE rd3.ma_id = rd.ma_id
AND rd3.type = '2'
AND rd3.type_id = rd2.type_id
AND rd3.team_group_id = rd2.team_group_id
AND rd3.unit_id = rd2.unit_id))
OR (rd2.type = '2'
AND EXISTS (
SELECT 1
FROM receive_detail rd4
WHERE rd4.ma_id = rd.ma_id
AND rd4.type = '1'
AND rd4.type_id = rd2.type_id
AND rd4.team_group_id = rd2.team_group_id
AND rd4.unit_id = rd2.unit_id)))
)
GROUP BY
rd.type_id, rd.parent_id
GROUP BY rd.type_id, rd.parent_id
</select>
<select id="getDevCount" resultType="java.lang.Integer">
SELECT
@ -512,37 +511,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE id = #{id}
</select>
<select id="getDevStockCount" resultType="com.bonus.sgzb.base.api.domain.MaMachine">
WITH type_counts AS (
SELECT
rd.ma_id,
SUM( CASE WHEN rd.type = '1' THEN 1 ELSE 0 END ) AS type1_count,
SUM( CASE WHEN rd.type = '2' THEN 1 ELSE 0 END ) AS type2_count
FROM
receive_detail rd
WHERE
rd.type IN ( '1', '2' )
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
GROUP BY
rd.ma_id
),
ranked_details AS (
SELECT
rd.*,
tc.type1_count,
tc.type2_count,
ROW_NUMBER() OVER ( PARTITION BY rd.ma_id, rd.type ORDER BY rd.out_num DESC ) AS rn
FROM
receive_detail rd
JOIN type_counts tc ON rd.ma_id = tc.ma_id
WHERE
rd.type IN ( '1', '2' )
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
) SELECT DISTINCT
SELECT DISTINCT
mt.type_name modelName,
mt.manage_type manageType,
mt2.type_name typeName,
@ -551,33 +521,53 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
rd.parent_id AS id,
slc.name as name,
mt.unit_name AS unitName,
SUM( rd.out_num ) receiveNum,
GROUP_CONCAT( rd.ma_id ) maIds
FROM
ranked_details rd
SUM(rd.out_num) receiveNum,
GROUP_CONCAT(rd.ma_id) maIds
FROM (
SELECT rd.*,
(SELECT type1_count FROM (SELECT tc.ma_id, tc.type1_count FROM (SELECT rd.ma_id,
SUM(CASE WHEN rd.type = '1' THEN 1 ELSE 0 END) AS type1_count,
SUM(CASE WHEN rd.type = '2' THEN 1 ELSE 0 END) AS type2_count
FROM receive_detail rd
WHERE rd.type IN ('1', '2')
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
GROUP BY rd.ma_id) tc WHERE tc.ma_id = rd.ma_id) ttc) AS type1_count,
(SELECT type2_count FROM (SELECT tc.ma_id, tc.type2_count FROM (SELECT rd.ma_id,
SUM(CASE WHEN rd.type = '1' THEN 1 ELSE 0 END) AS type1_count,
SUM(CASE WHEN rd.type = '2' THEN 1 ELSE 0 END) AS type2_count
FROM receive_detail rd
WHERE rd.type IN ('1', '2')
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
GROUP BY rd.ma_id) tc WHERE tc.ma_id = rd.ma_id) ttc) AS type2_count,
@rn := IF(@prev_ma_id = rd.ma_id AND @prev_type = rd.type, @rn + 1, 1) AS rn,
@prev_ma_id := rd.ma_id,
@prev_type := rd.type
FROM receive_detail rd,
(SELECT @prev_ma_id := NULL, @prev_type := NULL, @rn := 0) vars
WHERE rd.type IN ('1', '2')
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
ORDER BY rd.ma_id, rd.type, rd.out_num DESC
) rd
LEFT JOIN team_group tg ON rd.team_group_id = tg.id
left join second_lot_config slc on rd.unit_id = slc.unit_id
LEFT JOIN second_lot_config slc ON rd.unit_id = slc.unit_id
LEFT JOIN ma_machine mm ON rd.ma_id = mm.ma_id
LEFT JOIN ma_type mt ON mt.type_id = mm.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE
mm.ma_status = 132
WHERE mm.ma_status = 132
<if test="keyword != null and keyword != ''">
AND tg.NAME like concat('%', #{keyword}, '%')
AND tg.NAME LIKE CONCAT('%', #{keyword}, '%')
</if>
AND ((
rd.type = '1'
AND rd.rn &lt;= GREATEST( 0, rd.type1_count - rd.type2_count ))
AND ((rd.type = '1' AND rd.rn &lt;= GREATEST(0, rd.type1_count - rd.type2_count))
OR (rd.type = '2' AND rd.rn &lt;= GREATEST(0, rd.type2_count - rd.type1_count)))
GROUP BY rd.type_id, rd.parent_id
OR (
rd.type = '2'
AND rd.rn &lt;= GREATEST( 0, rd.type2_count - rd.type1_count )))
GROUP BY
rd.type_id,
rd.parent_id
union
UNION
SELECT DISTINCT
mt.type_name modelName,
@ -590,38 +580,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mt.unit_name AS nuitName,
(SUM(CASE WHEN rd.type = '1' THEN rd.out_num ELSE 0 END)
- SUM(CASE WHEN rd.type = '2' THEN rd.out_num ELSE 0 END)) AS receiveNum,
GROUP_CONCAT( rd.ma_id ) maIds
FROM
receive_detail rd
GROUP_CONCAT(rd.ma_id) maIds
FROM receive_detail rd
LEFT JOIN team_group tg ON rd.team_group_id = tg.id
left join second_lot_config slc on rd.unit_id = slc.unit_id
LEFT JOIN second_lot_config slc ON rd.unit_id = slc.unit_id
LEFT JOIN ma_type mt ON mt.type_id = rd.type_id
LEFT JOIN ma_type mt2 ON mt2.type_id = mt.parent_id
WHERE
rd.type IN ( '1', '2' )
WHERE rd.type IN ('1', '2')
AND rd.ma_id IS NULL
<if test="keyword != null and keyword != ''">
AND tg.NAME like concat('%', #{keyword}, '%')
AND tg.NAME LIKE CONCAT('%', #{keyword}, '%')
</if>
<if test="unitId != null">
AND rd.unit_id = #{unitId}
</if>
AND NOT EXISTS (
SELECT
1
FROM
receive_detail rd2
WHERE
rd2.ma_id = rd.ma_id
SELECT 1
FROM receive_detail rd2
WHERE rd2.ma_id = rd.ma_id
AND ((
rd2.type = '1'
AND EXISTS (
SELECT
1
FROM
receive_detail rd3
WHERE
rd3.ma_id = rd.ma_id
SELECT 1
FROM receive_detail rd3
WHERE rd3.ma_id = rd.ma_id
AND rd3.type = '2'
AND rd3.type_id = rd2.type_id
AND rd3.team_group_id = rd2.team_group_id
@ -630,20 +612,48 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
OR (
rd2.type = '2'
AND EXISTS (
SELECT
1
FROM
receive_detail rd4
WHERE
rd4.ma_id = rd.ma_id
SELECT 1
FROM receive_detail rd4
WHERE rd4.ma_id = rd.ma_id
AND rd4.type = '1'
AND rd4.type_id = rd2.type_id
AND rd4.team_group_id = rd2.team_group_id
AND rd4.unit_id = rd2.unit_id
)))
)
GROUP BY rd.type_id, rd.parent_id
</select>
<select id="getSecondScrapList" resultType="com.bonus.sgzb.material.domain.SecondCcrapApplyDetails">
SELECT
ssd.*,
slc.NAME AS unitName
FROM
second_scrap_apply_details ssd
LEFT JOIN second_lot_config slc ON ssd.unit_id = slc.unit_id
where 1=1
<if test="unitId != null">
AND ssd.unit_id = #{unitId}
</if>
<if test="code != null and code !=''">
AND ssd.code like concat('%', #{code}, '%')
</if>
GROUP BY
rd.type_id, rd.parent_id
ssd.CODE
</select>
<select id="getSeconfScrapByCode" resultType="com.bonus.sgzb.material.domain.SecondCcrapApplyDetails">
select * from second_scrap_apply_details where code = #{code}
</select>
<select id="getSecondScrapListDetails" resultType="com.bonus.sgzb.material.domain.SecondCcrapApplyDetails">
select
ssd.*,
mt.type_name AS modelName,
mt2.type_name AS typeName
from
second_scrap_apply_details ssd
left join ma_type mt on ssd.type_id = mt.type_id
left join ma_type mt2 on mt.parent_id = mt2.type_id
where
ssd.code = #{code}
</select>
<insert id="addConfig">
@ -661,4 +671,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="addNum">
update ma_type set num = num + #{outNum} where type_id = #{typeId}
</insert>
<insert id="secondScrapApplyDetails">
insert into second_scrap_apply_details (code,ma_id,type_id,scrap_num,create_by,create_time,unit_id,status,audit_remark)
values (#{code},#{maId},#{typeId},#{scrapNum},#{createBy},now(),#{unitId},#{status},#{auditRemark});
</insert>
</mapper>