From 209c99e180439933fcb6bcac45ac2378a3878956 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 27 May 2025 11:22:57 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E7=A7=BB=E5=BA=93=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IMdPbStoragevehicleextService.java | 17 + .../service/IStructattrService.java | 8 + .../mapper/MdPbStoragevehicleextMapper.java | 13 + .../mapper/MdPbStoragevehicleextMapper.xml | 54 ++ .../impl/EmBiDeviceinfoServiceImpl.java | 6 +- .../impl/MdCsCustomerbaseServiceImpl.java | 6 +- .../impl/MdCsSupplierbaseServiceImpl.java | 6 +- .../impl/MdMeMaterialbaseServiceImpl.java | 6 +- .../impl/MdPbClassstandardServiceImpl.java | 6 +- .../impl/MdPbMeasureunitServiceImpl.java | 6 +- .../MdPbStoragevehicleextServiceImpl.java | 17 + .../MdPbStoragevehicleinfoServiceImpl.java | 6 +- .../service/impl/StructattrServiceImpl.java | 22 + .../org/nl/wms/sch_manage/enums/TaskEnum.java | 42 ++ .../service/impl/SchBasePointServiceImpl.java | 5 + .../service/impl/SchBaseTaskServiceImpl.java | 3 + .../impl/SchBaseTaskconfigServiceImpl.java | 4 + .../service/util/tasks/MoveTask.java | 162 ++++++ .../controller/MoveStorController.java | 84 ++++ .../enums/IOSConstant.java | 10 + .../warehouse_management/enums/IOSEnum.java | 15 + .../service/IStIvtMoveinvService.java | 100 ++++ .../service/IStIvtMoveinvdtlService.java | 41 ++ .../service/dao/StIvtMoveinv.java | 133 +++++ .../service/dao/StIvtMoveinvdtl.java | 118 +++++ .../dao/mapper/StIvtMoveinvMapper.java | 29 ++ .../service/dao/mapper/StIvtMoveinvMapper.xml | 57 +++ .../dao/mapper/StIvtMoveinvdtlMapper.java | 29 ++ .../dao/mapper/StIvtMoveinvdtlMapper.xml | 38 ++ .../service/dto/MoveInsertDto.java | 82 +++ .../service/impl/StIvtMoveinvServiceImpl.java | 317 ++++++++++++ .../impl/StIvtMoveinvdtlServiceImpl.java | 207 ++++++++ .../service/util/UpdateIvtUtils.java | 36 ++ .../src/views/wms/pub/StructDialog.vue | 6 +- .../src/views/wms/st/movebill/AddDialog.vue | 473 ++++++++++++++++++ .../src/views/wms/st/movebill/AddDtl.vue | 207 ++++++++ .../src/views/wms/st/movebill/index.vue | 341 +++++++++++++ .../src/views/wms/st/movebill/movestor.js | 43 ++ 38 files changed, 2731 insertions(+), 24 deletions(-) create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskEnum.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoveStorController.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvdtlService.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinv.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinvdtl.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.xml create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.xml create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoveInsertDto.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java create mode 100644 wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue create mode 100644 wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue create mode 100644 wms/nladmin-ui/src/views/wms/st/movebill/index.vue create mode 100644 wms/nladmin-ui/src/views/wms/st/movebill/movestor.js diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java index b499669..1615d10 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java @@ -1,8 +1,11 @@ package org.nl.wms.basedata_manage.service; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; +import java.util.List; + /** *

* 载具扩展属性信息表 服务类 @@ -13,4 +16,18 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; */ public interface IMdPbStoragevehicleextService extends IService { + /** + * 更新库存以及仓位状态 + * @param updateIvtList :{ + * type: 更新类型 + * storagevehicle_code: 载具编码 + * material_id: 物料标识 + * pcsn: 批次 + * qty_unit_id: 计量单位标识 + * qty_unit_name: 计量单位名称 + * change_qty: 变动数量 + * remark: 备注 + * } + */ + void updateIvt(List updateIvtList); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java index 1f0ad54..977392b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IStructattrService.java @@ -82,4 +82,12 @@ public interface IStructattrService extends IService { */ void changeActive(JSONObject json); + /** + * 更新锁状态 + * @param updateAttrList { + * struct_code :仓位编码 + * lock_type :锁定类型 + * } + */ + void updateLock(List updateAttrList); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java index a962322..1e1cb71 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java @@ -1,8 +1,14 @@ package org.nl.wms.basedata_manage.service.dao.mapper; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; +import java.util.Map; + /** *

* 载具扩展属性信息表 Mapper 接口 @@ -13,4 +19,11 @@ import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; */ public interface MdPbStoragevehicleextMapper extends BaseMapper { + /** + * 获取可用库存分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage getCanuseIvt(Page page, @Param("param") Map whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml index 0ccbc16..f4b0355 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.xml @@ -2,4 +2,58 @@ + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java index d25874c..b5450e8 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/EmBiDeviceinfoServiceImpl.java @@ -52,7 +52,7 @@ public class EmBiDeviceinfoServiceImpl extends ServiceImpl().lambda() @@ -74,7 +74,7 @@ public class EmBiDeviceinfoServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsCustomerbaseServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsCustomerbaseServiceImpl.java index 6039501..6db8857 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsCustomerbaseServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsCustomerbaseServiceImpl.java @@ -52,7 +52,7 @@ public class MdCsCustomerbaseServiceImpl extends ServiceImpl().lambda() @@ -74,7 +74,7 @@ public class MdCsCustomerbaseServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsSupplierbaseServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsSupplierbaseServiceImpl.java index dc54a95..736881d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsSupplierbaseServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdCsSupplierbaseServiceImpl.java @@ -52,7 +52,7 @@ public class MdCsSupplierbaseServiceImpl extends ServiceImpl().lambda() @@ -74,7 +74,7 @@ public class MdCsSupplierbaseServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java index 5f75529..03d7f46 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdMeMaterialbaseServiceImpl.java @@ -50,7 +50,7 @@ public class MdMeMaterialbaseServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbClassstandardServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbClassstandardServiceImpl.java index 1d6a1cb..ff7818b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbClassstandardServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbClassstandardServiceImpl.java @@ -79,7 +79,7 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl().lambda() @@ -109,7 +109,7 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl ids) { // 查询所有数据 List daoList = this.list( diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java index c3b6823..d3c278a 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbMeasureunitServiceImpl.java @@ -52,7 +52,7 @@ public class MdPbMeasureunitServiceImpl extends ServiceImpl().lambda() @@ -74,7 +74,7 @@ public class MdPbMeasureunitServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java index dc39b24..74b0839 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java @@ -1,11 +1,16 @@ package org.nl.wms.basedata_manage.service.impl; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; +import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 载具扩展属性信息表 服务实现类 @@ -17,4 +22,16 @@ import org.springframework.stereotype.Service; @Service public class MdPbStoragevehicleextServiceImpl extends ServiceImpl implements IMdPbStoragevehicleextService { + /** + * 更新库存工具类 + */ + @Autowired + private UpdateIvtUtils updateIvtUtils; + + @Override + public void updateIvt(List updateIvtList) { + for (JSONObject json : updateIvtList) { + updateIvtUtils.updateIvt(json); + } + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java index 2db2a1c..4670939 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleinfoServiceImpl.java @@ -56,7 +56,7 @@ public class MdPbStoragevehicleinfoServiceImpl extends ServiceImpl ids) { this.baseMapper.deleteBatchIds(ids); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java index cd757de..95dbe26 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/StructattrServiceImpl.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -28,9 +29,11 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 仓位实现类 @@ -223,4 +226,23 @@ public class StructattrServiceImpl extends ServiceImpl updateAttrList) { + List attrList = this.list( + new QueryWrapper().lambda() + .in(Structattr::getStruct_code, + updateAttrList.stream() + .map(row -> row.getString("struct_code")) + .collect(Collectors.toList()) + ) + ); + for (JSONObject json : updateAttrList) { + Structattr attrDao = attrList.stream() + .filter(row -> row.getStruct_code().equals(json.getString("struct_code"))) + .findFirst().orElse(null); + attrDao.setLock_type(json.getString("lock_type")); + this.update(attrDao); + } + } + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskEnum.java new file mode 100644 index 0000000..fde3ef5 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/enums/TaskEnum.java @@ -0,0 +1,42 @@ +package org.nl.wms.sch_manage.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.MapOf; + +import java.util.Map; + +/** + * 任务枚举类 + * + * @author Liuxy + * @Date 2025/05/26 + */ +@AllArgsConstructor +@Getter +public enum TaskEnum { + + // ACS有限级别 + ACS_PRIORITY(MapOf.of("1", "1", "2", "2", "3", "4")) + ; + + private Map code; + + public String code(String desc) { + String code = this.getCode().get(desc); + if (StringUtils.isNotEmpty(code)) { + return code; + } + throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); + } + + public String check(String code) { + for (Map.Entry entry : this.getCode().entrySet()) + if (entry.getValue().equals("code")) { + return entry.getValue(); + } + throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index f93195e..c87e3a5 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -23,6 +23,7 @@ import org.nl.wms.sch_manage.service.dto.SchBasePointQuery; import org.nl.wms.sch_manage.service.util.PointUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; import java.util.List; @@ -73,6 +74,7 @@ public class SchBasePointServiceImpl extends ServiceImpl ids) { // 真删除 pointMapper.deleteBatchIds(ids); @@ -163,6 +167,7 @@ public class SchBasePointServiceImpl extends ServiceImpl().eq(SchBaseTaskconfig::getConfig_code, entity.getConfig_code())); if (ObjectUtil.isNotEmpty(schBaseTaskconfig)) { @@ -93,6 +95,7 @@ public class SchBaseTaskconfigServiceImpl extends ServiceImpl ids) { // 真删除 schBaseTaskconfigMapper.deleteBatchIds(ids); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java new file mode 100644 index 0000000..17d1300 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch_manage/service/util/tasks/MoveTask.java @@ -0,0 +1,162 @@ +package org.nl.wms.sch_manage.service.util.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.exception.BadRequestException; +import org.nl.common.utils.SecurityUtils; +import org.nl.config.IdUtil; +import org.nl.wms.sch_manage.enums.TaskStatus; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.AbstractTask; +import org.nl.wms.sch_manage.service.util.AcsTaskDto; +import org.nl.wms.sch_manage.service.util.TaskType; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvService; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; + +/** + * @Author: Liuxy + * @Description: 移库任务类 + * @Date: 2025/5/25 + */ +@Component(value = "MoveTask") +@TaskType("MoveTask") +public class MoveTask extends AbstractTask { + + /** + * 任务服务类 + */ + @Autowired + private ISchBaseTaskService taskService; + + /** + * 移库主表服务类 + */ + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + /** + * 移库明细服务类 + */ + @Autowired + private IStIvtMoveinvdtlService iStIvtMoveinvdtlService; + + @Override + public String create(JSONObject json) { + SchBaseTask task = new SchBaseTask(); + task.setTask_id(IdUtil.getStringId()); + task.setTask_code(IdUtil.getStringId()); + task.setTask_status(TaskStatus.CREATE.getCode()); + task.setConfig_code(json.getString("config_code")); + task.setPoint_code1(json.getString("point_code1")); + task.setPoint_code2(json.getString("point_code2")); + task.setVehicle_code(json.getString("vehicle_code")); + task.setRequest_param(json.toString()); + task.setPriority(json.getString("Priority")); + task.setCreate_id(SecurityUtils.getCurrentUserId()); + task.setCreate_name(SecurityUtils.getCurrentNickName()); + task.setCreate_time(DateUtil.now()); + taskService.save(task); + return task.getTask_id(); + } + + @Override + public AcsTaskDto sendAcsParam(String taskId) { + SchBaseTask taskDao = taskService.getById(taskId); + + // 组织下发给acs的数据 + AcsTaskDto acsTaskDto = new AcsTaskDto(); + acsTaskDto.setExt_task_uuid(taskDao.getTask_id()); + acsTaskDto.setTask_code(taskDao.getTask_code()); + acsTaskDto.setStart_device_code(taskDao.getPoint_code1()); + acsTaskDto.setNext_device_code(taskDao.getPoint_code2()); + acsTaskDto.setPriority(taskDao.getPriority()); + acsTaskDto.setTask_type("1"); + return acsTaskDto; + } + + @Override + protected void updateStatus(String task_code, TaskStatus status) { + // 校验任务 + SchBaseTask taskObj = taskService.getByCode(task_code); + if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { + throw new BadRequestException("该任务已完成!"); + } + if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { + throw new BadRequestException("该任务已取消!"); + } + // 根据传来的类型去对任务进行操作 + if (status.equals(TaskStatus.EXECUTING)) { + // 更新明细状态 + iStIvtMoveinvService.executing(taskObj); + taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); + taskObj.setRemark("执行中"); + taskService.updateById(taskObj); + } + if (status.equals(TaskStatus.FINISHED)) { + this.finishTask(taskObj); + } + if (status.equals(TaskStatus.CANCELED)) { + this.cancelTask(taskObj); + } + } + + @Override + public void forceFinish(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + this.finishTask(taskObj); + } + + @Override + public void cancel(String task_code) { + SchBaseTask taskObj = taskService.getByCode(task_code); + if (ObjectUtil.isEmpty(taskObj)) { + throw new BadRequestException("该任务不存在"); + } + if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { + throw new BadRequestException("只能取消生成中的任务!"); + } + this.cancelTask(taskObj); + } + + @Override + public void backMes(String task_code) { + } + + @Transactional + public void finishTask(SchBaseTask taskObj) { + // 完成任务 + StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getTask_id, taskObj.getTask_id()) + ); + iStIvtMoveinvService.confirmTask(dtlDao); + // 更新任务状态 + taskObj.setRemark("已完成"); + taskObj.setTask_status(TaskStatus.FINISHED.getCode()); + taskService.updateById(taskObj); + } + + @Transactional + public void cancelTask(SchBaseTask taskObj) { + // 删除任务 + StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getTask_id, taskObj.getTask_id()) + ); + iStIvtMoveinvService.cancelTask(dtlDao); + // 更新任务状态 + taskObj.setRemark("已取消"); + taskObj.setTask_status(TaskStatus.CANCELED.getCode()); + taskService.updateById(taskObj); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoveStorController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoveStorController.java new file mode 100644 index 0000000..5c0b918 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoveStorController.java @@ -0,0 +1,84 @@ +package org.nl.wms.warehouse_management.controller; + + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvService; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 基础分类表 控制层 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/moveStor") +@Slf4j +public class MoveStorController { + + @Autowired + private IStIvtMoveinvService iStIvtMoveinvService; + + @GetMapping + @Log("查询移库单") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMoveinvService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增移库单") + public ResponseEntity create(@Validated @RequestBody MoveInsertDto dto) { + iStIvtMoveinvService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改移库单") + public ResponseEntity update(@Validated @RequestBody MoveInsertDto dto) { + iStIvtMoveinvService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除移库单") + public ResponseEntity delete(@RequestBody Set ids) { + iStIvtMoveinvService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getMoveDtl") + @Log("查询移库单明细") + public ResponseEntity getMoveDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(iStIvtMoveinvService.getMoveDtl(whereJson), HttpStatus.OK); + } + + @GetMapping("/getCanuseIvt") + @Log("获取可用库存物料") + public ResponseEntity getCanuseIvt(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMoveinvService.getCanuseIvt(whereJson,page)),HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("强制确认") + public ResponseEntity confirm(@RequestBody MoveInsertDto dto) { + iStIvtMoveinvService.confirm(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java index b5bc304..c7109e3 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java @@ -21,4 +21,14 @@ public class IOSConstant { * 更新库存状态:减冻结 */ public final static String UPDATE_IVT_TYPE_SUB_FROZEN = "3"; + + /** + * 更新库存状态:减冻结加可用 + */ + public final static String UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE = "4"; + + /** + * 移库任务类编码 + */ + public final static String MOVE_CONFIG_TASK = "MoveTask"; } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index 675535e..a136717 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -20,6 +20,21 @@ public enum IOSEnum { // 更新库存类型 UPDATE_IVT_TYPE(MapOf.of("入库", "1", "出库", "2")), + + // 锁类型 + LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2" + , "移入锁", "3", "移出锁", "4" + )), + + // 单据创建类型 + CREATE_MODE(MapOf.of("PC产生", "1", "终端产生", "2", "外部接口产生", "3")), + + // 移库单状态 + MOVE_MST_STATUS(MapOf.of("生成", "10", "提交", "20", "执行中", "30", "完成", "99")), + + // 移库单明细状态 + MOVE_DTL_STATUS(MapOf.of("生成", "10", "执行中", "20", "完成", "99")), + ; private Map code; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java new file mode 100644 index 0000000..1bb0a45 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvService.java @@ -0,0 +1,100 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinv; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 移库单主表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +public interface IStIvtMoveinvService extends IService { + + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增移库单 + * @param dto:新增修改dto实体类 + */ + void create(MoveInsertDto dto); + + /** + * 修改移库单 + * @param dto:新增修改dto实体类 + */ + void update(MoveInsertDto dto); + + /** + * 删除移库单据 + * @param ids 标识id集合 + */ + void delete(Set ids); + + /** + * 查询移库单明细 + * @param whereJson + * { + * moveinv_id 移库单标识 + * } + * @return List + */ + List getMoveDtl(Map whereJson); + + /** + * 获取可用库存物料 + * @param whereJson : { + * 分页参数:page,size + * stor_id: 仓库id + * sect_id: 库区id + * struct_code: 货位编码 + * material_code: 物料编码 + * pcsn: 批次 + * } + * @param page : 分页对象 + * @return 返回结果 + */ + IPage getCanuseIvt(Map whereJson, PageQuery page); + + /** + * 取消任务 + * @param dtlDao 明细实体类 + */ + void cancelTask(StIvtMoveinvdtl dtlDao); + + /** + * 完成任务 + * @param dtlDao 明细实体类 + */ + void confirmTask(StIvtMoveinvdtl dtlDao); + + /** + * 执行任务 + * @param taskObj 任务明细 + */ + void executing(SchBaseTask taskObj); + + /** + * 强制确认 + * @param dto 新增修改dto实体类 + */ + void confirm(MoveInsertDto dto); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvdtlService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvdtlService.java new file mode 100644 index 0000000..67f9faa --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoveinvdtlService.java @@ -0,0 +1,41 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 移库单明细表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +public interface IStIvtMoveinvdtlService extends IService { + + /** + * 新增移库明细 + * @param dto 新增修改dto实体类 + */ + void createMoveDtl(MoveInsertDto dto); + + /** + * 查询移库单明细 + * @param whereJson { + * moveinv_id 移库单标识 + * } + * @return List + */ + List getMoveDtl(Map whereJson); + + /** + * 删除明细以及任务 + * @param dto 新增修改dto实体类 + */ + void deleteDtl(MoveInsertDto dto); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinv.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinv.java new file mode 100644 index 0000000..e1f4384 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinv.java @@ -0,0 +1,133 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 移库单主表 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moveinv") +public class StIvtMoveinv implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 移库单标识 + */ + @TableId(value = "moveinv_id") + private String moveinv_id; + + /** + * 单据编号 + */ + private String bill_code; + + /** + * 单据类型 + */ + private String bill_type; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 总数量 + */ + private BigDecimal total_qty; + + /** + * 明细数 + */ + private BigDecimal detail_count; + + /** + * 单据状态 + */ + private String bill_status; + + /** + * 备注 + */ + private String remark; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 制单人 + */ + private String input_optid; + + /** + * 制单人姓名 + */ + private String input_optname; + + /** + * 制单时间 + */ + private String input_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 确认人 + */ + private String confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 确认说明 + */ + private String confirm_info; + + /** + * 是否删除 + */ + private String is_delete; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinvdtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinvdtl.java new file mode 100644 index 0000000..eeed7ec --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoveinvdtl.java @@ -0,0 +1,118 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 移库单明细表 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moveinvdtl") +public class StIvtMoveinvdtl implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 移库单明细标识 + */ + @TableId(value = "moveinvdtl_id") + private String moveinvdtl_id; + + /** + * 移库单标识 + */ + private String moveinv_id; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 转出库区编码 + */ + private String turnout_sect_code; + + /** + * 转出仓位编码 + */ + private String turnout_struct_code; + + /** + * 物料编码 + */ + private String material_code; + + /** + * 批次 + */ + private String pcsn; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 转入库区编码 + */ + private String turnin_sect_code; + + /** + * 转入仓位编码 + */ + private String turnin_struct_code; + + /** + * 执行状态 + */ + private String work_status; + + /** + * 任务标识 + */ + private String task_id; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 是否已下发 + */ + private String is_issued; + + /** + * 来源单编号 + */ + private String source_bill_code; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.java new file mode 100644 index 0000000..2e997a1 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinv; + +import java.util.Map; + +/** + *

+ * 移库单主表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +public interface StIvtMoveinvMapper extends BaseMapper { + + /** + * 分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage queryAllByPage(Page page, @Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.xml new file mode 100644 index 0000000..79b30d6 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvMapper.xml @@ -0,0 +1,57 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.java new file mode 100644 index 0000000..f16c697 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 移库单明细表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +public interface StIvtMoveinvdtlMapper extends BaseMapper { + + /** + * 查询移库单明细 + * @param whereJson { + * moveinv_id 移库单标识 + * } + * @return List + */ + List getMoveDtl(@Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.xml new file mode 100644 index 0000000..85cf4d1 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoveinvdtlMapper.xml @@ -0,0 +1,38 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoveInsertDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoveInsertDto.java new file mode 100644 index 0000000..1738e85 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoveInsertDto.java @@ -0,0 +1,82 @@ +package org.nl.wms.warehouse_management.service.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 新增修改dto实体类 + * @author Liuxy + * 2025/5/26 + */ +@Data +public class MoveInsertDto { + + /** + * 单据标识 + */ + private String moveinv_id; + + /** + * 单据状态 + */ + private String bill_status; + + /** + * 单据类型 + */ + private String bill_type; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 明细数 + */ + private BigDecimal detail_count; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 备注 + */ + private String remark; + + /** + * 总数量 + */ + private BigDecimal total_qty; + + /** + * 任务id(取消任务时用到) + */ + private BigDecimal task_id; + + /** + * 明细数据: + * { + * material_code 物料编码 + * material_id 物料id + * material_name 物料名称 + * pcsn 批次 + * qty 数量 + * qty_unit_id 计量单位标识 + * qty_unit_name 计量单位名称 + * storagevehicle_code 载具编码 + * turnin_sect_code 移入库区 + * turnin_struct_code 移入仓位 + * turnout_sect_code 移出库区 + * turnout_struct_code 移出仓位 + * work_status 执行状态 + * remark 备注 + * } + */ + private List tableData; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java new file mode 100644 index 0000000..d6017a3 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvServiceImpl.java @@ -0,0 +1,317 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.tasks.MoveTask; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvService; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinv; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtMoveinvMapper; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 移库单主表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +@Service +public class StIvtMoveinvServiceImpl extends ServiceImpl implements IStIvtMoveinvService { + + /** + * 载具扩展属性mapper + */ + @Autowired + private MdPbStoragevehicleextMapper mdPbStoragevehicleextMapper; + + /** + * 载具扩展属性服务类 + */ + @Autowired + private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + + /** + * 移库单明细服务 + */ + @Autowired + private IStIvtMoveinvdtlService iStIvtMoveinvdtlService; + + /** + * 物料服务 + */ + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 任务服务 + */ + @Autowired + private ISchBaseTaskService iSchBaseTaskService; + + /** + * 移库任务配置类 + */ + @Autowired + private MoveTask moveTask; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + @Transactional + public void create(MoveInsertDto dto) { + // 主表数据 + StIvtMoveinv moveDao = new StIvtMoveinv(); + moveDao.setMoveinv_id(IdUtil.getStringId()); + moveDao.setBill_code(CodeUtil.getNewCode("MOVE_STORE_CODE")); + moveDao.setBill_type(dto.getBill_type()); + moveDao.setBiz_date(dto.getBiz_date().substring(0, 10)); + moveDao.setStor_id(dto.getStor_id()); + moveDao.setTotal_qty(dto.getTotal_qty()); + moveDao.setDetail_count(dto.getDetail_count()); + moveDao.setBill_status(dto.getBill_status()); + moveDao.setRemark(dto.getRemark()); + moveDao.setCreate_mode(IOSEnum.CREATE_MODE.code("PC产生")); + moveDao.setInput_optid(SecurityUtils.getCurrentUserId()); + moveDao.setInput_optname(SecurityUtils.getCurrentNickName()); + moveDao.setInput_time(DateUtil.now()); + this.save(moveDao); + + // 新增明细以及任务 + dto.setMoveinv_id(moveDao.getMoveinv_id()); + iStIvtMoveinvdtlService.createMoveDtl(dto); + } + + @Override + @Transactional + public void update(MoveInsertDto dto) { + StIvtMoveinv moveDao = this.baseMapper.selectById(dto.getMoveinv_id()); + moveDao.setStor_id(dto.getStor_id()); + moveDao.setBill_type(dto.getBill_type()); + moveDao.setBiz_date(dto.getBiz_date().substring(0, 10)); + moveDao.setTotal_qty(dto.getTotal_qty()); + moveDao.setRemark(dto.getRemark()); + moveDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + moveDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + moveDao.setUpdate_time(DateUtil.now()); + this.updateById(moveDao); + // 删除明细以及任务 + iStIvtMoveinvdtlService.deleteDtl(dto); + // 新增明细以及任务 + iStIvtMoveinvdtlService.createMoveDtl(dto); + } + + @Override + @Transactional + public void delete(Set ids) { + for(String moveinv_id : ids) { + JSONObject json = new JSONObject(); + json.put("moveinv_id",moveinv_id); + List moveDtl = iStIvtMoveinvdtlService.getMoveDtl(json); + + // 组织删除参数 + MoveInsertDto moveInsertDto = new MoveInsertDto(); + moveInsertDto.setMoveinv_id(moveinv_id); + moveInsertDto.setTableData(moveDtl); + iStIvtMoveinvdtlService.deleteDtl(moveInsertDto); + } + // 删除 + this.removeByIds(ids); + } + + @Override + public List getMoveDtl(Map whereJson) { + return iStIvtMoveinvdtlService.getMoveDtl(whereJson); + } + + @Override + public IPage getCanuseIvt(Map whereJson, PageQuery page) { + return mdPbStoragevehicleextMapper.getCanuseIvt(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + public void cancelTask(StIvtMoveinvdtl dtlDao) { + // 查询此单据下是否只有当前一条明细 + int count = iStIvtMoveinvdtlService.count( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getMoveinv_id, dtlDao.getMoveinv_id()) + ); + if (count == 1) { + // 直接删除单据 + Set idsList = new HashSet<>(); + idsList.add(dtlDao.getMoveinv_id()); + delete(idsList); + } else { + // 删除当前一条明细 + List moveDtl = iStIvtMoveinvdtlService.getMoveDtl(JSONObject.parseObject(JSONObject.toJSONString(dtlDao),JSONObject.class)); + // 过滤当前明细 + List paramList = moveDtl.stream() + .filter(row -> row.getString("moveinvdtl_id").equals(dtlDao.getMoveinvdtl_id())) + .collect(Collectors.toList()); + // 组织删除参数 + MoveInsertDto moveInsertDto = new MoveInsertDto(); + moveInsertDto.setMoveinv_id(dtlDao.getMoveinv_id()); + moveInsertDto.setTableData(paramList); + iStIvtMoveinvdtlService.deleteDtl(moveInsertDto); + } + } + + @Override + public void confirmTask(StIvtMoveinvdtl dtlDao) { + // 需要更新库存集合 + List updateIvtList = new ArrayList<>(); + // 查询物料 + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, dtlDao.getMaterial_code()) + ); + + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN); + jsonIvt.put("storagevehicle_code", dtlDao.getStoragevehicle_code()); + jsonIvt.put("material_id", materDao.getMaterial_id()); + jsonIvt.put("pcsn", dtlDao.getPcsn()); + jsonIvt.put("qty_unit_id", dtlDao.getQty_unit_id()); + jsonIvt.put("qty_unit_name", dtlDao.getQty_unit_name()); + jsonIvt.put("change_qty", dtlDao.getQty()); + updateIvtList.add(jsonIvt); + JSONObject jsonIvtTwo = new JSONObject(); + jsonIvtTwo.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); + jsonIvtTwo.put("storagevehicle_code", dtlDao.getStoragevehicle_code()); + jsonIvtTwo.put("material_id", materDao.getMaterial_id()); + jsonIvtTwo.put("pcsn", dtlDao.getPcsn()); + jsonIvtTwo.put("qty_unit_id", dtlDao.getQty_unit_id()); + jsonIvtTwo.put("qty_unit_name", dtlDao.getQty_unit_name()); + jsonIvtTwo.put("change_qty", dtlDao.getQty()); + updateIvtList.add(jsonIvtTwo); + iMdPbStoragevehicleextService.updateIvt(updateIvtList); + + // 更新起点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, dtlDao.getTurnout_struct_code()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(Structattr::getStoragevehicle_code, null) + ); + // 更新终点 + iStructattrService.update( + new UpdateWrapper().lambda() + .eq(Structattr::getStruct_code, dtlDao.getTurnin_struct_code()) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(Structattr::getStoragevehicle_code, dtlDao.getStoragevehicle_code()) + ); + + // 更新明细状态 + dtlDao.setWork_status(IOSEnum.MOVE_DTL_STATUS.code("完成")); + iStIvtMoveinvdtlService.updateById(dtlDao); + + // 更新主表状态 + updateMstStatus(dtlDao.getMoveinv_id()); + } + + @Override + public void executing(SchBaseTask taskObj) { + StIvtMoveinvdtl dtlDao = iStIvtMoveinvdtlService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getTask_id, taskObj.getTask_id()) + ); + dtlDao.setWork_status(IOSEnum.MOVE_DTL_STATUS.code("执行中")); + iStIvtMoveinvdtlService.updateById(dtlDao); + updateMstStatus(dtlDao.getMoveinv_id()); + } + + @Override + @Transactional + public void confirm(MoveInsertDto dto) { + // 查询所有明细 + List dtlDaoList = iStIvtMoveinvdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getMoveinv_id, dto.getMoveinv_id()) + ); + List taskDaoList = iSchBaseTaskService.list( + new QueryWrapper().lambda() + .in(SchBaseTask::getTask_id, + dtlDaoList.stream() + .map(StIvtMoveinvdtl::getTask_id) + .collect(Collectors.toList()) + ) + ); + + for (StIvtMoveinvdtl dao : dtlDaoList) { + SchBaseTask taskDao = taskDaoList.stream() + .filter(row -> row.getTask_id().equals(dao.getTask_id())) + .findFirst().orElse(null); + moveTask.finishTask(taskDao); + } + } + + /** + * 更新主表状态 + * @param moveinv_id 移库单id + */ + private void updateMstStatus(String moveinv_id) { + StIvtMoveinv mstDao = this.getById(moveinv_id); + // 查询所有明细 + List dtlDaoList = iStIvtMoveinvdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getMoveinv_id, moveinv_id) + ); + + // 如果全部为完成状态则主单据为完成 + boolean confirm_flag = dtlDaoList.stream() + .allMatch(row -> row.getWork_status().equals(IOSEnum.MOVE_DTL_STATUS.code("完成"))); + + boolean executing_flag = dtlDaoList.stream() + .anyMatch(row -> row.getWork_status().equals(IOSEnum.MOVE_DTL_STATUS.code("执行中"))); + + if (confirm_flag) { + mstDao.setBill_status(IOSEnum.MOVE_MST_STATUS.code("完成")); + + } else if (executing_flag) { + mstDao.setBill_status(IOSEnum.MOVE_MST_STATUS.code("执行中")); + } + mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + mstDao.setUpdate_time(DateUtil.now()); + this.updateById(mstDao); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java new file mode 100644 index 0000000..e13c1a3 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoveinvdtlServiceImpl.java @@ -0,0 +1,207 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.utils.IdUtil; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; +import org.nl.wms.basedata_manage.service.IStructattrService; +import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.Structattr; +import org.nl.wms.sch_manage.enums.TaskEnum; +import org.nl.wms.sch_manage.service.ISchBaseTaskService; +import org.nl.wms.sch_manage.service.dao.SchBaseTask; +import org.nl.wms.sch_manage.service.util.tasks.MoveTask; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtMoveinvdtlService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoveinvdtl; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtMoveinvdtlMapper; +import org.nl.wms.warehouse_management.service.dto.MoveInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; + +/** + *

+ * 移库单明细表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-05-26 + */ +@Service +public class StIvtMoveinvdtlServiceImpl extends ServiceImpl implements IStIvtMoveinvdtlService { + + /** + * 载具扩展属性服务 + */ + @Autowired + private IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + + /** + * 仓位服务 + */ + @Autowired + private IStructattrService iStructattrService; + + /** + * 任务服务 + */ + @Autowired + private ISchBaseTaskService iSchBaseTaskService; + + /** + * 物料服务 + */ + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; + + /** + * 移库任务配置类 + */ + @Autowired + private MoveTask moveTask; + + @Override + public void createMoveDtl(MoveInsertDto dto) { + // 批量插入明细集合 + List moveDtlList = new ArrayList<>(); + // 批量更新库存集合 + List updateIvtList = new ArrayList<>(); + // 批量更新仓位 + List updateAttrList = new ArrayList<>(); + // 处理明细数据 + List tableData = dto.getTableData(); + for (int i = 0; i < tableData.size(); i++) { + JSONObject json = tableData.get(i); + // 组织任务数据 + JSONObject jsonTask = new JSONObject(); + jsonTask.put("config_code", IOSConstant.MOVE_CONFIG_TASK); + jsonTask.put("point_code1",json.getString("turnout_struct_code")); + jsonTask.put("point_code2",json.getString("turnin_struct_code")); + jsonTask.put("vehicle_code",json.getString("storagevehicle_code")); + jsonTask.put("Priority", TaskEnum.ACS_PRIORITY.code("1")); + String task_id = moveTask.create(jsonTask); + // 明细数据 + StIvtMoveinvdtl dtlDao = new StIvtMoveinvdtl(); + dtlDao.setMoveinvdtl_id(IdUtil.getStringId()); + dtlDao.setMoveinv_id(dto.getMoveinv_id()); + dtlDao.setSeq_no(BigDecimal.valueOf(i+1)); + dtlDao.setTurnout_sect_code(json.getString("turnout_sect_code")); + dtlDao.setTurnout_struct_code(json.getString("turnout_struct_code")); + dtlDao.setMaterial_code(json.getString("material_code")); + dtlDao.setPcsn(json.getString("pcsn")); + dtlDao.setQty_unit_id(json.getString("qty_unit_id")); + dtlDao.setQty_unit_name(json.getString("qty_unit_name")); + dtlDao.setQty(json.getBigDecimal("qty")); + dtlDao.setTurnin_sect_code(json.getString("turnin_sect_code")); + dtlDao.setTurnin_struct_code(json.getString("turnin_struct_code")); + dtlDao.setWork_status(json.getString("work_status")); + dtlDao.setStoragevehicle_code(json.getString("storagevehicle_code")); + dtlDao.setRemark(json.getString("remark")); + dtlDao.setTask_id(task_id); + moveDtlList.add(dtlDao); + // 组织要更新库存的数据 + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN); + jsonIvt.put("storagevehicle_code", dtlDao.getStoragevehicle_code()); + jsonIvt.put("material_id", json.getString("material_id")); + jsonIvt.put("pcsn", dtlDao.getPcsn()); + jsonIvt.put("qty_unit_id", dtlDao.getQty_unit_id()); + jsonIvt.put("qty_unit_name", dtlDao.getQty_unit_name()); + jsonIvt.put("change_qty", dtlDao.getQty()); + jsonIvt.put("struct_code_out", dtlDao.getTurnout_struct_code()); + jsonIvt.put("struct_code_in", dtlDao.getTurnin_struct_code()); + updateIvtList.add(jsonIvt); + // 组织要更新仓位的数据 + JSONObject jsonAttrIn = new JSONObject(); + jsonAttrIn.put("struct_code",dtlDao.getTurnin_struct_code()); + jsonAttrIn.put("lock_type",IOSEnum.LOCK_TYPE.code("移入锁")); + updateAttrList.add(jsonAttrIn); + JSONObject jsonAttrOut = new JSONObject(); + jsonAttrOut.put("struct_code",dtlDao.getTurnout_struct_code()); + jsonAttrOut.put("lock_type",IOSEnum.LOCK_TYPE.code("移出锁")); + updateAttrList.add(jsonAttrOut); + } + this.saveBatch(moveDtlList); + iMdPbStoragevehicleextService.updateIvt(updateIvtList); + // 锁定仓位 + iStructattrService.updateLock(updateAttrList); + } + + @Override + public List getMoveDtl(Map whereJson) { + return this.baseMapper.getMoveDtl(whereJson); + } + + @Override + public void deleteDtl(MoveInsertDto dto) { + // 根据id/任务id查询的所有明细 + LambdaQueryWrapper lambda = new QueryWrapper().lambda(); + lambda.eq(StIvtMoveinvdtl::getMoveinv_id, dto.getMoveinv_id()); + if (ObjectUtil.isNotEmpty(dto.getTask_id())) { + lambda.eq(StIvtMoveinvdtl::getTask_id, dto.getTask_id()); + } + List oldDtlDao = this.list(lambda); + // 查询物料 + List materialList = iMdMeMaterialbaseService.list( + new QueryWrapper().lambda() + .in(MdMeMaterialbase::getMaterial_code, + oldDtlDao.stream() + .map(StIvtMoveinvdtl::getMaterial_code) + .collect(Collectors.toList()) + ) + ); + + // 需要删除的任务 + List taskDeleteList = new ArrayList<>(); + // 需要更新的库存集合 + List updateIvtList = new ArrayList<>(); + // 需要更新的仓位集合 + List updateAttrList = new ArrayList<>(); + for (StIvtMoveinvdtl dao : oldDtlDao) { + taskDeleteList.add(dao.getTask_id()); + + // 更新库存数据组织 + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); + jsonIvt.put("storagevehicle_code", dao.getStoragevehicle_code()); + MdMeMaterialbase materDao = materialList.stream() + .filter(row -> row.getMaterial_code().equals(dao.getMaterial_code())) + .findFirst().orElse(null); + jsonIvt.put("material_id", materDao.getMaterial_id()); + jsonIvt.put("pcsn", dao.getPcsn()); + jsonIvt.put("qty_unit_id", dao.getQty_unit_id()); + jsonIvt.put("qty_unit_name", dao.getQty_unit_name()); + jsonIvt.put("change_qty", dao.getQty()); + updateIvtList.add(jsonIvt); + + // 需要更新的仓位 + updateAttrList.add(dao.getTurnin_struct_code()); + updateAttrList.add(dao.getTurnout_struct_code()); + } + // 删除明细 + this.remove( + new QueryWrapper().lambda() + .eq(StIvtMoveinvdtl::getMoveinv_id, dto.getMoveinv_id()) + ); + // 更新库存 + iMdPbStoragevehicleextService.updateIvt(updateIvtList); + // 更新仓位 + iStructattrService.update( + new UpdateWrapper().lambda() + .in(Structattr::getStruct_code, updateAttrList) + .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + ); + // 删除任务 + iSchBaseTaskService.removeByIds(taskDeleteList); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java index 5944b65..b1e0b11 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java @@ -61,6 +61,10 @@ public class UpdateIvtUtils { // 减冻结 updateSubFrozenIvt(where); break; + case IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE : + // 减冻结加可用 + updateSubFrozenAddIvt(where); + break; default: break; } @@ -187,4 +191,36 @@ public class UpdateIvtUtils { } } + /** + * 减冻结加可用 + * @param where 输入参数 + */ + private void updateSubFrozenAddIvt(JSONObject where) { + // 找当前托盘物料库存 + MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, where.getString("storagevehicle_code")) + .eq(MdPbStoragevehicleext::getMaterial_id, where.getString("material_id")) + .eq(MdPbStoragevehicleext::getPcsn, where.getString("pcsn")) + ); + if (ObjectUtil.isEmpty(extDao)) { + throw new BadRequestException("当前载具【"+extDao.getStoragevehicle_code()+"】不存在相关物料批次库存,请检查数据!"); + } + + // 减冻结 + double frozen_qty = NumberUtil.sub(extDao.getFrozen_qty(), where.getDoubleValue("change_qty")).doubleValue(); + if (frozen_qty < 0) { + throw new BadRequestException("冻结数不能为负数,请检查变动数量!当前冻结数为【"+extDao.getFrozen_qty()+"】当前变动数为【"+where.getDoubleValue("change_qty")+"】"); + } + // 加可用 + double canuse_qty = NumberUtil.add(extDao.getCanuse_qty(), where.getDoubleValue("change_qty")).doubleValue(); + extDao.setFrozen_qty(BigDecimal.valueOf(frozen_qty)); + extDao.setCanuse_qty(BigDecimal.valueOf(canuse_qty)); + extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_time(DateUtil.now()); + extDao.setRemark(where.getString("remark")); + iMdPbStoragevehicleextService.updateById(extDao); + } + } diff --git a/wms/nladmin-ui/src/views/wms/pub/StructDialog.vue b/wms/nladmin-ui/src/views/wms/pub/StructDialog.vue index b82ba4f..bdf9109 100644 --- a/wms/nladmin-ui/src/views/wms/pub/StructDialog.vue +++ b/wms/nladmin-ui/src/views/wms/pub/StructDialog.vue @@ -83,7 +83,7 @@ export default { url: 'api/structattr', idField: 'struct_id', sort: 'struct_id,desc', - query: { search: '', is_lock: '1', lock_type: '', sect_id: '', stor_id: '' }, + query: { search: '', is_lock: '0', lock_type: '0', sect_id: '', stor_id: '' }, crudMethod: { ...crudStructattr } }) }, @@ -137,7 +137,7 @@ export default { */ getMsg(msg) { this.dialogDis = msg - this.lock = '1' + this.lock = '0' }, [CRUD.HOOK.beforeRefresh]() { this.crud.query.stor_id = this.storId @@ -152,7 +152,7 @@ export default { crudSectattr.getSect({ 'stor_id': this.storId }).then(res => { this.sects = res.content }) - this.query.is_lock = '1' + this.query.is_lock = '0' this.query.lock_type = this.lock this.query.is_used = '1' this.crud.toQuery() diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue new file mode 100644 index 0000000..b6cdf8c --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue @@ -0,0 +1,473 @@ + + + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue b/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue new file mode 100644 index 0000000..5b3072d --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue @@ -0,0 +1,207 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/index.vue b/wms/nladmin-ui/src/views/wms/st/movebill/index.vue new file mode 100644 index 0000000..8743bfa --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/movebill/index.vue @@ -0,0 +1,341 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/movestor.js b/wms/nladmin-ui/src/views/wms/st/movebill/movestor.js new file mode 100644 index 0000000..9a4f562 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/movebill/movestor.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/moveStor', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/moveStor/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/moveStor', + method: 'put', + data + }) +} + +export function getMoveDtl(params) { + return request({ + url: '/api/moveStor/getMoveDtl', + method: 'get', + params + }) +} + +export function confirm(data) { + return request({ + url: '/api/moveStor/confirm', + method: 'post', + data + }) +} + +export default { add, edit, del, getMoveDtl, confirm }