Merge remote-tracking branch 'refs/remotes/origin/feature/20260727/lms-rawfoil' into huachuang_ls

# Conflicts:
#	nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/api/lms/LmsTaskCommonApi.java
#	nl-framework/nl-spring-boot-starter-execute/src/main/java/cn/code/nl/framework/execute/biz/api/wms/WmsTaskCommonApi.java
#	nl-gateway/src/main/resources/application-dev.yaml
#	nl-module-base/nl-module-base-server/src/main/resources/application-dev.yaml
#	nl-module-infra/nl-module-infra-server/src/main/resources/application-dev.yaml
#	nl-module-lms/nl-module-lms-server/src/main/java/cn/code/nl/module/lms/demo/DemoApi.java
#	nl-module-system/nl-module-system-server/src/main/resources/application-dev.yaml
This commit is contained in:
ls
2026-08-06 18:27:14 +08:00
397 changed files with 32299 additions and 817 deletions

View File

@@ -3,16 +3,16 @@
spring:
cloud:
nacos:
server-addr: http://192.168.81.193:8848 # Nacos 服务器地址
server-addr: 192.168.81.193:8848 # Nacos 服务器地址
username: nacos
password: nacos
discovery: # 【配置中心】配置项
namespace: dev # 命名空间。这里使用 dev 开发环境
namespace: 91c8ac41-7fb0-423b-947e-2caad4c87d41 # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
metadata:
version: 1.0.0 # 服务实例的版本号,可用于灰度发布
config: # 【注册中心】配置项
namespace: dev # 命名空间。这里使用 dev 开发环境
namespace: 91c8ac41-7fb0-423b-947e-2caad4c87d41 # 命名空间。这里使用 dev 开发环境
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
--- #################### 数据库相关配置 ####################
@@ -57,14 +57,14 @@ spring:
primary: master
datasource:
master:
url: jdbc:mysql://192.168.81.193:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
password: root123
password: root
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://192.168.81.193:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
url: jdbc:mysql://127.0.0.1:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
password: root123
password: root
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data:
@@ -76,7 +76,6 @@ spring:
--- #################### MQ 消息队列相关配置 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类
rocketmq:
name-server: 127.0.0.1:9876 # RocketMQ Namesrv
@@ -95,11 +94,11 @@ spring:
xxl:
job:
admin:
addresses: http://localhost:8080/xxl-job-admin # 调度中心部署跟地址
accessToken: 123456 # 执行器通讯TOKEN
addresses: http://192.168.81.193:8080/xxl-job-admin # 调度中心部署跟地址
accessToken: default_token # 执行器通讯TOKEN
executor:
ip: localhost
port: 9995
port: 8995
--- #################### 服务保障相关配置 ####################
@@ -140,4 +139,6 @@ logging:
# 芋道配置项,设置当前项目所有自定义的配置
nl:
demo: false # 开启演示模式
demo: false # 开启演示模式
websocket:
enable: false # 本地开发禁用 WebSocket避免 RocketMQ consumer 连不上报错)

View File

@@ -0,0 +1,11 @@
--- #################### MQ 消息队列相关配置 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类
rocketmq:
name-server: 192.168.81.193:9876
producer:
group: wms_producer_dev_group # 事务消息需要配置一样
send-message-timeout: 3000
consumer:
wms-task-operate:
group: wms_task_status_change_dev_group
topic: wms_task_status_change_dev_topic

View File

@@ -0,0 +1,8 @@
--- #################### MQ 消息队列相关配置 ####################
# rocketmq 配置项,对应 RocketMQProperties 配置类
rocketmq:
name-server: 127.0.0.1:9876
consumer:
wms-task-operate:
group: wms-task-status-change-test-group
topic: wms-task-status-change-test-topic

View File

@@ -59,12 +59,12 @@ spring:
master:
url: jdbc:mysql://192.168.81.193:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
password: root123
password: root
slave: # 模拟从库,可根据自己需要修改 # 模拟从库,可根据自己需要修改
lazy: true # 开启懒加载,保证启动速度
url: jdbc:mysql://192.168.81.193:3306/huachuang_lms_dev?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true # MySQL Connector/J 8.X 连接的示例
username: root
password: root123
password: root
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
data:

View File

