项目重构,目前已完成入库操作,追加入库等

This commit is contained in:
2026-01-21 11:44:51 +08:00
parent 14944d2a99
commit 820df3e20a
38 changed files with 4254 additions and 5467 deletions

View File

@@ -1,161 +1,223 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zg.project.wisdom.mapper.RkBillMapper">
<!-- 新增单据主表 -->
<insert id="insertRkBill" parameterType="com.zg.project.wisdom.domain.RkBill">
INSERT INTO rk_bill (
rk_type, wl_type, cangku, rk_time, lihuo_y,
ck_type, ck_time, ck_lihuo_y, ck_remark, team_code,
bill_no, is_chuku, is_delete,
created_by, created_at,
updated_by, updated_at
) VALUES (
#{rkType}, #{wlType}, #{cangku}, #{rkTime}, #{lihuoY},
#{ckType}, #{ckTime}, #{ckLihuoY}, #{ckRemark}, #{teamCode},
#{billNo}, #{isChuku}, #{isDelete},
#{createBy}, #{createTime},
#{updateBy}, #{updateTime}
)
</insert>
<!-- ==================== ResultMap ==================== -->
<resultMap type="RkBill" id="RkBillResult">
<result property="id" column="id"/>
<result property="wlType" column="wl_type"/>
<result property="wlTypeName" column="wl_type_name"/>
<!-- 查询列表(可用于分页或展示) -->
<select id="selectRkBillList"
parameterType="com.zg.project.wisdom.domain.RkBill"
resultType="com.zg.project.wisdom.domain.RkBill">
SELECT
rb.id,
rb.rk_type AS rkType,
st.type_name AS rkTypeName,
rb.wl_type AS wlType,
mt.type_name AS wlTypeName,
rb.cangku AS cangku,
wh.warehouse_name AS cangkuName,
rb.lihuo_y AS lihuoY,
rb.rk_time AS rkTime,
rb.bill_no AS billNo,
rb.is_chuku AS isChuku,
<result property="cangku" column="cangku"/>
<result property="warehouseName" column="warehouse_name"/>
<result property="parentWarehouseName" column="parent_warehouse_name"/>
-- ✅ 出库相关字段(新增)
rb.ck_type AS ckType,
sot.ck_type_name AS ckTypeName,
rb.ck_time AS ckTime,
rb.ck_lihuo_y AS ckLihuoY,
rb.ck_remark AS ckRemark,
rb.team_code AS teamCode,
ct.team_name AS teamName,
<result property="billNo" column="bill_no"/>
rb.is_delete AS isDelete,
rb.created_by AS createBy,
rb.created_at AS createTime,
rb.updated_by AS updateBy,
rb.updated_at AS updateTime
<result property="operationType" column="operation_type"/>
<result property="operationTypeName" column="operation_type_name"/>
FROM rk_bill rb
LEFT JOIN stock_in_type st ON rb.rk_type = st.type_code
LEFT JOIN material_type mt ON rb.wl_type = mt.type_code
LEFT JOIN warehouse_info wh ON rb.cangku = wh.warehouse_code
LEFT JOIN stock_out_type sot ON rb.ck_type = sot.ck_type_code
LEFT JOIN construction_team ct ON rb.team_code = ct.team_code
WHERE rb.is_delete = '0'
<if test="billNo != null and billNo != ''">
AND rb.bill_no LIKE CONCAT('%', #{billNo}, '%')
</if>
ORDER BY rb.rk_time DESC
</select>
<result property="bizType" column="biz_type"/>
<result property="operationTime" column="operation_time"/>
<result property="execStatus" column="exec_status"/>
<result property="operator" column="operator"/>
<result property="operatorName" column="operator_name"/>
<!-- 根据单据号查询单条 -->
<select id="selectRkBillByBillNo" resultType="com.zg.project.wisdom.domain.RkBill">
<result property="teamCode" column="team_code"/>
<result property="remark" column="remark"/>
<result property="isDelivery" column="is_delivery"/>
<result property="isDelete" column="is_delete"/>
</resultMap>
<!-- ==================== Base Select ==================== -->
<sql id="selectRkBillVo">
SELECT
rb.id,
rb.rk_type, st.type_name AS rkTypeName,
rb.wl_type, mt.type_name AS wlTypeName,
rb.cangku, wh.warehouse_name AS cangkuName,
rb.rk_time, rb.lihuo_y,
rb.wl_type,
rb.cangku,
rb.bill_no,
rb.operation_type,
rb.biz_type,
rb.operation_time,
rb.exec_status,
rb.operator,
rb.team_code,
rb.remark,
rb.is_delivery,
rb.is_delete,
rb.ck_type, sot.ck_type_name AS ckTypeName,
rb.ck_time, rb.ck_lihuo_y,
rb.ck_remark, rb.team_code, ct.team_name AS teamName,
-- 物资类型
mt.type_name AS wl_type_name,
rb.bill_no, rb.is_chuku, rb.is_delete,
rb.created_by AS createBy, rb.created_at AS createTime,
rb.updated_by AS updateBy, rb.updated_at AS updateTime,
rb.remark
-- 出 / 入库类型名称
COALESCE(sit.type_name, sot.type_name) AS operation_type_name,
-- 操作人
su.nick_name AS operator_name,
-- 小仓
wh.warehouse_name AS warehouse_name,
-- 大仓(冗余字段)
wh.parent_warehouse_name AS parent_warehouse_name
FROM rk_bill rb
LEFT JOIN stock_in_type st ON rb.rk_type = st.type_code
LEFT JOIN material_type mt ON rb.wl_type = mt.type_code
LEFT JOIN warehouse_info wh ON rb.cangku = wh.warehouse_code
LEFT JOIN stock_out_type sot ON rb.ck_type = sot.ck_type_code
LEFT JOIN construction_team ct ON rb.team_code = ct.team_code
WHERE rb.bill_no = #{billNo} AND rb.is_delete = '0'
-- 仓库(小仓)
LEFT JOIN warehouse_info wh
ON rb.cangku = wh.warehouse_code
AND wh.status = 1
-- 物资类型
LEFT JOIN material_type mt
ON rb.wl_type = mt.type_code
AND mt.status = 1
-- 入库类型
LEFT JOIN stock_in_type sit
ON rb.operation_type = sit.type_code
AND sit.status = 1
-- 出库类型
LEFT JOIN stock_out_type sot
ON rb.operation_type = sot.type_code
AND (sot.is_delete = '0' OR sot.is_delete IS NULL)
-- 操作人
LEFT JOIN sys_user su
ON rb.operator = su.user_id
</sql>
<!-- ==================== List ==================== -->
<select id="selectRkBillList" parameterType="RkBill" resultMap="RkBillResult">
<include refid="selectRkBillVo"/>
<where>
<if test="wlType != null">AND rb.wl_type = #{wlType}</if>
<if test="cangku != null and cangku != ''">AND rb.cangku = #{cangku}</if>
<if test="billNo != null and billNo != ''">AND rb.bill_no = #{billNo}</if>
<if test="operationType != null">AND rb.operation_type = #{operationType}</if>
<if test="bizType != null">AND rb.biz_type = #{bizType}</if>
<if test="operationTime != null">AND rb.operation_time = #{operationTime}</if>
<!-- 时间区间(新增) -->
<if test="startDate != null">
AND rb.operation_time &gt;= #{startDate}
</if>
<if test="endDate != null">
AND rb.operation_time &lt;= #{endDate}
</if>
<if test="execStatus != null">AND rb.exec_status = #{execStatus}</if>
<if test="operator != null">AND rb.operator = #{operator}</if>
<if test="teamCode != null and teamCode != ''">AND rb.team_code = #{teamCode}</if>
<if test="isDelivery != null">AND rb.is_delivery = #{isDelivery}</if>
<if test="isDelete != null">AND rb.is_delete = #{isDelete}</if>
</where>
ORDER BY rb.exec_status ASC, rb.operation_time DESC
</select>
<!-- ==================== Detail ==================== -->
<select id="selectRkBillById" parameterType="Long" resultMap="RkBillResult">
<include refid="selectRkBillVo"/>
WHERE rb.id = #{id}
</select>
<select id="selectByBillNo"
parameterType="String"
resultMap="RkBillResult">
SELECT
id,
wl_type,
cangku,
bill_no,
operation_type,
biz_type,
operation_time,
exec_status,
operator,
team_code,
is_delivery,
remark,
create_by,
create_time,
update_by,
update_time,
is_delete
FROM rk_bill
WHERE bill_no = #{billNo}
AND (is_delete = '0' OR is_delete IS NULL)
LIMIT 1
</select>
<!-- 查询详情 -->
<select id="selectRkBillById" resultType="com.zg.project.wisdom.domain.RkBill">
SELECT
rb.id,
rb.rk_type, st.type_name AS rkTypeName,
rb.wl_type, mt.type_name AS wlTypeName,
rb.cangku, wh.warehouse_name AS cangkuName,
rb.rk_time, rb.lihuo_y,
rb.ck_type, sot.ck_type_name AS ckTypeName,
rb.ck_time, rb.ck_lihuo_y,
rb.ck_remark, rb.team_code, ct.team_name AS teamName,
<!-- ==================== Insert ==================== -->
<insert id="insertRkBill"
parameterType="com.zg.project.wisdom.domain.RkBill"
useGeneratedKeys="true"
keyProperty="id">
INSERT INTO rk_bill (
bill_no,
biz_type,
wl_type,
cangku,
operation_type,
operation_time,
operator,
exec_status,
is_delivery,
remark,
create_by,
create_time,
is_delete
) VALUES (
#{billNo},
#{bizType},
#{wlType},
#{cangku},
#{operationType},
#{operationTime},
#{operator},
#{execStatus},
#{isDelivery},
#{remark},
#{createBy},
#{createTime},
#{isDelete}
)
</insert>
rb.bill_no, rb.is_chuku, rb.is_delete,
rb.created_by AS createBy, rb.created_at AS createTime,
rb.updated_by AS updateBy, rb.updated_at AS updateTime,
rb.remark
FROM rk_bill rb
LEFT JOIN stock_in_type st ON rb.rk_type = st.type_code
LEFT JOIN material_type mt ON rb.wl_type = mt.type_code
LEFT JOIN warehouse_info wh ON rb.cangku = wh.warehouse_code
LEFT JOIN stock_out_type sot ON rb.ck_type = sot.ck_type_code
LEFT JOIN construction_team ct ON rb.team_code = ct.team_code
WHERE rb.id = #{id} AND rb.is_delete = '0'
</select>
<!-- 修改 -->
<update id="updateRkBill" parameterType="com.zg.project.wisdom.domain.RkBill">
<!-- ==================== Update ==================== -->
<update id="updateRkBill" parameterType="RkBill">
UPDATE rk_bill
<set>
<if test="rkType != null">rk_type = #{rkType},</if>
<trim prefix="SET" suffixOverrides=",">
<if test="wlType != null">wl_type = #{wlType},</if>
<if test="cangku != null">cangku = #{cangku},</if>
<if test="rkTime != null">rk_time = #{rkTime},</if>
<if test="lihuoY != null">lihuo_y = #{lihuoY},</if>
<if test="ckType != null">ck_type = #{ckType},</if>
<if test="ckTime != null">ck_time = #{ckTime},</if>
<if test="ckLihuoY != null">ck_lihuo_y = #{ckLihuoY},</if>
<if test="ckRemark != null">ck_remark = #{ckRemark},</if>
<if test="billNo != null and billNo != ''">bill_no = #{billNo},</if>
<if test="operationType != null">operation_type = #{operationType},</if>
<if test="bizType != null">biz_type = #{bizType},</if>
<if test="operationTime != null">operation_time = #{operationTime},</if>
<if test="execStatus != null">exec_status = #{execStatus},</if>
<if test="operator != null">operator = #{operator},</if>
<if test="teamCode != null">team_code = #{teamCode},</if>
<if test="billNo != null">bill_no = #{billNo},</if>
<if test="isChuku != null">is_chuku = #{isChuku},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="updateBy != null">updated_by = #{updateBy},</if>
<if test="updateTime != null">updated_at = #{updateTime},</if>
</set>
<if test="isDelivery != null">is_delivery = #{isDelivery},</if>
<if test="isDelete != null">is_delete = #{isDelete},</if>
</trim>
WHERE id = #{id}
</update>
<!-- 批量逻辑删除 -->
<update id="logicDeleteRkBillByIds">
UPDATE rk_bill
SET is_delete = '1'
<!-- ==================== Delete ==================== -->
<delete id="deleteRkBillById" parameterType="Long">
DELETE FROM rk_bill WHERE id = #{id}
</delete>
<delete id="deleteRkBillByIds">
DELETE FROM rk_bill
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</update>
</delete>
</mapper>