问题修改

This commit is contained in:
jiang 2025-10-10 21:51:34 +08:00
parent 015a44309e
commit a1d5f3ac04
6 changed files with 112 additions and 36 deletions

View File

@ -188,4 +188,10 @@ public class DevInfoVo extends DevInfo {
private String devName;
private String devModel;
private String orderNumber;
private String createUser;
private String status;
private String csId;
}

View File

@ -41,5 +41,7 @@ public class DevMergeVo {
private int reject;
private String orderNumber;
}

View File

@ -35,6 +35,11 @@ public interface DevMergeMapper {
Integer addOrder(DevMergeVo o);
/**
* 查询今天生成的单号数量
*/
int selectTodayOrderCount();
void insertOrderDevReal(@Param("orderId") String orderId, @Param("maId") Long maId);
Integer submitOrder(DevMergeVo o);

View File

@ -209,4 +209,43 @@ public class DevMergeServiceImpl implements DevMergeService {
return AjaxResult.error();
}
}
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyMMdd");
private static final String SEPARATOR = "-";
private static final int SEQUENCE_LENGTH = 4;
/**
* 生成带前缀的单号
* 格式251001-0001
*/
public String generate() {
// 获取今天的日期部分
String datePart = LocalDate.now().format(DATE_FORMATTER);
// 查询今天已生成的单号数量
int todayCount = devMergeMapper.selectTodayOrderCount();
// 下一个序列号 = 今天数量 + 1
int nextSequence = todayCount + 1;
// 格式化序列号
String sequencePart = formatSequence(nextSequence);
// 构建完整单号
return datePart + SEPARATOR + sequencePart;
}
/**
* 格式化序列号
*/
private String formatSequence(int sequence) {
if (sequence < 1 || sequence > 9999) {
throw new IllegalArgumentException("序列号必须在 1-9999 范围内");
}
return String.format("%0" + SEQUENCE_LENGTH + "d", sequence);
}
}

View File

@ -209,6 +209,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
d.type_id as typeId,
d.check_date as checkDate,
d.check_cycle as checkCycle,
mtv.proType,
mtv.mainGx,
mtv.childGx,
mtv.devCategory,
mtv.devSubcategory,
mtv.devName,
mtv.devModel,
mtv.unit_name,
mt4.type_name as typeName,
mt4.unit_name as unitName,
mt4.manage_type as manageType,
@ -245,6 +253,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN sys_dept sd ON d.own_co = sd.dept_id
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
LEFT JOIN ma_hot_search h ON d.ma_id = h.ma_id
LEFT JOIN ma_type_view mtv ON mtv.typeId = d.type_id
LEFT JOIN ma_type mt4 ON mt4.type_id = d.type_id and mt4.del_flag = '0'
LEFT JOIN ma_type mt3 ON mt3.type_id = mt4.parent_id and mt3.del_flag = '0'
LEFT JOIN ma_type mt2 ON mt2.type_id = mt3.parent_id and mt2.del_flag = '0'

View File