@@ -13,6 +13,7 @@ spring:
import:
- optional:classpath:application-${spring.profiles.active}.yaml # 加载【本地】配置
- optional:nacos:${spring.application.name}-${spring.profiles.active}.yaml # 加载【Nacos】的配置
- optional:classpath:application-mq-${spring.profiles.active}.yaml # 加载 MQ 配置
# Servlet 配置
servlet:
@@ -64,7 +65,7 @@ mybatis-plus:
map-underscore-to-camel-case: true # 虽然默认为 true ,但是还是显示去指定下。
global-config:
db-config:
#id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
# id-type: NONE # “智能”模式,基于 IdTypeEnvironmentPostProcessor + 数据源的类型,自动适配成 AUTO、INPUT 模式。
# id-type: AUTO # 自增 ID适合 MySQL 等直接自增的数据库
# id-type: INPUT # 用户输入 ID适合 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库
id-type: ASSIGN_ID # 分配 ID默认使用雪花算法。注意Oracle、PostgreSQL、Kingbase、DB2、H2 数据库时,需要去除实体类上的 @KeySequence 注解

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.groupplate.GroupPlateMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.iostorinv.IostorInvMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.iostorinvdis.IostorinvDisMapper">
<select id="selectAllocationList"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.OutboundAllocationRespVO">
SELECT dis.iostorinvdis_id,
dis.iostorinvdtl_id,
dis.work_status,
dis.material_code,
mb.material_name,
dis.pcsn,
dis.storagevehicle_code,
dis.plan_qty,
dis.qty_unit_name,
dis.sect_id,
dis.sect_name,
dis.struct_id,
dis.struct_code,
dis.struct_name,
dis.point_code,
dis.task_id
FROM wms_iostorinvdis dis
LEFT JOIN base_materialbase mb
ON mb.material_id = dis.material_id
AND mb.deleted = 0
WHERE dis.iostorinv_id = #{iostorinvId}
<if test="iostorinvdtlId != null">
AND dis.iostorinvdtl_id = #{iostorinvdtlId}
</if>
<if test="sectId != null and sectId != ''">
AND dis.sect_id = #{sectId}
</if>
ORDER BY dis.seq_no, dis.iostorinvdis_id
</select>
</mapper>

View File