@ -11,6 +11,7 @@
aaa.create_time AS createTime,
aaa.status AS status,
COUNT(bbb.dev_id) AS devCount,
aaa.order_number AS orderNumber,
SUM(CASE WHEN mdi.entry_status = 1 THEN 1 ELSE 0 END) AS agree,
SUM(CASE WHEN mdi.entry_status = 2 THEN 1 ELSE 0 END) AS reject
FROM
@ -21,15 +22,18 @@
<if test="status != null and status != ''">
and aaa.status = #{status}
</if>
GROUP BY
aaa.id
ORDER BY aaa.status DESC
</select>
<select id="devList" resultType="com.bonus.material.device.domain.vo.DevInfoVo">
SELECT
cdrd.cs_id AS csId,
cds.order_number AS orderNumber,
cds.create_user AS createUser,
cds.create_time AS createTime,
cds.status AS status,
mtv.proType,
mtv.mainGx,
mtv.childGx,
@ -55,35 +59,24 @@
d.own_co as companyId,
sd.dept_name as companyName,
c.operate_address as operateAddress,
d.entry_status AS entryStatus
FROM
cs_device_real_dev cdrd
LEFT JOIN ma_dev_info d ON cdrd.dev_id = d.ma_id
d.entry_status AS entryStatus,
d.buy_price AS buyPrice
FROM cs_device_real_dev cdrd
LEFT JOIN ma_dev_info d ON cdrd.dev_id = d.ma_id AND d.is_active = '1'
LEFT JOIN cs_device_status cds ON cdrd.cs_id = cds.id
LEFT JOIN sys_dept sd ON d.own_co = sd.dept_id
LEFT JOIN bm_company_info c ON sd.dept_id = c.company_id
LEFT JOIN ma_type_view mtv ON mtv.typeId = d.type_id
<where>
d.is_active='1' and cdrd.cs_id = #{orderId}
<if test="keyWord != null and keyWord != ''">
and (
locate(#{keyWord},mtv.mainGx) > 0
or locate(#{keyWord},mtv.childGx) > 0
or locate(#{keyWord},mtv.devCategory) > 0
or locate(#{keyWord},mtv.devSubcategory) > 0
or locate(#{keyWord},mtv.devName) > 0
or locate(#{keyWord},mtv.devModel) > 0
or locate(#{keyWord},c.company_name) > 0
or locate(#{keyWord},d.device_name) > 0
or locate(#{keyWord},d.identify_code) > 0
)
<if test="orderId != null and orderId != ''">
and cdrd.cs_id = #{orderId}
</if>
</where>
</select>
<insert id="addOrder" useGeneratedKeys="true" keyProperty="id">
INSERT INTO cs_device_status (create_user)
VALUES (#{createUser})
INSERT INTO cs_device_status (create_user, order_number)
VALUES (#{createUser}, #{orderNumber})
</insert>
<insert id="insertOrderDevReal">
@ -150,7 +143,7 @@
AND t1.parent_id IS NULL -- 确保t1是一级类型
AND t2.del_flag = '0';
</select>
<select id="getFourthToSixthLevelTypes" resultType="java.util.Map">
-- 根据三级类型ID查询四、五、六级类型
-- 假设三级类型ID为300实际使用时替换为具体的三级类型ID
@ -169,11 +162,10 @@
</select>
<select id="getSecondToFifthLevelTypes" resultType="java.util.Map">
-- MySQL 5.x兼容版本查询二至五级类型
SELECT
t.type_id AS value,
t.level,
t.type_name AS label,
t.parent_id AS parentId
SELECT t.type_id AS value,
t.level,
t.type_name AS label,
t.parent_id AS parentId
FROM ma_type t1
-- 二级:直接子节点
LEFT JOIN ma_type t2 ON t1.type_id = t2.parent_id AND t2.del_flag = '0'
@ -184,17 +176,40 @@
-- 五级:四级的子节点
LEFT JOIN ma_type t5 ON t4.type_id = t5.parent_id AND t5.del_flag = '0'
-- 合并所有层级结果
JOIN (
SELECT type_id FROM ma_type WHERE parent_id = #{firstLevelId} AND del_flag = '0' -- 二级
UNION
SELECT t3.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id WHERE t2.parent_id = #{firstLevelId} AND t3.del_flag = '0' -- 三级
UNION
SELECT t4.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id JOIN ma_type t4 ON t3.type_id = t4.parent_id WHERE t2.parent_id = #{firstLevelId} AND t4.del_flag = '0' -- 四级
UNION
SELECT t5.type_id FROM ma_type t2 JOIN ma_type t3 ON t2.type_id = t3.parent_id JOIN ma_type t4 ON t3.type_id = t4.parent_id JOIN ma_type t5 ON t4.type_id = t5.parent_id WHERE t2.parent_id = #{firstLevelId} AND t5.del_flag = '0' -- 五级
JOIN (SELECT type_id
FROM ma_type
WHERE parent_id = #{firstLevelId}
AND del_flag = '0' -- 二级
UNION
SELECT t3.type_id
FROM ma_type t2
JOIN ma_type t3 ON t2.type_id = t3.parent_id
WHERE t2.parent_id = #{firstLevelId}
AND t3.del_flag = '0' -- 三级
UNION
SELECT t4.type_id
FROM ma_type t2
JOIN ma_type t3 ON t2.type_id = t3.parent_id
JOIN ma_type t4 ON t3.type_id = t4.parent_id
WHERE t2.parent_id = #{firstLevelId}
AND t4.del_flag = '0' -- 四级
UNION
SELECT t5.type_id
FROM ma_type t2
JOIN ma_type t3 ON t2.type_id = t3.parent_id
JOIN ma_type t4 ON t3.type_id = t4.parent_id
JOIN ma_type t5 ON t4.type_id = t5.parent_id
WHERE t2.parent_id = #{firstLevelId}
AND t5.del_flag = '0' -- 五级
) AS all_levels ON t.type_id = all_levels.type_id
WHERE t1.type_id = #{firstLevelId}
AND t1.parent_id IS NULL -- 确保是一级类型
AND t.del_flag = '0';
</select>
<select id="selectTodayOrderCount" resultType="java.lang.Integer">
SELECT COUNT(*)
FROM cs_device_status
WHERE DATE(create_time) = CURDATE()
AND order_number IS NOT NULL
</select>
</mapper>