@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.iostorinvdtl.IostorinvDtlMapper">
<sql id="availableInventoryColumns">
gp.group_id AS group_id,
gp.vehicle_code AS vehicle_code,
gp.pcsn AS pcsn,
gp.material_id AS material_id,
gp.material_code AS material_code,
mb.material_name AS material_name,
gp.qty - COALESCE(gp.frozen_qty, 0) AS available_qty,
gp.qty_unit_id AS qty_unit_id,
gp.qty_unit_name AS qty_unit_name,
gp.ext_code AS ext_code,
gp.ext_type AS ext_type,
gp.ext_dtl_code AS ext_dtl_code,
sa.stor_id AS stor_id,
sa.stor_code AS stor_code,
sa.stor_name AS stor_name
</sql>
<select id="selectAvailableInventoryPage"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{reqVO.storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.deleted = 0
<if test="reqVO.materialCode != null and reqVO.materialCode != ''">
AND gp.material_code LIKE CONCAT('%', #{reqVO.materialCode}, '%')
</if>
<if test="reqVO.vehicleCode != null and reqVO.vehicleCode != ''">
AND gp.vehicle_code LIKE CONCAT('%', #{reqVO.vehicleCode}, '%')
</if>
<if test="reqVO.pcsn != null and reqVO.pcsn != ''">
AND gp.pcsn LIKE CONCAT('%', #{reqVO.pcsn}, '%')
</if>
ORDER BY gp.vehicle_code, gp.group_id
</select>
<select id="selectAvailableInventoryByVehicleCodes"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.deleted = 0
AND gp.vehicle_code IN
<foreach collection="vehicleCodes" item="vehicleCode" open="(" separator="," close=")">
#{vehicleCode}
</foreach>
ORDER BY gp.vehicle_code, gp.group_id
</select>
<select id="selectAvailableInventoryByVehicleCodesForUpdate"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AvailableInventoryRespVO">
SELECT <include refid="availableInventoryColumns"/>
FROM wms_group_plate gp
INNER JOIN (
SELECT stor_id, storagevehicle_code, MAX(stor_code) AS stor_code, MAX(stor_name) AS stor_name
FROM wms_structattr
WHERE deleted = 0
GROUP BY stor_id, storagevehicle_code
) sa ON sa.storagevehicle_code = gp.vehicle_code
LEFT JOIN base_materialbase mb ON mb.material_id = gp.material_id AND mb.deleted = 0
WHERE sa.stor_id = #{storId}
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND gp.deleted = 0
AND gp.vehicle_code IN
<foreach collection="vehicleCodes" item="vehicleCode" open="(" separator="," close=")">
#{vehicleCode}
</foreach>
ORDER BY gp.vehicle_code, gp.group_id
FOR UPDATE
</select>
<select id="selectEditDetails"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.IostorInvDetailRespVO">
SELECT d.iostorinvdtl_id,
d.seq_no,
d.bill_status,
d.assign_qty,
d.unassign_qty,
d.material_code,
d.material_id,
mb.material_name,
d.pcsn,
d.plan_qty,
d.qty_unit_id,
d.source_bill_code,
d.source_bill_type,
d.source_billdtl_id,
d.source_load_port AS vehicle_code,
d.remark
FROM wms_iostorinvdtl d
LEFT JOIN base_materialbase mb
ON mb.material_id = d.material_id
WHERE d.iostorinv_id = #{iostorinvId}
ORDER BY d.seq_no, d.iostorinvdtl_id
</select>
<select id="selectAllocationInventoryForUpdate"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AllocationInventoryRespVO">
SELECT gp.group_id,
gp.vehicle_code,
gp.material_id,
gp.material_code,
gp.pcsn,
gp.qty - COALESCE(gp.frozen_qty, 0) AS available_qty,
gp.qty_unit_id,
gp.qty_unit_name,
sa.sect_id,
sa.sect_code,
sa.sect_name,
sa.struct_id,
sa.struct_code,
sa.struct_name
FROM wms_group_plate gp
INNER JOIN wms_structattr sa
ON sa.storagevehicle_code = gp.vehicle_code
AND sa.deleted = 0
WHERE gp.deleted = 0
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND sa.stor_id = #{storId}
AND (sa.lock_type IS NULL OR sa.lock_type IN ('0', '1'))
<if test="sectId != null and sectId != ''">
AND sa.sect_id = #{sectId}
</if>
AND gp.material_id = #{materialId}
<choose>
<when test="pcsn != null and pcsn != ''">AND gp.pcsn = #{pcsn}</when>
<otherwise>AND (gp.pcsn IS NULL OR gp.pcsn = '')</otherwise>
</choose>
<choose>
<when test="sourceBillCode != null and sourceBillCode != ''">AND gp.ext_code = #{sourceBillCode}</when>
<otherwise>AND (gp.ext_code IS NULL OR gp.ext_code = '')</otherwise>
</choose>
ORDER BY gp.create_time, gp.group_id
FOR UPDATE
</select>
<select id="selectManualAllocationInventory"
resultType="cn.code.nl.module.wms.controller.admin.iostorinv.vo.AllocationInventoryRespVO">
SELECT gp.group_id,
gp.vehicle_code,
gp.material_id,
gp.material_code,
mb.material_name,
gp.pcsn,
gp.qty - COALESCE(gp.frozen_qty, 0) AS available_qty,
gp.qty_unit_id,
gp.qty_unit_name,
sa.sect_id,
sa.sect_code,
sa.sect_name,
sa.struct_id,
sa.struct_code,
sa.struct_name
FROM wms_group_plate gp
INNER JOIN wms_structattr sa
ON sa.storagevehicle_code = gp.vehicle_code
AND sa.deleted = 0
LEFT JOIN base_materialbase mb
ON mb.material_id = gp.material_id
AND mb.deleted = 0
WHERE gp.deleted = 0
AND gp.status = '02'
AND gp.qty - COALESCE(gp.frozen_qty, 0) &gt; 0
AND sa.stor_id = #{storId}
AND (sa.lock_type IS NULL OR sa.lock_type IN ('0', '1'))
AND gp.material_id = #{materialId}
<if test="sectId != null and sectId != ''">
AND sa.sect_id = #{sectId}
</if>
<choose>
<when test="pcsn != null and pcsn != ''">AND gp.pcsn = #{pcsn}</when>
<otherwise>AND (gp.pcsn IS NULL OR gp.pcsn = '')</otherwise>
</choose>
<choose>
<when test="sourceBillCode != null and sourceBillCode != ''">AND gp.ext_code = #{sourceBillCode}</when>
<otherwise>AND (gp.ext_code IS NULL OR gp.ext_code = '')</otherwise>
</choose>
<if test="groupIds != null and !groupIds.isEmpty()">
AND gp.group_id IN
<foreach collection="groupIds" item="groupId" open="(" separator="," close=")">
#{groupId}
</foreach>
</if>
ORDER BY gp.vehicle_code, gp.group_id
<if test="forUpdate">FOR UPDATE</if>
</select>
</mapper>

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.moveinvdtl.MoveInvDtlMapper">
<select id="selectByMoveinvId"
resultType="cn.code.nl.module.wms.dal.dataobject.moveinvdtl.MoveInvDtlDO">
SELECT *
FROM wms_moveinvdtl
WHERE moveinv_id = #{moveinvId}
ORDER BY seq_no
</select>
<delete id="deleteByMoveinvId">
DELETE FROM wms_moveinvdtl WHERE moveinv_id = #{moveinvId}
</delete>
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.sectattr.SectAttrMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.storagevehicleext.StorageVehicleExtMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.storagevehicleinfo.StorageVehicleInfoMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.structAttr.StrucAttrMapper">
<select id="selectMoveAvailableInventory"
resultType="cn.code.nl.module.wms.controller.admin.moveinv.vo.MoveInvInventoryRespVO">
SELECT sa.struct_id,
sa.struct_code,
sa.struct_name,
sa.sect_id,
sa.sect_code,
sa.sect_name,
sa.stor_id,
sa.storagevehicle_code,
sa.layer_num,
MAX(gp.material_code) AS material_code,
MAX(gp.pcsn) AS pcsn,
MAX(gp.qty_unit_id) AS qty_unit_id,
MAX(gp.qty_unit_name) AS qty_unit_name,
SUM(gp.qty) AS qty,
MAX(gp.ext_code) AS source_bill_code
FROM wms_structattr sa
JOIN wms_group_plate gp
ON gp.vehicle_code = sa.storagevehicle_code
AND gp.deleted = 0
AND gp.status = '02'
WHERE sa.deleted = '0'
AND sa.is_used = 1
AND sa.lock_type = '1'
AND sa.storagevehicle_code IS NOT NULL
AND sa.storagevehicle_code != ''
<if test="storId != null and storId != ''">
AND sa.stor_id = #{storId}
</if>
<if test="sectId != null and sectId != ''">
AND sa.sect_id = #{sectId}
</if>
<if test="vehicleCodes != null and vehicleCodes.size() > 0">
AND sa.storagevehicle_code IN
<foreach collection="vehicleCodes" item="code" open="(" separator="," close=")">
#{code}
</foreach>
</if>
GROUP BY sa.struct_id, sa.struct_code, sa.struct_name, sa.sect_id, sa.sect_code,
sa.sect_name, sa.stor_id, sa.storagevehicle_code, sa.layer_num
ORDER BY sa.struct_id DESC
</select>
<select id="selectMoveTargetCandidates"
resultType="cn.code.nl.module.wms.dal.dataobject.structAttr.StrucAttrDO">
SELECT *
FROM wms_structattr
WHERE deleted = '0'
AND is_used = 1
AND lock_type = '1'
AND (storagevehicle_code IS NULL OR storagevehicle_code = '')
AND stor_id = #{storId}
AND sect_id = #{sectId}
AND layer_num = #{layerNum}
ORDER BY row_num, col_num, block_num, struct_id
</select>
<select id="selectByStructCode"
resultType="cn.code.nl.module.wms.dal.dataobject.structAttr.StrucAttrDO">
SELECT *
FROM wms_structattr
WHERE deleted = '0'
AND struct_code = #{structCode}
</select>
<update id="lockForMoveOut">
UPDATE wms_structattr
SET lock_type = '4',
inv_type = '3',
inv_id = #{invId},
inv_code = #{invCode}
WHERE deleted = '0'
AND struct_code = #{structCode}
AND lock_type = '1'
AND storagevehicle_code IS NOT NULL
AND storagevehicle_code != ''
</update>
<update id="lockForMoveIn">
UPDATE wms_structattr
SET lock_type = '5',
inv_type = '3',
inv_id = #{invId},
inv_code = #{invCode}
WHERE deleted = '0'
AND struct_code = #{structCode}
AND lock_type = '1'
AND (storagevehicle_code IS NULL OR storagevehicle_code = '')
</update>
<update id="unlockMoveInv">
UPDATE wms_structattr
SET lock_type = '1',
inv_type = NULL,
inv_id = NULL,
inv_code = NULL
WHERE deleted = '0'
AND inv_id = #{invId}
AND lock_type IN ('4', '5')
</update>
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.warehousestrategy.WarehouseStrategyMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.code.nl.module.wms.dal.mysql.warehousestrategyconfig.WarehouseStrategyConfigMapper">
<!--
一般情况下,尽可能使用 Mapper 进行 CRUD 增删改查即可。
无法满足的场景,例如说多表关联查询,才使用 XML 编写 SQL。
代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。
文档可见https://www.iocoder.cn/MyBatis/x-plugins/
-->
</mapper>