From 84820cbfb5ef057a9d4445529f99631c3f5c2fa3 Mon Sep 17 00:00:00 2001 From: yanps Date: Thu, 17 Oct 2024 08:48:03 +0800 Subject: [PATCH] =?UTF-8?q?opt:=20=E5=BA=93=E5=8C=BA,=E4=BB=93=E5=BA=93,?= =?UTF-8?q?=E4=BB=93=E4=BD=8D=E7=AE=A1=E7=90=86=E5=8A=9F=E8=83=BDWQL?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=88=90mybatis-plus?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/test/java/org/nl/ApplicationTest.java | 6 +- .../src/views/acs/instruction/index.vue | 2 +- lms/nladmin-system/.gitignore | 9 + .../org/nl/b_lms/sch/tasks/TwoInTask.java | 4 +- .../impl/StIvtIostorinvOutServiceImpl.java | 8 +- .../impl/StIvtIostorinvServiceImpl.java | 8 +- .../websocket/SendRegionWebSocketServer.java | 2 +- .../controller/SectattrController.java | 75 ++ .../sectattr/service/SectattrService.java | 87 ++ .../master/sectattr/service/dao/Sectattr.java | 141 +++ .../service/dao/mapper/SectattrMapper.java | 28 + .../service/dao/mapper/SectattrMapper.xml | 51 + .../sectattr/service/dto/SectattrDto.java | 179 ++++ .../service/impl/SectattrServiceImpl.java | 298 ++++++ .../controller/StorattrController.java | 82 ++ .../storattr/service/StorattrService.java | 83 ++ .../master/storattr/service/dao/Storattr.java | 138 +++ .../service/dao/mapper/StorattrMapper.java | 22 + .../service/dao/mapper/StorattrMapper.xml | 29 + .../storattr/service/dto/StorattrDto.java | 130 +++ .../service/impl/StorattrServiceImpl.java | 242 +++++ .../controller/StructattrController.java | 140 +++ .../structattr/service/StructattrService.java | 155 ++++ .../structattr/service/dao/Structattr.java | 242 +++++ .../service/dao/mapper/StructattrMapper.java | 32 + .../service/dao/mapper/StructattrMapper.xml | 46 + .../structattr/service/dto/StructattrDto.java | 234 +++++ .../service/impl/StructattrServiceImpl.java | 869 ++++++++++++++++++ .../basedata/st/rest/SectattrController.java | 6 +- .../basedata/st/rest/StorattrController.java | 6 +- .../st/rest/StructattrController.java | 6 +- .../basedata/st/service/SectattrService.java | 54 +- .../basedata/st/service/StorattrService.java | 54 +- .../st/service/StructattrService.java | 108 ++- .../st/service/impl/SectattrServiceImpl.java | 6 +- .../st/service/impl/StorattrServiceImpl.java | 6 +- .../service/impl/StructattrServiceImpl.java | 62 +- .../java/org/nl/wms/sch/tasks/InTask.java | 4 +- .../impl/RawAssistIStorServiceImpl.java | 16 +- .../src/views/wms/basedata/st/sect/index.vue | 3 +- .../views/wms/basedata/st/struct/index.vue | 7 +- 41 files changed, 3558 insertions(+), 122 deletions(-) create mode 100644 lms/nladmin-system/.gitignore create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/controller/SectattrController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/SectattrService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/Sectattr.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dto/SectattrDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/impl/SectattrServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/controller/StorattrController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/StorattrService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/Storattr.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dto/StorattrDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/impl/StorattrServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/controller/StructattrController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/StructattrService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/Structattr.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dto/StructattrDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/impl/StructattrServiceImpl.java diff --git a/acs2/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java b/acs2/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java index a2797c3..8327053 100644 --- a/acs2/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java +++ b/acs2/nladmin-system/nlsso-server/src/test/java/org/nl/ApplicationTest.java @@ -1,3 +1,4 @@ +/* package org.nl; import org.junit.jupiter.api.Test; @@ -11,11 +12,13 @@ import org.springframework.scheduling.annotation.Scheduled; import java.util.Scanner; import java.util.concurrent.*; +*/ /** * @Author: lyd * @Description: 单元测试 * @Date: 2023/5/15 - */ + *//* + @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) public class ApplicationTest { @Autowired @@ -80,3 +83,4 @@ public class ApplicationTest { } +*/ diff --git a/acs2/nladmin-ui/src/views/acs/instruction/index.vue b/acs2/nladmin-ui/src/views/acs/instruction/index.vue index 59a1a8f..e071110 100644 --- a/acs2/nladmin-ui/src/views/acs/instruction/index.vue +++ b/acs2/nladmin-ui/src/views/acs/instruction/index.vue @@ -165,7 +165,7 @@ {{ $t('task.txt_box.IN_OUT_STOCK') }} - + diff --git a/lms/nladmin-system/.gitignore b/lms/nladmin-system/.gitignore new file mode 100644 index 0000000..8c1a75b --- /dev/null +++ b/lms/nladmin-system/.gitignore @@ -0,0 +1,9 @@ +### IDEA ### +*/*.log +.idea/* +*.iml +*/target/* +*/*.iml +/.gradle/ +/target/* +*/application-dev.yml diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInTask.java index d708fd9..bd591fd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/TwoInTask.java @@ -16,8 +16,8 @@ import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; -import org.nl.wms.basedata.st.service.dto.StructattrDto; -import org.nl.wms.basedata.st.service.impl.StructattrServiceImpl; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.nl.wms.basedata.master.structattr.service.impl.StructattrServiceImpl; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java index 6c1b82a..64896ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvOutServiceImpl.java @@ -36,8 +36,8 @@ import org.nl.common.utils.CodeUtil; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.system.service.param.ISysParamService; -import org.nl.wms.basedata.st.service.StorattrService; -import org.nl.wms.basedata.st.service.dto.StorattrDto; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.util.TranUtil; @@ -757,7 +757,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl needUpdateIvtList = new ArrayList<>(); @@ -1593,7 +1593,7 @@ public class StIvtIostorinvOutServiceImpl extends ServiceImpl row.getString("task_id").equals(json.getString("task_code"))) .collect(Collectors.toList()).get(0); - + // 完成 if (jsonTask.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java index 4eff639..5aeb8e1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/storage_manage/ios/service/iostorInv/impl/StIvtIostorinvServiceImpl.java @@ -43,8 +43,8 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.system.service.param.ISysParamService; import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.nl.wms.basedata.st.service.StorattrService; -import org.nl.wms.basedata.st.service.dto.StorattrDto; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; @@ -725,7 +725,7 @@ public class StIvtIostorinvServiceImpl extends ServiceImpl query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(sectattrService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增库区") + public ResponseEntity create(@Validated @RequestBody SectattrDto dto) { + sectattrService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改库区") + public ResponseEntity update(@Validated @RequestBody SectattrDto dto) { + sectattrService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除库区") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + sectattrService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getSect") + @Log("查询库区下拉框") + public ResponseEntity querySect(@RequestParam Map whereJson) { + return new ResponseEntity<>(sectattrService.getSect(whereJson), HttpStatus.OK); + } + + @PostMapping("/getStorSect") + @Log("查询指定仓库库区") + public ResponseEntity getStorSect(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(sectattrService.getStorSect(whereJson), HttpStatus.OK); + } + + @PutMapping("/changeActive") + @Log("修改库区状态") + public ResponseEntity update(@RequestBody JSONObject json) { + sectattrService.changeActive(json); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/SectattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/SectattrService.java new file mode 100644 index 0000000..2c8c00c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/SectattrService.java @@ -0,0 +1,87 @@ +package org.nl.wms.basedata.master.sectattr.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.basedata.master.sectattr.service.dao.Sectattr; +import org.nl.wms.basedata.master.sectattr.service.dto.SectattrDto; +import org.springframework.data.domain.Pageable; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhouz + * @description 服务接口 + * @date 2021-12-09 + **/ +public interface SectattrService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + HashMap queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param sect_id ID + * @return Sectattr + */ + SectattrDto findById(Long sect_id); + + /** + * 根据编码查询 + * + * @param code code + * @return Sectattr + */ + SectattrDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(SectattrDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(SectattrDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); + + JSONObject getSect(Map whereJson); + + JSONObject getStorSect(JSONObject whereJson); + + /** + * 改变启用状态 + * + * @param json + */ + void changeActive(JSONObject json); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/Sectattr.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/Sectattr.java new file mode 100644 index 0000000..4fbeb09 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/Sectattr.java @@ -0,0 +1,141 @@ +package org.nl.wms.basedata.master.sectattr.service.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + * @author LENOVO + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_sectattr") +public class Sectattr { + /** + * 库区标识 + */ + @TableId(value = "sect_id", type = IdType.NONE) + private String sect_id; + /** + * 库区编码 + */ + private String sect_code; + /** + * 库区名称 + */ + private String sect_name; + /** + * 库区简称 + */ + private String simple_name; + /** + * 库区类型 + */ + private String sect_type_attr; + /** + * 仓库标识 + */ + private String stor_id; + /** + * 仓库类型 + */ + private String stor_type; + /** + * 容量 + */ + private String capacity; + /** + * 宽度 + */ + private String width; + /** + * 高度 + */ + private String height; + /** + * 深度 + */ + private String zdepth; + /** + * 起始X坐标 + */ + private String xqty; + /** + * 起始Y坐标 + */ + private String yqty; + /** + * 起始Z坐标 + */ + private String zqty; + /** + * 负责人 + */ + private String sect_manager_name; + /** + * 负责人电话 + */ + private String mobile_no; + /** + * 备注 + */ + private String remark; + /** + * 创建人 + */ + private String create_id; + /** + * 创建人姓名 + */ + private String create_name; + /** + * 创建时间 + */ + private String create_time; + /** + * 修改人 + */ + private String update_optid; + /** + * 修改人姓名 + */ + private String update_optname; + /** + * 修改时间 + */ + private String update_time; + /** + * 是否删除 + */ + private boolean is_delete; + /** + * 背景色 + */ + private String back_ground_color; + /** + * 前景色 + */ + private String front_ground_color; + /** + * 背景图片 + */ + private String back_ground_pic; + /** + * 字体显示方向 + */ + private String font_direction_scode; + /** + * 所在楼层 + */ + private String floor_no; + /** + * 是否启用 + */ + private String is_used; + /** + * 外部标识 + */ + private String ext_id; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.java new file mode 100644 index 0000000..bf5097e --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.java @@ -0,0 +1,28 @@ +package org.nl.wms.basedata.master.sectattr.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.ibatis.annotations.Param; +import org.nl.modules.common.annotation.Query; +import org.nl.wms.basedata.master.sectattr.service.dao.Sectattr; +import org.springframework.data.domain.Pageable; + +import java.util.HashMap; +import java.util.List; + +/** + * @author LENOVO + */ +public interface SectattrMapper extends BaseMapper { + + + /** + * 查询库区 + * @param jo + * @return + */ + List queryAll(@Param("jo")JSONObject jo, @Param("page") Pageable page); + + int getTatol(@Param("jo")JSONObject jsonObject); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.xml b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.xml new file mode 100644 index 0000000..f084fe9 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dao/mapper/SectattrMapper.xml @@ -0,0 +1,51 @@ + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dto/SectattrDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dto/SectattrDto.java new file mode 100644 index 0000000..d072e75 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/dto/SectattrDto.java @@ -0,0 +1,179 @@ +package org.nl.wms.basedata.master.sectattr.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhouz + * @description / + * @date 2021-12-09 + **/ +@Data +public class SectattrDto implements Serializable { + + /** 库区标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long sect_id; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 库区简称 + */ + private String simple_name; + + /** + * 库区类型 + */ + private String sect_type_attr; + + /** + * 仓库标识 + */ + private Long stor_id; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 仓库类型 + */ + private String stor_type; + + /** + * 容量 + */ + private BigDecimal capacity; + + /** + * 宽度 + */ + private BigDecimal width; + + /** + * 高度 + */ + private BigDecimal height; + + /** + * 深度 + */ + private BigDecimal zdepth; + + /** + * 起始X坐标 + */ + private BigDecimal xqty; + + /** + * 起始Y坐标 + */ + private BigDecimal yqty; + + /** + * 起始Z坐标 + */ + private BigDecimal zqty; + + /** + * 负责人 + */ + private String sect_manager_name; + + /** + * 负责人电话 + */ + private String mobile_no; + + /** + * 备注 + */ + private String remark; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 背景色 + */ + private String back_ground_color; + + /** + * 前景色 + */ + private String front_ground_color; + + /** + * 背景图片 + */ + private String back_ground_pic; + + /** + * 字体显示方向 + */ + private String font_direction_scode; + + /** + * 所在楼层 + */ + private BigDecimal floor_no; + + /** + * 是否启用 + */ + private String is_used; + + /** + * 外部标识 + */ + private String ext_id; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/impl/SectattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/impl/SectattrServiceImpl.java new file mode 100644 index 0000000..9422a0f --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/sectattr/service/impl/SectattrServiceImpl.java @@ -0,0 +1,298 @@ +package org.nl.wms.basedata.master.sectattr.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +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.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.system.service.logicflow.dao.StageImage; +import org.nl.wms.basedata.master.sectattr.service.dao.Sectattr; +import org.nl.wms.basedata.master.sectattr.service.dao.mapper.SectattrMapper; +import org.nl.wms.basedata.master.sectattr.service.SectattrService; +import org.nl.wms.basedata.master.structattr.service.StructattrService; +import org.nl.wms.basedata.master.structattr.service.dao.Structattr; +import org.nl.wms.basedata.master.structattr.service.impl.StructattrServiceImpl; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.sectattr.service.dto.SectattrDto; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhouz + * @description 服务实现 + * @date 2021-12-09 + **/ +@Service("sectattrService2") +@RequiredArgsConstructor +@Slf4j +public class SectattrServiceImpl extends ServiceImpl implements SectattrService { + + @Autowired + private StorattrService storattrService; + @Autowired + private SectattrMapper sectattrMapper; + @Autowired + private StructattrService structattrServiceImpl; + + @Override + public HashMap queryAll(Map whereJson, Pageable page) { + String search = (String) whereJson.get("search"); + JSONObject jsonObject = new JSONObject(); + if (!StrUtil.isEmpty(search)) { + jsonObject.put("search", search); + } + jsonObject.put("stor_id", whereJson.get("stor_id")); + //获取人员对应的仓库 + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + if (ObjectUtil.isNotEmpty(in_stor_id)) { + String substring = in_stor_id.substring(1, in_stor_id.length() - 1); + String replace = substring.replace("\'", ""); + String[] split = replace.split(","); + List strings = CollUtil.toList(split); + jsonObject.put("in_stor_id", strings); + } + List sectattrs = sectattrMapper.queryAll(jsonObject, page); + int tatol = sectattrMapper.getTatol(jsonObject); + HashMap sectattrPage = new HashMap<>(); + sectattrPage.put("totalElements", tatol); + sectattrPage.put("content", sectattrs); + return sectattrPage; + } + + @Override + public List queryAll(Map whereJson) { + List sectattrs = sectattrMapper.selectList(null); + return BeanUtil.copyToList(sectattrs, SectattrDto.class); + } + + @Override + public SectattrDto findById(Long sect_id) { + Sectattr sectattr = sectattrMapper.selectOne(Wrappers.lambdaQuery(Sectattr.class) + .eq(ObjectUtil.isNotEmpty(sect_id), Sectattr::getSect_id, sect_id)); + return BeanUtil.copyProperties(sectattr, SectattrDto.class); + } + + @Override + public SectattrDto findByCode(String code) { + Sectattr sectattr = sectattrMapper.selectOne(Wrappers.lambdaQuery(Sectattr.class) + .eq(ObjectUtil.isNotEmpty(code), Sectattr::getSect_code, code)); + return BeanUtil.copyProperties(sectattr, SectattrDto.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(SectattrDto dto) { + String sect_code = dto.getSect_code(); + Sectattr sectattr = sectattrMapper.selectOne(Wrappers.lambdaQuery(Sectattr.class) + .eq(ObjectUtil.isNotEmpty(sect_code), Sectattr::getSect_code, sect_code) + .eq(ObjectUtil.isNotEmpty(dto.getStor_id()), Sectattr::getStor_id, dto.getStor_id())); + if (ObjectUtil.isNotEmpty(sectattr)) { + throw new BadRequestException("存在相同仓库的库区编号"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setSect_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + StorattrDto storattrDto = storattrService.findById(dto.getStor_id()); + dto.setStor_name(storattrDto.getStor_name()); + sectattrMapper.insert(BeanUtil.copyProperties(dto, Sectattr.class)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(SectattrDto dto) { + SectattrDto entity = this.findById(dto.getSect_id()); + if (entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + String sect_code = dto.getSect_code(); + + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + StorattrDto storattrDto = storattrService.findById(dto.getStor_id()); + dto.setStor_name(storattrDto.getStor_name()); + + sectattrMapper.updateById(BeanUtil.copyProperties(dto, Sectattr.class)); + List sectattrs = sectattrMapper.selectList(Wrappers.lambdaQuery(Sectattr.class) + .eq(ObjectUtil.isNotEmpty(sect_code), Sectattr::getSect_code, sect_code) + .eq(ObjectUtil.isNotEmpty(dto.getSect_id()), Sectattr::getSect_id, dto.getSect_id()) + ); + if (sectattrs.size() > 1) { + throw new BadRequestException("存在相同仓库的库区编号"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + for (Long sect_id : ids) { + Sectattr sectattr = new Sectattr(); + sectattr.setSect_id(String.valueOf(sect_id)); + sectattr.set_delete(true); + sectattr.setUpdate_time(now); + sectattr.setUpdate_optid(currentUserId); + sectattr.setUpdate_optname(nickName); + sectattrMapper.updateById(sectattr); + } + } + + @Override + public JSONObject getSect(Map whereJson) { + JSONArray new_ja = new JSONArray(); + HashMap stor_map = new HashMap<>(); + stor_map.put("flag", "2"); + String is_materialstore = (String) whereJson.get("is_materialstore"); + String is_virtualstore = (String) whereJson.get("is_virtualstore"); + String is_semi_finished = (String) whereJson.get("is_semi_finished"); + String is_productstore = (String) whereJson.get("is_productstore"); + String is_attachment = (String) whereJson.get("is_attachment"); + String is_reversed = (String) whereJson.get("is_reversed"); + if (!StrUtil.isEmpty(is_materialstore)) { + stor_map.put("is_materialstore", is_materialstore); + } + if (!StrUtil.isEmpty(is_virtualstore)) { + stor_map.put("is_virtualstore", is_virtualstore); + } + if (!StrUtil.isEmpty(is_semi_finished)) { + stor_map.put("is_semi_finished", is_semi_finished); + } + if (!StrUtil.isEmpty(is_productstore)) { + stor_map.put("is_productstore", is_productstore); + } + if (!StrUtil.isEmpty(is_attachment)) { + stor_map.put("is_attachment", is_attachment); + } + if (!StrUtil.isEmpty(is_reversed)) { + stor_map.put("is_reversed", is_reversed); + } + sectattrMapper.selectList(Wrappers.lambdaQuery(Sectattr.class) + .eq(StrUtil.isNotEmpty(is_reversed), Sectattr::getZdepth, is_reversed)); + JSONArray stor_ja = WQL.getWO("QST_STOR_ATTR").addParamMap(stor_map).process().getResultJSONArray(0); + for (int i = 0; i < stor_ja.size(); i++) { + JSONObject stor_jo = stor_ja.getJSONObject(i); + JSONObject stor_cas = new JSONObject(); + stor_cas.put("value", stor_jo.getString("stor_id")); + stor_cas.put("label", stor_jo.getString("stor_name")); + HashMap map = new HashMap<>(); + map.put("flag", "2"); + map.put("stor_id", stor_jo.getString("stor_id")); + map.put("sect_type_attr", (String) whereJson.get("sect_type_attr")); + JSONArray ja = WQL.getWO("QST_SECT_ATTR").addParamMap(map).process().getResultJSONArray(0); + if (ja.size() > 0) { + JSONArray sect_ja = new JSONArray(); + for (int j = 0; j < ja.size(); j++) { + JSONObject sect_jo = ja.getJSONObject(j); + JSONObject sect_cas = new JSONObject(); + sect_cas.put("value", sect_jo.getString("sect_id")); + sect_cas.put("label", sect_jo.getString("sect_name")); + sect_ja.add(sect_cas); + } + stor_cas.put("children", sect_ja); + } + new_ja.add(stor_cas); + } + JSONObject jo = new JSONObject(); + jo.put("content", new_ja); + return jo; + } + + @Override + public JSONObject getStorSect(JSONObject whereJson) { + List sectattrs = sectattrMapper.selectList(Wrappers.lambdaQuery(Sectattr.class) + .eq(Sectattr::getStor_id, "1582991156504039424") + .eq(Sectattr::getSect_type_attr, "09")); + JSONArray ja = new JSONArray(); + for (int i = 0; i < sectattrs.size(); i++) { + Sectattr sectattr = sectattrs.get(i); + JSONObject jo = new JSONObject(); + jo.put("value", sectattr.getSect_id()); + jo.put("text", sectattr.getSect_name()); + ja.add(jo); + } + JSONObject result = new JSONObject(); + result.put("data", ja); + return result; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void changeActive(JSONObject json) { + + String stor_id = json.getString("stor_id"); + JSONObject st_ivt_bsRealStorAttr = WQLObject.getWQLObject("ST_IVT_BSRealStorAttr").query(" stor_id = '" + stor_id + "' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(st_ivt_bsRealStorAttr)) { + throw new BadRequestException("该库区所属的仓库已禁用,请先启用该仓库!"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + String is_used = "1"; + if (StrUtil.equals("1", json.getString("is_used"))) { + is_used = "0"; + } + json.put("is_used", is_used); + json.put("update_optid", currentUserId); + json.put("update_optname", nickName); + json.put("update_time", now); + sectattrMapper.updateById(BeanUtil.copyProperties(json, Sectattr.class)); + + String sect_id = json.getString("sect_id"); + json = new JSONObject(); + json.put("sect_id", sect_id); + json.put("is_used", is_used); + json.put("update_optid", currentUserId); + json.put("update_optname", nickName); + json.put("update_time", now); + structattrServiceImpl.update(BeanUtil.copyProperties(json, Structattr.class), + Wrappers.lambdaQuery(Structattr.class) + .eq(Structattr::getSect_id, sect_id)); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/controller/StorattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/controller/StorattrController.java new file mode 100644 index 0000000..ccee788 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/controller/StorattrController.java @@ -0,0 +1,82 @@ +package org.nl.wms.basedata.master.storattr.controller; + + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.storattr.service.dao.Storattr; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.springframework.data.domain.Pageable; +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; + +/** + * @author zhouz + * @date 2021-12-08 + **/ +@RestController +@RequiredArgsConstructor + +@RequestMapping("/api/Storattr") +@Slf4j +public class StorattrController { + + private final StorattrService storattrService; + + @GetMapping + @Log("查询仓库") + + //@PreAuthorize("@el.check('Storattr:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(storattrService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增仓库") + + //@PreAuthorize("@el.check('Storattr:addgetStor')") + public ResponseEntity create(@Validated @RequestBody StorattrDto dto) { + storattrService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改仓库") + + //@PreAuthorize("@el.check('Storattr:edit')") + public ResponseEntity update(@Validated @RequestBody StorattrDto dto) { + storattrService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除仓库") + + //@PreAuthorize("@el.check('Storattr:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + storattrService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getStor") + @Log("查询仓库下拉框") + + //@PreAuthorize("@el.check('materialtype:list')") + public ResponseEntity queryStor(@RequestParam Map whereJson) { + return new ResponseEntity<>(storattrService.getStor(whereJson), HttpStatus.OK); + } + + @PutMapping("/changeActive") + @Log("修改仓库管理状态") + + public ResponseEntity update(@RequestBody Storattr json) { + storattrService.changeActive(json); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/StorattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/StorattrService.java new file mode 100644 index 0000000..a5e5a95 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/StorattrService.java @@ -0,0 +1,83 @@ +package org.nl.wms.basedata.master.storattr.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.basedata.master.storattr.service.dao.Storattr; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author zhouz + * @description 服务接口 + * @date 2021-12-08 + **/ +public interface StorattrService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param stor_id ID + * @return Storattr + */ + StorattrDto findById(Long stor_id); + + /** + * 根据编码查询 + * + * @param code code + * @return Storattr + */ + StorattrDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(StorattrDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(StorattrDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); + + JSONObject getStor(Map whereJson); + + /** + * 改变启用状态 + * + * @param json + */ + void changeActive(Storattr storattr); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/Storattr.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/Storattr.java new file mode 100644 index 0000000..d1796dc --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/Storattr.java @@ -0,0 +1,138 @@ +package org.nl.wms.basedata.master.storattr.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhouz + * @description / + * @date 2021-12-08 + **/ +@Data +@AllArgsConstructor +@NoArgsConstructor +@TableName("st_ivt_bsrealstorattr") +public class Storattr implements Serializable { + + /** + * 防止精度丢失 + */ + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 简称 + */ + private String simple_name; + + /** + * 容量 + */ + private BigDecimal stor_capacity; + + /** + * 总面积(㎡) + */ + private BigDecimal total_area; + + /** + * 仓库性质 + */ + private String stor_type_scode; + + private String is_virtualstore; + + private String is_semi_finished; + + private String is_materialstore; + + private String is_productstore; + + private String is_reversed; + + private String is_mvout_auto_cfm; + + private String is_mvin_auto_cfm; + + private String area; + + /** + * 地址 + */ + private String storea_ddress; + + /** + * 负责人 + */ + private String principal; + + /** + * 联系电话 + */ + private String office_phone; + + private String mobile_no; + + /** + * 备注 + */ + private String remark; + + private BigDecimal order_index; + + private String whstate_scode; + + /** + * 是否启用 + */ + private String is_used; + + private String base_class_id; + + private String create_id; + + private String create_name; + + private String create_time; + + private String update_optid; + + private String update_optname; + + private String update_time; + + private Long sysownerid; + + private Long sysdeptid; + + private Long syscompanyid; + + private String is_delete; + + private String ext_id; + + private String depart_name; + + private String company_name; + + private String is_attachment; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.java new file mode 100644 index 0000000..9f225bf --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.java @@ -0,0 +1,22 @@ +package org.nl.wms.basedata.master.storattr.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.basedata.master.storattr.service.dao.Storattr; +import org.nl.wms.basedata.master.structattr.service.dao.Structattr; +import org.springframework.data.domain.Pageable; + +import java.util.HashMap; +import java.util.List; + +public interface StorattrMapper extends BaseMapper { + + /** + * 分页查询 + * @param map + * @return + */ + List queryAll(@Param("map")HashMap map,@Param("page") Pageable page); + + int queryAllTotal(@Param("map")HashMap map); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.xml b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.xml new file mode 100644 index 0000000..5cac933 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dao/mapper/StorattrMapper.xml @@ -0,0 +1,29 @@ + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dto/StorattrDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dto/StorattrDto.java new file mode 100644 index 0000000..1c967c8 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/dto/StorattrDto.java @@ -0,0 +1,130 @@ +package org.nl.wms.basedata.master.storattr.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhouz + * @description / + * @date 2021-12-08 + **/ +@Data +public class StorattrDto implements Serializable { + + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 简称 + */ + private String simple_name; + + /** + * 容量 + */ + private BigDecimal stor_capacity; + + /** + * 总面积(㎡) + */ + private BigDecimal total_area; + + /** + * 仓库性质 + */ + private String stor_type_scode; + + private String is_virtualstore; + + private String is_semi_finished; + + private String is_materialstore; + + private String is_productstore; + + private String is_reversed; + + private String is_mvout_auto_cfm; + + private String is_mvin_auto_cfm; + + private String area; + + /** + * 地址 + */ + private String storea_ddress; + + /** + * 负责人 + */ + private String principal; + + /** + * 联系电话 + */ + private String office_phone; + + private String mobile_no; + + /** + * 备注 + */ + private String remark; + + private BigDecimal order_index; + + private String whstate_scode; + + /** + * 是否启用 + */ + private String is_used; + + private String base_class_id; + + private String create_id; + + private String create_name; + + private String create_time; + + private String update_optid; + + private String update_optname; + + private String update_time; + + private Long sysownerid; + + private Long sysdeptid; + + private Long syscompanyid; + + private String is_delete; + + private String ext_id; + + private String depart_name; + + private String company_name; + + private String is_attachment; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/impl/StorattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/impl/StorattrServiceImpl.java new file mode 100644 index 0000000..7066dfe --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/storattr/service/impl/StorattrServiceImpl.java @@ -0,0 +1,242 @@ +package org.nl.wms.basedata.master.storattr.service.impl; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import net.dreamlu.mica.core.utils.BeanUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.basedata.master.sectattr.service.SectattrService; +import org.nl.wms.basedata.master.sectattr.service.dao.Sectattr; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.storattr.service.dao.Storattr; +import org.nl.wms.basedata.master.storattr.service.dao.mapper.StorattrMapper; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.nl.wms.basedata.master.structattr.service.StructattrService; +import org.nl.wms.basedata.master.structattr.service.dao.Structattr; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhouz + * @description 服务实现 + * @date 2021-12-08 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class StorattrServiceImpl extends ServiceImpl implements StorattrService { + + @Autowired + private StorattrMapper storattrMapper; + @Autowired + private StructattrService structattrServiceImpl; + @Autowired + private SectattrService sectattrServiceImpl; + + @Override + public Map queryAll(Map whereJson, Pageable page) { + String search = (String) whereJson.get("search"); + HashMap map = new HashMap<>(); + if (!StrUtil.isEmpty(search)) { + map.put("search", search); + } + List storattrList = storattrMapper.queryAll(map, page); + int tatol = storattrMapper.queryAllTotal(map); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("totalElements", tatol); + jsonObject.put("content", storattrList); + return jsonObject; + } + + @Override + public List queryAll(Map whereJson) { + return BeanUtil.copyProperties(storattrMapper.selectList(null), StorattrDto.class); + } + + @Override + public StorattrDto findById(Long stor_id) { + Storattr storattr = storattrMapper.selectById(stor_id); + return BeanUtil.copyProperties(storattr, StorattrDto.class); + } + + @Override + public StorattrDto findByCode(String code) { + Storattr storattr = storattrMapper.selectOne(Wrappers.lambdaQuery(Storattr.class) + .eq(Storattr::getStor_code, code)); + return BeanUtil.copyProperties(storattr, StorattrDto.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(StorattrDto dto) { + String stor_code = dto.getStor_code(); + StorattrDto storattrDto = this.findByCode(stor_code); + if (storattrDto != null && "0".equals(storattrDto.getIs_delete())) { + throw new BadRequestException("存在相同的仓库编号"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setStor_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + + //TODO + dto.setSyscompanyid(9L); + dto.setSysdeptid(9L); + dto.setSysownerid(9L); + + storattrMapper.insert(BeanUtil.copyProperties(dto, Storattr.class)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(StorattrDto dto) { + StorattrDto entity = this.findById(dto.getStor_id()); + if (entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + String stor_code = dto.getStor_code(); + StorattrDto storattrDto = this.findByCode(stor_code); + if (storattrDto != null && !dto.getStor_id().equals(storattrDto.getStor_id()) && "0".equals(storattrDto.getIs_delete())) { + throw new BadRequestException("存在相同的供应商编号"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setSyscompanyid(dto.getSysdeptid()); + + storattrMapper.updateById(BeanUtil.copyProperties(dto, Storattr.class)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + for (Long stor_id : ids) { + Storattr storattr = new Storattr(); + storattr.setStor_id(stor_id); + storattr.setIs_delete("1"); + storattr.setUpdate_optid(currentUserId); + storattr.setUpdate_optname(nickName); + storattr.setUpdate_time(now); + storattrMapper.updateById(storattr); + } + } + + @Override + public JSONObject getStor(Map whereJson) { + String is_materialstore = (String) whereJson.get("is_materialstore"); + String is_virtualstore = (String) whereJson.get("is_virtualstore"); + String is_semi_finished = (String) whereJson.get("is_semi_finished"); + String is_productstore = (String) whereJson.get("is_productstore"); + String is_attachment = (String) whereJson.get("is_attachment"); + String is_reversed = (String) whereJson.get("is_reversed"); + HashMap map = new HashMap<>(); + map.put("flag", "2"); + if (!StrUtil.isEmpty(is_materialstore)) { + map.put("is_materialstore", is_materialstore); + } + if (!StrUtil.isEmpty(is_virtualstore)) { + map.put("is_virtualstore", is_virtualstore); + } + if (!StrUtil.isEmpty(is_semi_finished)) { + map.put("is_semi_finished", is_semi_finished); + } + if (!StrUtil.isEmpty(is_productstore)) { + map.put("is_productstore", is_productstore); + } + if (!StrUtil.isEmpty(is_attachment)) { + map.put("is_attachment", is_attachment); + } + if (!StrUtil.isEmpty(is_reversed)) { + map.put("is_reversed", is_reversed); + } + List storattrs = storattrMapper.selectList(Wrappers.lambdaQuery(Storattr.class) + .eq(Storattr::getIs_delete, "0") + .eq(Storattr::getIs_used, "1") + .in(StrUtil.isNotEmpty(map.get("in_stor_id")), Storattr::getStor_id, Arrays.asList(map.get("in_stor_id").split(","))) + .eq(StrUtil.isNotEmpty(map.get("is_virtualstore")), Storattr::getIs_virtualstore, map.get("is_virtualstore")) + .eq(StrUtil.isNotEmpty(map.get("is_semi_finished")), Storattr::getIs_semi_finished, map.get("is_semi_finished")) + .eq(StrUtil.isNotEmpty(map.get("is_materialstore")), Storattr::getIs_materialstore, map.get("is_materialstore")) + .eq(StrUtil.isNotEmpty(map.get("is_productstore")), Storattr::getIs_productstore, map.get("is_productstore")) + .eq(StrUtil.isNotEmpty(map.get("is_reversed")), Storattr::getIs_reversed, map.get("is_reversed")) + .eq(StrUtil.isNotEmpty(map.get("is_attachment")), Storattr::getIs_attachment, map.get("is_attachment")) + .orderByDesc(Storattr::getUpdate_time) + ); + JSONArray ja = WQL.getWO("QST_STOR_ATTR").addParamMap(map).process().getResultJSONArray(0); + JSONObject jo = new JSONObject(); + jo.put("content", storattrs); + return jo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void changeActive(Storattr storattr) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + String is_used = "1"; + if (StrUtil.equals("1", storattr.getIs_used())) { + is_used = "0"; + } + storattr.setIs_used(is_used); + storattr.setUpdate_optid(currentUserId); + storattr.setUpdate_optname(nickName); + storattr.setUpdate_time(now); + storattrMapper.updateById(storattr); + + //同时修改该stor_id仓库下仓位和库区的启用状态 + Long stor_id = storattr.getStor_id(); + Structattr structattr = new Structattr(); + structattr.setIs_used(is_used); + structattr.setUpdate_optid(currentUserId); + structattr.setUpdate_optname(nickName); + structattr.setUpdate_time(now); + structattrServiceImpl.update(structattr, + Wrappers.lambdaUpdate(Structattr.class).eq(Structattr::getStor_id, stor_id)); + + Sectattr sectattr = new Sectattr(); + sectattr.setIs_used(is_used); + sectattr.setUpdate_optid(currentUserId); + sectattr.setUpdate_optname(nickName); + sectattr.setUpdate_time(now); + sectattrServiceImpl.update(sectattr, + Wrappers.lambdaUpdate(Sectattr.class).eq(Sectattr::getStor_id, stor_id)); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/controller/StructattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/controller/StructattrController.java new file mode 100644 index 0000000..ef90012 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/controller/StructattrController.java @@ -0,0 +1,140 @@ +package org.nl.wms.basedata.master.structattr.controller; + + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.logging.annotation.Log; +import org.nl.wms.basedata.master.structattr.service.StructattrService; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.springframework.data.domain.Pageable; +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; + +/** + * @author zhouz + * @date 2021-12-09 + **/ +@RestController +@RequiredArgsConstructor + +@RequestMapping("/api/structattr") +@Slf4j +public class StructattrController { + + private final StructattrService structattrService; + + @GetMapping + @Log("查询仓位") + + //@PreAuthorize("@el.check('structattr:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(structattrService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增仓位") + + //@PreAuthorize("@el.check('structattr:add')") + public ResponseEntity create(@Validated @RequestBody StructattrDto dto) { + structattrService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改仓位") + + //@PreAuthorize("@el.check('structattr:edit')") + public ResponseEntity update(@Validated @RequestBody StructattrDto dto) { + structattrService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除仓位") + + //@PreAuthorize("@el.check('structattr:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + structattrService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping("/changeActive") + @Log("修改仓位状态") + + public ResponseEntity update(@RequestBody JSONObject json) { + structattrService.changeActive(json); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping("/getStructByCodes") + @Log("获取仓位信息") + + public ResponseEntity getStructByCodes(@RequestBody String json) { + JSONArray jsonArray = JSONArray.parseArray(json); + return new ResponseEntity<>(structattrService.getStructByCodes(jsonArray), HttpStatus.OK); + } + + @PostMapping("/getStructByCodesFs") + @Log("获取点位信息") + + public ResponseEntity getStructByCodesFs(@RequestBody String json) { + JSONArray jsonArray = JSONArray.parseArray(json); + return new ResponseEntity<>(structattrService.getStructByCodesFs(jsonArray), HttpStatus.OK); + } + + @PostMapping("/getStructByCodesFsTwo") + @Log("获取点位信息(二期)") + + public ResponseEntity getStructByCodesFsTwo(@RequestBody String json) { + JSONArray jsonArray = JSONArray.parseArray(json); + return new ResponseEntity<>(structattrService.getStructByCodesFsTwo(jsonArray), HttpStatus.OK); + } + + @PostMapping("/unLockPoint") + @Log("解锁点位") + + public ResponseEntity unLockPoint(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(structattrService.unLockPoint(whereJson), HttpStatus.OK); + } + + @PostMapping("/unLockPointTwo") + @Log("解锁点位(二期)") + + public ResponseEntity unLockPointTwo(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(structattrService.unLockPointTwo(whereJson), HttpStatus.OK); + } + + @PostMapping("/oneCreate") + @Log("一键生成货位") + public ResponseEntity oneCreate(@RequestBody JSONObject whereJson) { + structattrService.oneCreate(whereJson); + return new ResponseEntity<>( HttpStatus.OK); + } + + @PostMapping("/blurQuery") + @Log("校验前缀是否可用") + public ResponseEntity blurQuery(@RequestBody JSONObject whereJson) { + structattrService.blurQuery(whereJson); + return new ResponseEntity<>( HttpStatus.OK); + } + + @PostMapping("/tunConfirm") + @Log("二期禁用巷道") + public ResponseEntity tunConfirm(@RequestBody JSONObject json) { + structattrService.tunConfirm(json); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/twoVehicleIvt") + @Log("查询二期空托盘库存") + public ResponseEntity twoVehicleIvt(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(structattrService.twoVehicleIvt(whereJson, page), HttpStatus.OK); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/StructattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/StructattrService.java new file mode 100644 index 0000000..3f3ccf8 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/StructattrService.java @@ -0,0 +1,155 @@ +package org.nl.wms.basedata.master.structattr.service; + +import com.alibaba.fastjson.JSONArray; +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.basedata.master.structattr.service.dao.Structattr; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** + * @author zhouz + * @description 服务接口 + * @date 2021-12-09 + **/ +public interface StructattrService extends IService { + + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, PageQuery page); + + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * + * @param struct_id ID + * @return Structattr + */ + StructattrDto findById(Long struct_id); + + /** + * 根据编码查询 + * + * @param code code + * @return Structattr + */ + StructattrDto findByCode(String code); + + + /** + * 创建 + * + * @param dto / + */ + void create(StructattrDto dto); + + /** + * 编辑 + * + * @param dto / + */ + void update(StructattrDto dto); + + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 改变启用状态 + * + * @param json + */ + void changeActive(JSONObject json); + + /** + * 获取仓位信息 + * + * @return + */ + JSONArray getStructByCodes(JSONArray json); + + /** + * 获取点位信息 + * + * @return + */ + JSONArray getStructByCodesFs(JSONArray json); + /** + * 获取点位信息(二期) + *wo + * @return + */ + JSONArray getStructByCodesFsTwo(JSONArray json); + Map getStructByCodesFsAnNum(JSONArray json); + + /** + * 解锁点位 + * + * @return + */ + JSONObject unLockPoint(JSONObject whereJson); + + /** + * 一键生成货位 + * @param whereJson { + * stor_id: 仓库id + * sect_id: 库区id + * prefix: 仓位前缀 + * num: 生成数量 + * } + */ + void oneCreate(JSONObject whereJson); + + /** + * 校验前缀是否可用 + * @param whereJson { + * prefix: 前缀 + * } + */ + void blurQuery(JSONObject whereJson); + + /** + * 二期禁用巷道 + * @param json :{ + * block_num: 巷道 + * is_used: 0-禁用,1-启用 + * } + */ + void tunConfirm(JSONObject json); + + /** + * 点位解锁 + * @param whereJson:{点位信息} + * @return 、 + */ + JSONObject unLockPointTwo(JSONObject whereJson); + + /** + * 查询二期空托盘库存数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + IPage twoVehicleIvt(Map whereJson, Pageable page); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/Structattr.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/Structattr.java new file mode 100644 index 0000000..3b3e33d --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/Structattr.java @@ -0,0 +1,242 @@ +package org.nl.wms.basedata.master.structattr.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +@Data +@TableName("st_ivt_structattr") +public class Structattr implements Serializable { + + + /** 仓位标识 */ + /** + * 防止精度丢失 + */ + @TableId + @JsonSerialize(using = ToStringSerializer.class) + private Long struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 仓位简称 + */ + private String simple_name; + + /** + * 库区标识 + */ + private Long sect_id; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 仓库标识 + */ + private Long stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 仓库类型 + */ + private String stor_type; + + /** + * 容量 + */ + private BigDecimal capacity; + + /** + * 宽度 + */ + private BigDecimal width; + + /** + * 高度 + */ + private BigDecimal height; + + /** + * 深度 + */ + private BigDecimal zdepth; + + /** + * 承受重量 + */ + private BigDecimal weight; + + /** + * 起始X坐标 + */ + private BigDecimal xqty; + + /** + * 起始Y坐标 + */ + private BigDecimal yqty; + + /** + * 起始Z坐标 + */ + private BigDecimal zqty; + + /** + * 是否临时仓位 + */ + private String is_tempstruct; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 背景色 + */ + private String back_ground_color; + + /** + * 前景色 + */ + private String front_ground_color; + + /** + * 背景图片 + */ + private String back_ground_pic; + + /** + * 字体显示方向 + */ + private String font_direction_scode; + + /** + * 是否启用 + */ + private String is_used; + + /** + * 是否判断高度 + */ + private String is_zdepth; + + /** + * 存储载具标识 + */ + private Long storagevehicle_id; + + /** + * 存储载具号 + */ + private String storagevehicle_code; + + /** + * 存储载具类型 + */ + private String storagevehicle_type; + + /** + * 是否空载具 + */ + private String is_emptyvehicle; + + /** + * 载具数量 + */ + private BigDecimal storagevehicle_qty; + + /** + * 锁定类型 + */ + private String lock_type; + + /** + * 物料高度类型 + */ + private String material_height_type; + + /** + * 外部标识 + */ + private String ext_id; + + /** + * 备注 + */ + private String remark; + + /** + * 放置类型 + */ + private String placement_type; + /** + * 块 + */ + private String block_num; + /** + * 层 + */ + private String layer_num; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.java new file mode 100644 index 0000000..5ade137 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.java @@ -0,0 +1,32 @@ +package org.nl.wms.basedata.master.structattr.service.dao.mapper; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.basedata.master.structattr.service.dao.Structattr; + +import java.util.List; + +public interface StructattrMapper extends BaseMapper { + + /** + * 判断前缀是否存在 + * @return + */ + List getPrefix(); + + /** + * 查询 + * @param list + * @return + */ + JSONArray selectStructByCodesFsAnNum(@Param("list")List list); + + /** + * 查询2 + * @param struct_id + * @return + */ + JSONArray queryAll(@Param("struct_id")String struct_id); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.xml b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.xml new file mode 100644 index 0000000..a345674 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dao/mapper/StructattrMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dto/StructattrDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dto/StructattrDto.java new file mode 100644 index 0000000..aa785ed --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/dto/StructattrDto.java @@ -0,0 +1,234 @@ +package org.nl.wms.basedata.master.structattr.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author zhouz + * @description / + * @date 2021-12-09 + **/ +@Data +public class StructattrDto implements Serializable { + + /** 仓位标识 */ + /** + * 防止精度丢失 + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long struct_id; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 仓位名称 + */ + private String struct_name; + + /** + * 仓位简称 + */ + private String simple_name; + + /** + * 库区标识 + */ + private Long sect_id; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 库区名称 + */ + private String sect_name; + + /** + * 仓库标识 + */ + private Long stor_id; + + /** + * 仓库编码 + */ + private String stor_code; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 仓库类型 + */ + private String stor_type; + + /** + * 容量 + */ + private BigDecimal capacity; + + /** + * 宽度 + */ + private BigDecimal width; + + /** + * 高度 + */ + private BigDecimal height; + + /** + * 深度 + */ + private BigDecimal zdepth; + + /** + * 承受重量 + */ + private BigDecimal weight; + + /** + * 起始X坐标 + */ + private BigDecimal xqty; + + /** + * 起始Y坐标 + */ + private BigDecimal yqty; + + /** + * 起始Z坐标 + */ + private BigDecimal zqty; + + /** + * 是否临时仓位 + */ + private String is_tempstruct; + + /** + * 创建人 + */ + private String create_id; + + /** + * 创建人姓名 + */ + private String create_name; + + /** + * 创建时间 + */ + private String create_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 背景色 + */ + private String back_ground_color; + + /** + * 前景色 + */ + private String front_ground_color; + + /** + * 背景图片 + */ + private String back_ground_pic; + + /** + * 字体显示方向 + */ + private String font_direction_scode; + + /** + * 是否启用 + */ + private String is_used; + + /** + * 是否判断高度 + */ + private String is_zdepth; + + /** + * 存储载具标识 + */ + private Long storagevehicle_id; + + /** + * 存储载具号 + */ + private String storagevehicle_code; + + /** + * 存储载具类型 + */ + private String storagevehicle_type; + + /** + * 是否空载具 + */ + private String is_emptyvehicle; + + /** + * 载具数量 + */ + private BigDecimal storagevehicle_qty; + + /** + * 锁定类型 + */ + private String lock_type; + + /** + * 物料高度类型 + */ + private String material_height_type; + + /** + * 外部标识 + */ + private String ext_id; + + /** + * 备注 + */ + private String remark; + + /** + * 放置类型 + */ + private String placement_type; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/impl/StructattrServiceImpl.java new file mode 100644 index 0000000..fb95feb --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/structattr/service/impl/StructattrServiceImpl.java @@ -0,0 +1,869 @@ +package org.nl.wms.basedata.master.structattr.service.impl; + +import com.google.common.collect.Maps; + + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +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.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.storage_manage.database.service.IBstIvtBoxlashboundService; +import org.nl.b_lms.storage_manage.database.service.dao.BstIvtBoxlashbound; +import org.nl.b_lms.storage_manage.database.service.dao.mapper.BstIvtBoxinfoMapper; +import org.nl.b_lms.storage_manage.ios.enums.IOSEnum; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.wms.basedata.master.sectattr.service.dao.Sectattr; +import org.nl.wms.basedata.master.structattr.service.dao.Structattr; +import org.nl.wms.basedata.master.structattr.service.dao.mapper.StructattrMapper; +import org.nl.wms.basedata.master.sectattr.service.SectattrService; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.structattr.service.StructattrService; +import org.nl.wms.basedata.master.sectattr.service.dto.SectattrDto; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.function.BiConsumer; +import java.util.stream.Collectors; + +/** + * @author zhouz + * @description 服务实现 + * @date 2021-12-09 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class StructattrServiceImpl extends ServiceImpl implements StructattrService { + + @Autowired + private SectattrService sectattrService; + @Autowired + private StorattrService storattrService; + + /** + * 木箱绑定服务 + */ + @Autowired + private IBstIvtBoxlashboundService iBstIvtBoxlashboundService; + + @Autowired + private StructattrMapper structattrMapper; + + /** + * 木箱信息mapper + */ + @Resource + private BstIvtBoxinfoMapper bstIvtBoxinfoMapper; + + @Override + public Map queryAll(Map whereJson, PageQuery page) { + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + String search = (String) whereJson.get("search"); + HashMap map = new HashMap<>(); + if (StrUtil.isNotEmpty(search)) { + map.put("search", search); + } + map.put("flag", "1"); + map.put("stor_id", (String) whereJson.get("stor_id")); + map.put("sect_id", (String) whereJson.get("sect_id")); + map.put("lock_type", (String) whereJson.get("lock_type")); + map.put("layer_num", (String) whereJson.get("layer_num")); + map.put("is_used", (String) whereJson.get("is_used")); + map.put("is_have", (String) whereJson.get("is_have")); + + //获取人员对应的仓库 + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + if (ObjectUtil.isNotEmpty(in_stor_id)) { + map.put("in_stor_id", in_stor_id); + } + List strings = null; + if (ObjectUtil.isNotEmpty(in_stor_id)) { + String substring = in_stor_id.substring(1, in_stor_id.length() - 1); + String replace = substring.replace("\'", ""); + String[] split = replace.split(","); + strings = CollUtil.toList(split); + map.put("in_stor_id", strings); + } + LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery(Structattr.class) + .eq(Structattr::getIs_delete, "0") + .in(CollUtil.isNotEmpty(strings), Structattr::getStor_id, strings) + .eq(ObjectUtil.isNotEmpty(map.get("stor_id")), Structattr::getStor_id, map.get("stor_id")) + .eq(ObjectUtil.isNotEmpty(map.get("sect_id")), Structattr::getSect_id, map.get("sect_id")) + .eq(ObjectUtil.isNotEmpty(map.get("lock_type")), Structattr::getLock_type, map.get("lock_type")) + .eq(ObjectUtil.isNotEmpty(map.get("layer_num")), Structattr::getLayer_num, map.get("layer_num")) + .eq(ObjectUtil.isNotEmpty(map.get("is_used")), Structattr::getIs_used, map.get("is_used")) + .orderByDesc(Structattr::getUpdate_time); + if ("1".equals(map.get("is_have"))) { + queryWrapper.isNull(Structattr::getStoragevehicle_code) + .or() + .eq(Structattr::getStoragevehicle_code, ""); + } else if ("2".equals(map.get("is_have"))) { + queryWrapper.isNotNull(Structattr::getStoragevehicle_code) + .and(wrapper -> wrapper + .ne(Structattr::getStoragevehicle_code, "")); + } + if (ObjectUtil.isNotEmpty(map.get("search"))) { + queryWrapper.like(Structattr::getStruct_code, map.get("search")) + .or() + .like(Structattr::getStruct_name, map.get("search")); + } + IPage structattrIPage1 = structattrMapper.selectPage(pages, queryWrapper); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("totalElements", structattrIPage1.getTotal()); + jsonObject.put("content", structattrIPage1.getRecords()); + return jsonObject; + } + + @Override + public List queryAll(Map whereJson) { + List structattrs = structattrMapper.selectList(null); + return BeanUtil.copyToList(structattrs, StructattrDto.class); + } + + @Override + public StructattrDto findById(Long struct_id) { + Structattr structattr = structattrMapper.selectById(struct_id); + return BeanUtil.copyProperties(structattr, StructattrDto.class); + } + + @Override + public StructattrDto findByCode(String code) { + Structattr structattr = structattrMapper.selectOne(Wrappers.lambdaQuery(Structattr.class) + .eq(StrUtil.isNotEmpty(code), Structattr::getStruct_code, code)); + return BeanUtil.copyProperties(structattr, StructattrDto.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(StructattrDto dto) { + String struct_code = dto.getStruct_code(); + StructattrDto structattrDto = this.findByCode(struct_code); + if (structattrDto != null && "0".equals(structattrDto.getIs_delete())) { + throw new BadRequestException("存在相同的库区编号"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + dto.setStruct_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + SectattrDto sectattrDto = sectattrService.findById(dto.getSect_id()); + StorattrDto storattrDto = storattrService.findById(sectattrDto.getStor_id()); + dto.setSect_code(sectattrDto.getSect_code()); + dto.setSect_name(sectattrDto.getSect_name()); + dto.setStor_id(storattrDto.getStor_id()); + dto.setStor_code(storattrDto.getStor_code()); + dto.setStor_name(storattrDto.getStor_name()); + + String storagevehicle_code = dto.getStoragevehicle_code(); + if (ObjectUtil.isNotEmpty(storagevehicle_code)) { + WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); + JSONObject obj = vehicleTab.query("storagevehicle_code = '" + storagevehicle_code + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(obj)) { + throw new BadRequestException("未发现载具号为【" + storagevehicle_code + "】的载具信息"); + } + + dto.setStoragevehicle_id(obj.getLong("storagevehicle_id")); + dto.setStoragevehicle_type(obj.getString("storagevehicle_type")); + } + structattrMapper.insert(BeanUtil.copyProperties(dto, Structattr.class)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(StructattrDto dto) { + StructattrDto entity = this.findById(dto.getStruct_id()); + if (entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + + String struct_code = dto.getStruct_code(); + StructattrDto structattrDto = this.findByCode(struct_code); + if (structattrDto != null && !dto.getStruct_id().equals(structattrDto.getStruct_id()) && "0".equals(structattrDto.getIs_delete())) { + throw new BadRequestException("存在相同的库区编号"); + } + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + + String now = DateUtil.now(); + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + SectattrDto sectattrDto = sectattrService.findById(dto.getSect_id()); + if (ObjectUtil.isNotEmpty(sectattrDto)) { + StorattrDto storattrDto = storattrService.findById(sectattrDto.getStor_id()); + dto.setSect_code(sectattrDto.getSect_code()); + dto.setSect_name(sectattrDto.getSect_name()); + dto.setStor_id(storattrDto.getStor_id()); + dto.setStor_code(storattrDto.getStor_code()); + dto.setStor_name(storattrDto.getStor_name()); + } + structattrMapper.updateById(BeanUtil.copyProperties(dto, Structattr.class)); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + + for (Long struct_id : ids) { + JSONObject param = new JSONObject(); + param.put("struct_id", String.valueOf(struct_id)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + structattrMapper.updateById(BeanUtil.copyProperties(param, Structattr.class)); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void changeActive(JSONObject json) { + + String sect_id = json.getString("sect_id"); + Sectattr sectattr = sectattrService.getOne(Wrappers.lambdaQuery(Sectattr.class).eq(Sectattr::getSect_id, sect_id) + .eq(Sectattr::getIs_used, "1")); + if (ObjectUtil.isEmpty(sectattr)) { + throw new BadRequestException("该仓位所属的库区已禁用,请先启用该库区!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String struct_code = json.getString("struct_code"); + String now = DateUtil.now(); + + String is_used = "1"; + if (StrUtil.equals("1", json.getString("is_used"))) { + is_used = "0"; + } + json.put("is_used", is_used); + json.put("update_optid", currentUserId); + json.put("update_optname", nickName); + json.put("update_time", now); + structattrMapper.updateById(BeanUtil.copyProperties(json, Structattr.class)); + + json = new JSONObject(); + json.put("is_used", is_used); + json.put("update_optid", currentUserId); + json.put("update_optname", nickName); + json.put("update_time", now); + WQLObject.getWQLObject("sch_base_point").update(json, " point_code = '" + struct_code + "'"); + } + + @Override + public JSONArray getStructByCodes(JSONArray jsonArray) { + /** + * jsonArry: 所有组件的信息,包括组件本身的id以及仓位id,组件id是用来给前端做对应筛选使用,如果没有仓位id证明不是 + * 仓位组件,故不做处理,可以不用返回数据。 + */ + JSONArray arr = new JSONArray(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = new JSONObject(); + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + + int struct_status = 2; + // 获取信息 1蓝色空载具 2黄色木箱 3绿色空位 4灰色禁用 + // 查找详细信息, 这里可能是有多条数据 + // 计算合计 + JSONArray array = structattrMapper.queryAll(struct_id); + JSONObject json = array.getJSONObject(0); + if (ObjectUtil.isNotEmpty(json.getString("net_weight"))) { + BigDecimal container_weight = array.stream().map(row -> ((JSONObject) row).getBigDecimal("net_weight")).reduce(BigDecimal.ZERO, BigDecimal::add); + + for (int j = 0; j < array.size(); j++) { + JSONObject jsonObject = array.getJSONObject(j); + jsonObject.put("container_weight", container_weight); + } + } + + // 获取仓位表中的信息 + Structattr structattr = structattrMapper.selectOne(Wrappers.lambdaQuery(Structattr.class) + .eq(StrUtil.isNotEmpty(struct_id), Structattr::getStruct_id, struct_id)); + JSONObject strInfo = JSONObject.parseObject(StrUtil.toString(structattr)); + if ("0".equals(strInfo.getString("is_used"))) { + // 被禁用 + struct_status = 4; + } else if ("PD01".equals(strInfo.getString("sect_code"))) { + // 盘点位 + struct_status = 5; + } else if (ObjectUtil.isEmpty(strInfo.getString("storagevehicle_code"))) { + // 空位 + struct_status = 3; + } else if (ObjectUtil.isNotEmpty(strInfo.getString("storagevehicle_code")) + && "KTP01".equals(strInfo.getString("sect_code"))) { + struct_status = 1; + } + // 剩余层数货位信息没统计,统计可以用obj.put(key, value)返给前端,前端在initStatus()就可以遍历去获取,给节点赋值 + obj.put("data", array); + obj.put("struct_status", struct_status); + obj.put("struct_id", strInfo.getString("struct_id")); + obj.put("struct_code", strInfo.getString("struct_code")); + obj.put("id", js.getString("id")); // 设备不存在就只保留id,方便前端查看 + arr.add(obj); + } + return arr; + } + + @Override + public JSONArray getStructByCodesFs(JSONArray jsonArray) { + WQLObject attrTab = WQLObject.getWQLObject("sch_base_point"); + JSONArray arr = new JSONArray(); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + list.add(struct_id); + } + String sql = "('" + list.stream().collect(Collectors.joining("','")) + "')"; + JSONArray array = structattrMapper.selectStructByCodesFsAnNum(list); + + Map pointMap = array.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + JSONArray attrs = attrTab.query("point_id in " + sql).getResultJSONArray(0); + Map attrMap = attrs.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = new JSONObject(); + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + int struct_status = 2; + // 获取信息 1蓝色空载具 2黄色木箱 3绿色空位 4灰色禁用 + // 计算子卷净重 + JSONObject json = pointMap.get(struct_id); + + List pointList = array.toJavaList(JSONObject.class).stream() + .filter(row -> row.getString("point_id").equals(struct_id)) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(json.getString("net_weight"))) { + + BigDecimal container_weight = pointList.stream().map(row -> row.getBigDecimal("net_weight")).reduce(BigDecimal.ZERO, BigDecimal::add); + + for (int j = 0; j < pointList.size(); j++) { + JSONObject jsonObject = pointList.get(j); + jsonObject.put("container_weight", container_weight); + } + } + + JSONObject strInfo = attrMap.get(struct_id); + if (strInfo != null && ObjectUtil.isEmpty(strInfo.getString("vehicle_code"))) { + // 空位 + struct_status = 3; + } + + // 剩余层数货位信息没统计,统计可以用obj.put(key, value)返给前端,前端在initStatus()就可以遍历去获取,给节点赋值 + obj.put("data", pointList); + obj.put("struct_status", struct_status); + obj.put("struct_id", strInfo.getString("point_id")); + obj.put("struct_code", strInfo.getString("point_code")); + obj.put("id", js.getString("id")); // 设备不存在就只保留id,方便前端查看 + arr.add(obj); + } + return arr; + } + + @Override + public JSONArray getStructByCodesFsTwo(JSONArray jsonArray) { + WQLObject attrTab = WQLObject.getWQLObject("sch_base_point"); + JSONArray arr = new JSONArray(); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + list.add(struct_id); + } + String sql = "('" + list.stream().collect(Collectors.joining("','")) + "')"; + JSONArray array = structattrMapper.selectStructByCodesFsAnNum(list); + + Map pointMap = array.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + JSONArray attrs = attrTab.query("point_id in " + sql).getResultJSONArray(0); + Map attrMap = attrs.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = new JSONObject(); + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + int struct_status = 2; + // 获取信息 1蓝色空载具 2黄色木箱 3绿色空位 4灰色禁用 + // 计算子卷净重 + JSONObject json = pointMap.get(struct_id); + + List pointList = array.toJavaList(JSONObject.class).stream() + .filter(row -> row.getString("point_id").equals(struct_id)) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(json.getString("net_weight"))) { + + BigDecimal container_weight = pointList.stream().map(row -> row.getBigDecimal("net_weight")).reduce(BigDecimal.ZERO, BigDecimal::add); + + for (int j = 0; j < pointList.size(); j++) { + JSONObject jsonObject = pointList.get(j); + jsonObject.put("container_weight", container_weight); + } + } + + JSONObject strInfo = attrMap.get(struct_id); + if (strInfo != null && ObjectUtil.isEmpty(strInfo.getString("vehicle_code"))) { + // 空位 + struct_status = 3; + } + + if (strInfo != null && strInfo.getString("is_used").equals(IOSEnum.IS_NOTANDYES.code("否"))) { + // 未启用 + struct_status = 4; + } + + // 剩余层数货位信息没统计,统计可以用obj.put(key, value)返给前端,前端在initStatus()就可以遍历去获取,给节点赋值 + obj.put("data", pointList); + obj.put("struct_status", struct_status); + obj.put("struct_id", strInfo.getString("point_id")); + obj.put("struct_code", strInfo.getString("point_code")); + obj.put("id", js.getString("id")); // 设备不存在就只保留id,方便前端查看 + arr.add(obj); + } + return arr; + } + + @Override + public Map getStructByCodesFsAnNum(JSONArray jsonArray) { + WQLObject attrTab = WQLObject.getWQLObject("sch_base_point"); + JSONArray arr = new JSONArray(); + List list = new ArrayList<>(); + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + list.add(struct_id); + } + String sql = "('" + list.stream().collect(Collectors.joining("','")) + "')"; + JSONArray array = structattrMapper.selectStructByCodesFsAnNum(list); + + Map pointMap = array.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + JSONArray attrs = attrTab.query("point_id in " + sql).getResultJSONArray(0); + Map attrMap = attrs.stream().collect(HashMap::new, (BiConsumer, Object>) (m, o) -> { + JSONObject item = (JSONObject) o; + m.put(item.getString("point_id"), item); + }, HashMap::putAll); + + for (int i = 0; i < jsonArray.size(); i++) { + JSONObject obj = new JSONObject(); + JSONObject js = jsonArray.getJSONObject(i); + String struct_id = js.getString("struct_id"); + + if (ObjectUtil.isEmpty(struct_id)) { + continue; + } + int struct_status = 2; + // 获取信息 1蓝色空载具 2黄色木箱 3绿色空位 4灰色禁用 + // 计算子卷净重 + JSONObject json = pointMap.get(struct_id); + + List pointList = array.toJavaList(JSONObject.class).stream() + .filter(row -> row.getString("point_id").equals(struct_id)) + .collect(Collectors.toList()); + + if (ObjectUtil.isNotEmpty(json.getString("net_weight"))) { + + BigDecimal container_weight = pointList.stream().map(row -> row.getBigDecimal("net_weight")).reduce(BigDecimal.ZERO, BigDecimal::add); + + for (int j = 0; j < pointList.size(); j++) { + JSONObject jsonObject = pointList.get(j); + jsonObject.put("container_weight", container_weight); + } + } + + JSONObject strInfo = attrMap.get(struct_id); + if (strInfo != null && ObjectUtil.isEmpty(strInfo.getString("vehicle_code"))) { + // 空位 + struct_status = 3; + } + + // 剩余层数货位信息没统计,统计可以用obj.put(key, value)返给前端,前端在initStatus()就可以遍历去获取,给节点赋值 + obj.put("data", pointList); + obj.put("struct_status", struct_status); + obj.put("struct_id", strInfo.getString("point_id")); + obj.put("struct_code", strInfo.getString("point_code")); + obj.put("id", js.getString("id")); // 设备不存在就只保留id,方便前端查看 + arr.add(obj); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject unLockPoint(JSONObject whereJson) { + WQLObject schBasePointService = WQLObject.getWQLObject("sch_base_point"); + + String point_code = whereJson.getString("point_code"); + JSONObject jsonPoint = schBasePointService.query("point_code = '" + point_code + "'").uniqueResult(0); + + /* + 判断点位是第几层 + 1层:解锁当前点位和2层点位 + 2层:直接解锁当前点位 + */ + + //查询对应的包装关系,如果为需要解绑删除的则删除包装关系 + JSONArray sub_rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").getResultJSONArray(0); + for (int i = 0; i < sub_rows.size(); i++) { + JSONObject sub_row = sub_rows.getJSONObject(i); + if (StrUtil.isNotEmpty(sub_row.getString("need_delete")) && "1".equals(sub_row.getString("need_delete"))) { + WQLObject.getWQLObject("pdm_bi_subpackagerelation").delete(sub_row); + } + } + if (StrUtil.equals(jsonPoint.getString("layer_num"), "1")) { + JSONObject jsonPoint2 = schBasePointService.query("device_code = '" + jsonPoint.getString("device_code") + "' and layer_num = '2'").uniqueResult(0); + //查询对应的包装关系,如果为需要解绑删除的则删除包装关系 + JSONArray sub_rows2 = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + jsonPoint2.getString("vehicle_code") + "'").getResultJSONArray(0); + for (int i = 0; i < sub_rows2.size(); i++) { + JSONObject sub_row = sub_rows2.getJSONObject(i); + if (StrUtil.isNotEmpty(sub_row.getString("need_delete")) && "1".equals(sub_row.getString("need_delete"))) { + WQLObject.getWQLObject("pdm_bi_subpackagerelation").delete(sub_row); + } + } + jsonPoint2.put("point_status", "1"); + jsonPoint2.put("lock_type", "1"); + jsonPoint2.put("vehicle_code", ""); + schBasePointService.update(jsonPoint2); + } + + jsonPoint.put("point_status", "1"); + jsonPoint.put("lock_type", "1"); + jsonPoint.put("vehicle_code", ""); + schBasePointService.update(jsonPoint); + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void oneCreate(JSONObject whereJson) { + // 点位表 + WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + // 仓库表 + WQLObject storTab = WQLObject.getWQLObject("st_ivt_bsrealstorattr"); + + // 判断库区是否是虚拟区 + Sectattr sectattr = sectattrService.getOne(Wrappers.lambdaQuery(Sectattr.class) + .eq(StrUtil.isNotEmpty(whereJson.getString("sect_id")), Sectattr::getSect_id, whereJson.getString("sect_id"))); + if ("09".equals(sectattr.getSect_type_attr())) { + throw new BadRequestException("所选库区必须是虚拟区!"); + } + + /* + * 判断此库区是否已经生成仓位 + */ + Structattr structattr = structattrMapper.selectOne(Wrappers.lambdaQuery(Structattr.class) + .eq(ObjectUtil.isNotEmpty(whereJson.getLong("sect_id")), Structattr::getSect_id, whereJson.getLong("sect_id")) + .orderByDesc(Structattr::getStruct_code)); + // 生成数量 + int createNum = whereJson.getIntValue("num"); + // 开始生成数 + int createNum_start = 1; + + // 前缀 + String prefix = ""; + + if (ObjectUtil.isNotEmpty(structattr)) { + String struct_code = structattr.getStruct_code(); + // 第一个-的位置 + int firstIndex = struct_code.indexOf("-"); + // 第二个-的位置 + int secondIndex = struct_code.substring(firstIndex + 1).indexOf("-") + firstIndex; + // 最大的仓位数 + String result = struct_code.substring(firstIndex + 1, secondIndex + 1); + + createNum += Integer.parseInt(result); + + createNum_start += Integer.parseInt(result); + + prefix = struct_code.substring(0, firstIndex); + } else { + // 截取第一个 - 之前的数据集合 + + List attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process() + .getResultJSONArray(0).toJavaList(JSONObject.class); + + List subStringList = attrList.stream() + .filter(row -> row.getString("struct_code").contains("-")) + .map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-"))) + .distinct() + .sorted() + .filter(row -> row.matches("-?\\d+(\\.\\d+)?")) + .collect(Collectors.toList()); + + prefix = String.valueOf(Integer.parseInt(subStringList.get(subStringList.size() - 1)) + 1); + } + + /* + * 生成货位 + */ + String now = DateUtil.now(); + for (int i = createNum_start; i <= createNum; i++) { + + JSONObject json = new JSONObject(); + json.put("struct_id", IdUtil.getSnowflake(1, 1).nextId()); + + if (i < 10) { + json.put("struct_code", prefix + "-" + "000" + i + "-01"); + json.put("struct_name", prefix + "排-" + "000" + i + "列-01层"); + + } else if (i >= 10 && i < 100) { + json.put("struct_code", prefix + "-" + "00" + i + "-01"); + json.put("struct_name", prefix + "排-" + "00" + i + "列-01层"); + } else if (i >= 100 && i < 1000) { + json.put("struct_code", prefix + "-" + "0" + i + "-01"); + json.put("struct_name", prefix + "排-" + "0" + i + "列-01层"); + } else { + json.put("struct_code", prefix + "-" + i + "-01"); + json.put("struct_name", prefix + "排-" + i + "列-01层"); + } + JSONObject jsonObject = storTab.query("stor_id = '" + whereJson.getString("stor_id") + "'").uniqueResult(0); + Sectattr sectattr1 = sectattrService.getOne(Wrappers.lambdaQuery(Sectattr.class) + .eq(ObjectUtil.isNotEmpty(whereJson.getLong("sect_id")), Sectattr::getSect_id, whereJson.getLong("sect_id")) + .eq(ObjectUtil.isNotEmpty(whereJson.getLong("stor_id")), Sectattr::getStor_id, whereJson.getLong("stor_id"))); + + // 新增仓位 + json.put("simple_name", json.getString("struct_name")); + json.put("sect_id", sectattr1.getSect_id()); + json.put("sect_code", sectattr1.getSect_code()); + json.put("sect_name", sectattr1.getSect_name()); + json.put("stor_id", jsonObject.getString("stor_id")); + json.put("stor_code", jsonObject.getString("stor_code")); + json.put("stor_name", jsonObject.getString("stor_name")); + json.put("lock_type", "1"); + json.put("row_num", 1); + json.put("col_num", i); + json.put("layer_num", 1); + json.put("block_num", 1); + json.put("in_order_seq", i); + json.put("out_order_seq", i); + json.put("in_empty_seq", i); + json.put("out_empty_seq", i); + json.put("create_id", "1"); + json.put("create_name", "管理员"); + json.put("create_time", now); + json.put("material_height_type", 1); + structattrMapper.insert(BeanUtil.copyProperties(json, Structattr.class)); + + // 新增点位 + JSONObject jsonPoint = new JSONObject(); + jsonPoint.put("point_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonPoint.put("point_code", json.getString("struct_code")); + jsonPoint.put("point_name", json.getString("struct_name")); + jsonPoint.put("region_id", json.getString("sect_id")); + jsonPoint.put("region_code", json.getString("sect_code")); + jsonPoint.put("region_name", json.getString("sect_name")); + jsonPoint.put("point_type", "2"); + jsonPoint.put("point_status", "1"); + jsonPoint.put("lock_type", "1"); + jsonPoint.put("vehicle_max_qty", 0); + jsonPoint.put("vehicle_qty", 0); + jsonPoint.put("block_num", 1); + jsonPoint.put("row_num", 1); + jsonPoint.put("col_num", 1); + jsonPoint.put("layer_num", 1); + jsonPoint.put("in_order_seq", 0); + jsonPoint.put("out_order_seq", 0); + jsonPoint.put("in_empty_seq", 0); + jsonPoint.put("out_empty_seq", 0); + jsonPoint.put("is_have_workder", "0"); + jsonPoint.put("is_used", "1"); + jsonPoint.put("source_id", json.get("struct_id")); + jsonPoint.put("is_delete", "0"); + jsonPoint.put("create_id", "1"); + jsonPoint.put("create_name", "管理员"); + jsonPoint.put("create_time", now); + pointTab.insert(jsonPoint); + } + + } + + @Override + public void blurQuery(JSONObject whereJson) { + /* + * 判断前缀是否存在 + */ + List attrList = structattrMapper.getPrefix(); + // 截取第一个 - 之前的数据集合 + List subStringList = attrList.stream() + .filter(row -> row.getString("struct_code").contains("-")) + .map(row -> row.getString("struct_code").substring(0, row.getString("struct_code").indexOf("-"))) + .distinct() + .sorted() + .filter(row -> row.matches("-?\\d+(\\.\\d+)?")) + .collect(Collectors.toList()); + + // 判断是否有相同的前缀 + boolean is_like = subStringList.stream() + .anyMatch(row -> row.equals(whereJson.getString("prefix"))); + + if (is_like) { + throw new BadRequestException("此前缀已存在,请更换!"); + } + } + + @Override + public void tunConfirm(JSONObject json) { + // 将这一巷道的所有仓位都禁用 + this.update(Wrappers.lambdaUpdate(Structattr.class) + .eq(Structattr::getSect_id, IOSEnum.SECT_ID.code("二期主存区")) + .eq(StrUtil.isNotEmpty(json.getString("block_num")), Structattr::getBlock_num, json.getString("block_num")) + .eq(Structattr::getIs_delete, "0") + .set(Structattr::getIs_used, json.getString("is_used"))); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public JSONObject unLockPointTwo(JSONObject whereJson) { + // 点位表 + WQLObject schBasePointService = WQLObject.getWQLObject("sch_base_point"); + + String box_no = whereJson.getString("vehicle_code"); + if (ObjectUtil.isEmpty(box_no)) { + throw new BadRequestException("木箱不能为空"); + } + + BstIvtBoxlashbound boundDao = iBstIvtBoxlashboundService.getOne( + new QueryWrapper().lambda() + .eq(BstIvtBoxlashbound::getBox_no, box_no) + ); + + if (ObjectUtil.isEmpty(boundDao)) { + throw new BadRequestException("此木箱没有经过自动捆扎,请在【点位管理】页面手动解绑!"); + } + + // 查出所有捆绑在一起的木箱 + List boundDaoList = iBstIvtBoxlashboundService.list( + new QueryWrapper().lambda() + .eq(BstIvtBoxlashbound::getBound_id, boundDao.getBound_id()) + ); + + // 查询所在点位 + String box_in = boundDaoList.stream() + .map(BstIvtBoxlashbound::getBox_no) + .collect(Collectors.joining("','")); + + JSONObject jsonPoint = schBasePointService.query("vehicle_code IN ('" + box_in + "') and is_delete = '0' and is_used = '1' and point_type = '8'").uniqueResult(0); + + if (ObjectUtil.isEmpty(jsonPoint)) { + throw new BadRequestException("请输入正确的木箱或查看点位是否存在"); + } + + // 解锁点位 + jsonPoint.put("point_status", "1"); + jsonPoint.put("lock_type", "1"); + jsonPoint.put("vehicle_code", ""); + schBasePointService.update(jsonPoint); + + // 删除木箱绑定关系 + iBstIvtBoxlashboundService.remove( + new QueryWrapper().lambda() + .eq(BstIvtBoxlashbound::getBound_id, boundDaoList.get(0).getBound_id()) + ); + + return null; + } + + @Override + public IPage twoVehicleIvt(Map whereJson, Pageable page) { + String storagevehicle_code = MapUtil.getStr(whereJson, "storagevehicle_code"); + String struct_code = MapUtil.getStr(whereJson, "struct_code"); + + IPage pages = new Page<>(page.getOffset() + 1, page.getPageSize()); + IPage structattrIPage = structattrMapper.selectPage(pages, Wrappers.lambdaQuery(Structattr.class) + .eq(Structattr::getIs_delete, 0) + .eq(Structattr::getIs_used, 1) + .eq(Structattr::getLock_type, 1) + .isNull(Structattr::getStoragevehicle_code) + .eq(Structattr::getIs_emptyvehicle, "1") + .eq(Structattr::getSect_code, "BZC01") + .like(StrUtil.isNotEmpty(storagevehicle_code), Structattr::getStoragevehicle_code, storagevehicle_code) + .like(StrUtil.isNotEmpty(struct_code), Structattr::getStruct_code, struct_code) + .eq(StrUtil.isNotEmpty(MapUtil.getStr(whereJson, "storagevehicle_type")), Structattr::getStoragevehicle_type, MapUtil.getStr(whereJson, "storagevehicle_type")) + .orderByAsc(Structattr::getStruct_code) + ); + + return structattrIPage; + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/SectattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/SectattrController.java index 9c87879..e529fc2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/SectattrController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/SectattrController.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.rest; @@ -15,10 +16,12 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; +*/ /** * @author zhouz * @date 2021-12-09 - **/ + **//* + @RestController @RequiredArgsConstructor @@ -87,3 +90,4 @@ public class SectattrController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StorattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StorattrController.java index b0ba58e..9e14c71 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StorattrController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StorattrController.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.rest; @@ -15,10 +16,12 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; +*/ /** * @author zhouz * @date 2021-12-08 - **/ + **//* + @RestController @RequiredArgsConstructor @@ -79,3 +82,4 @@ public class StorattrController { return new ResponseEntity<>(HttpStatus.NO_CONTENT); } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java index 5503a43..4184574 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructattrController.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.rest; @@ -16,10 +17,12 @@ import org.springframework.web.bind.annotation.*; import java.util.Map; +*/ /** * @author zhouz * @date 2021-12-09 - **/ + **//* + @RestController @RequiredArgsConstructor @@ -137,3 +140,4 @@ public class StructattrController { return new ResponseEntity<>(structattrService.twoVehicleIvt(whereJson, page), HttpStatus.OK); } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/SectattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/SectattrService.java index 3b0e199..bc0d302 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/SectattrService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/SectattrService.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service; import com.alibaba.fastjson.JSONObject; @@ -7,77 +8,96 @@ import org.springframework.data.domain.Pageable; import java.util.List; import java.util.Map; +*/ /** * @author zhouz * @description 服务接口 * @date 2021-12-09 - **/ + **//* + public interface SectattrService { - /** + */ +/** * 查询数据分页 * * @param whereJson 条件 * @param page 分页参数 * @return Map - */ + *//* + Map queryAll(Map whereJson, Pageable page); - /** + */ +/** * 查询所有数据不分页 * * @param whereJson 条件参数 * @return List - */ + *//* + List queryAll(Map whereJson); - /** + */ +/** * 根据ID查询 * * @param sect_id ID * @return Sectattr - */ + *//* + SectattrDto findById(Long sect_id); - /** + */ +/** * 根据编码查询 * * @param code code * @return Sectattr - */ + *//* + SectattrDto findByCode(String code); - /** + */ +/** * 创建 * * @param dto / - */ + *//* + void create(SectattrDto dto); - /** + */ +/** * 编辑 * * @param dto / - */ + *//* + void update(SectattrDto dto); - /** + */ +/** * 多选删除 * * @param ids / - */ + *//* + void deleteAll(Long[] ids); JSONObject getSect(Map whereJson); JSONObject getStorSect(JSONObject whereJson); - /** + */ +/** * 改变启用状态 * * @param json - */ + *//* + void changeActive(JSONObject json); } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StorattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StorattrService.java index 29e658e..f93b488 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StorattrService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StorattrService.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service; import com.alibaba.fastjson.JSONObject; @@ -7,75 +8,94 @@ import org.springframework.data.domain.Pageable; import java.util.List; import java.util.Map; +*/ /** * @author zhouz * @description 服务接口 * @date 2021-12-08 - **/ + **//* + public interface StorattrService { - /** + */ +/** * 查询数据分页 * * @param whereJson 条件 * @param page 分页参数 * @return Map - */ + *//* + Map queryAll(Map whereJson, Pageable page); - /** + */ +/** * 查询所有数据不分页 * * @param whereJson 条件参数 * @return List - */ + *//* + List queryAll(Map whereJson); - /** + */ +/** * 根据ID查询 * * @param stor_id ID * @return Storattr - */ + *//* + StorattrDto findById(Long stor_id); - /** + */ +/** * 根据编码查询 * * @param code code * @return Storattr - */ + *//* + StorattrDto findByCode(String code); - /** + */ +/** * 创建 * * @param dto / - */ + *//* + void create(StorattrDto dto); - /** + */ +/** * 编辑 * * @param dto / - */ + *//* + void update(StorattrDto dto); - /** + */ +/** * 多选删除 * * @param ids / - */ + *//* + void deleteAll(Long[] ids); JSONObject getStor(Map whereJson); - /** + */ +/** * 改变启用状态 * * @param json - */ + *//* + void changeActive(JSONObject json); } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java index 0bc3fc4..02f2c6c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructattrService.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service; import com.alibaba.fastjson.JSONArray; @@ -8,104 +9,131 @@ import org.springframework.data.domain.Pageable; import java.util.List; import java.util.Map; +*/ /** * @author zhouz * @description 服务接口 * @date 2021-12-09 - **/ + **//* + public interface StructattrService { - /** + */ +/** * 查询数据分页 * * @param whereJson 条件 * @param page 分页参数 * @return Map - */ + *//* + Map queryAll(Map whereJson, Pageable page); - /** + */ +/** * 查询所有数据不分页 * * @param whereJson 条件参数 * @return List - */ + *//* + List queryAll(Map whereJson); - /** + */ +/** * 根据ID查询 * * @param struct_id ID * @return Structattr - */ + *//* + StructattrDto findById(Long struct_id); - /** + */ +/** * 根据编码查询 * * @param code code * @return Structattr - */ + *//* + StructattrDto findByCode(String code); - /** + */ +/** * 创建 * * @param dto / - */ + *//* + void create(StructattrDto dto); - /** + */ +/** * 编辑 * * @param dto / - */ + *//* + void update(StructattrDto dto); - /** + */ +/** * 多选删除 * * @param ids / - */ + *//* + void deleteAll(Long[] ids); - /** + */ +/** * 改变启用状态 * * @param json - */ + *//* + void changeActive(JSONObject json); - /** + */ +/** * 获取仓位信息 * * @return - */ + *//* + JSONArray getStructByCodes(JSONArray json); - /** + */ +/** * 获取点位信息 * * @return - */ + *//* + JSONArray getStructByCodesFs(JSONArray json); - /** + */ +/** * 获取点位信息(二期) *wo * @return - */ + *//* + JSONArray getStructByCodesFsTwo(JSONArray json); Map getStructByCodesFsAnNum(JSONArray json); - /** + */ +/** * 解锁点位 * * @return - */ + *//* + JSONObject unLockPoint(JSONObject whereJson); - /** + */ +/** * 一键生成货位 * @param whereJson { * stor_id: 仓库id @@ -113,39 +141,49 @@ public interface StructattrService { * prefix: 仓位前缀 * num: 生成数量 * } - */ + *//* + void oneCreate(JSONObject whereJson); - /** + */ +/** * 校验前缀是否可用 * @param whereJson { * prefix: 前缀 * } - */ + *//* + void blurQuery(JSONObject whereJson); - /** + */ +/** * 二期禁用巷道 * @param json :{ * block_num: 巷道 * is_used: 0-禁用,1-启用 * } - */ + *//* + void tunConfirm(JSONObject json); - /** + */ +/** * 点位解锁 * @param whereJson:{点位信息} * @return 、 - */ + *//* + JSONObject unLockPointTwo(JSONObject whereJson); - /** + */ +/** * 查询二期空托盘库存数据分页 * * @param whereJson 条件 * @param page 分页参数 * @return Map - */ + *//* + Map twoVehicleIvt(Map whereJson, Pageable page); } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java index a0317a3..197ef7c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/SectattrServiceImpl.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service.impl; @@ -28,11 +29,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +*/ /** * @author zhouz * @description 服务实现 * @date 2021-12-09 - **/ + **//* + @Service @RequiredArgsConstructor @Slf4j @@ -281,3 +284,4 @@ public class SectattrServiceImpl implements SectattrService { WQLObject.getWQLObject("st_ivt_structattr").update(json, " sect_id = '" + sect_id + "'"); } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java index 5a22b65..b2c3f3f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StorattrServiceImpl.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service.impl; @@ -25,11 +26,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +*/ /** * @author zhouz * @description 服务实现 * @date 2021-12-08 - **/ + **//* + @Service @RequiredArgsConstructor @Slf4j @@ -222,3 +225,4 @@ public class StorattrServiceImpl implements StorattrService { WQLObject.getWQLObject("st_ivt_sectattr").update(json, "stor_id = '" + stor_id + "'"); } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java index 85882e5..5747077 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructattrServiceImpl.java @@ -1,3 +1,4 @@ +/* package org.nl.wms.basedata.st.service.impl; @@ -39,11 +40,13 @@ import java.util.*; import java.util.function.BiConsumer; import java.util.stream.Collectors; +*/ /** * @author zhouz * @description 服务实现 * @date 2021-12-09 - **/ + **//* + @Service @RequiredArgsConstructor @Slf4j @@ -54,15 +57,19 @@ public class StructattrServiceImpl implements StructattrService { @Autowired private StorattrService storattrService; - /** + */ +/** * 木箱绑定服务 - */ + *//* + @Autowired private IBstIvtBoxlashboundService iBstIvtBoxlashboundService; - /** + */ +/** * 木箱信息mapper - */ + *//* + @Resource private BstIvtBoxinfoMapper bstIvtBoxinfoMapper; @@ -81,12 +88,14 @@ public class StructattrServiceImpl implements StructattrService { map.put("is_used", (String) whereJson.get("is_used")); map.put("is_have", (String) whereJson.get("is_have")); - /* // 如果是二期仓库则将层数删除 + */ +/* // 如果是二期仓库则将层数删除 if (ObjectUtil.isNotEmpty(whereJson.get("stor_id"))) { if ( whereJson.get("stor_id").equals(IOSEnum.STOR_ID.code("二期"))) { map.put("layer_num", ""); } - }*/ + }*//* + //获取人员对应的仓库 UserStorServiceImpl userStorService = new UserStorServiceImpl(); String in_stor_id = userStorService.getInStor(); @@ -176,11 +185,13 @@ public class StructattrServiceImpl implements StructattrService { //根据仓位更新点位载具和锁定信息 // 点位基础表【SCH_BASE_Point】 +*/ /* JSONObject param = new JSONObject(); param.put("is_used", dto.getIs_used()); param.put("vehicle_code", dto.getStoragevehicle_code()); param.put("lock_type", dto.getLock_type()); - WQLObject.getWQLObject("SCH_BASE_Point").update(param, "point_code = '" + dto.getStruct_code() + "'");*/ + WQLObject.getWQLObject("SCH_BASE_Point").update(param, "point_code = '" + dto.getStruct_code() + "'");*//* + } @Override @@ -217,13 +228,15 @@ public class StructattrServiceImpl implements StructattrService { JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); wo.update(json); +*/ /* //根据仓位更新点位载具和锁定信息 // 点位基础表【SCH_BASE_Point】 JSONObject param = new JSONObject(); param.put("is_used", dto.getIs_used()); param.put("vehicle_code", dto.getStoragevehicle_code()); param.put("lock_type", dto.getLock_type()); - WQLObject.getWQLObject("SCH_BASE_Point").update(param, "point_code = '" + dto.getStruct_code() + "'");*/ + WQLObject.getWQLObject("SCH_BASE_Point").update(param, "point_code = '" + dto.getStruct_code() + "'");*//* + } @Override @@ -279,10 +292,12 @@ public class StructattrServiceImpl implements StructattrService { @Override public JSONArray getStructByCodes(JSONArray jsonArray) { - /** + */ +/** * jsonArry: 所有组件的信息,包括组件本身的id以及仓位id,组件id是用来给前端做对应筛选使用,如果没有仓位id证明不是 * 仓位组件,故不做处理,可以不用返回数据。 - */ + *//* + WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); JSONArray arr = new JSONArray(); for (int i = 0; i < jsonArray.size(); i++) { @@ -579,11 +594,13 @@ public class StructattrServiceImpl implements StructattrService { String point_code = whereJson.getString("point_code"); JSONObject jsonPoint = schBasePointService.query("point_code = '" + point_code + "'").uniqueResult(0); - /* + */ +/* 判断点位是第几层 1层:解锁当前点位和2层点位 2层:直接解锁当前点位 - */ + *//* + //查询对应的包装关系,如果为需要解绑删除的则删除包装关系 JSONArray sub_rows = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("package_box_sn = '" + whereJson.getString("vehicle_code") + "'").getResultJSONArray(0); @@ -635,9 +652,11 @@ public class StructattrServiceImpl implements StructattrService { throw new BadRequestException("所选库区必须是虚拟区!"); } - /* + */ +/* * 判断此库区是否已经生成仓位 - */ + *//* + JSONObject jsonAttr = attrTab.query("sect_id = '" + whereJson.getString("sect_id") + "' order by struct_code DESC").uniqueResult(0); // 生成数量 @@ -680,9 +699,11 @@ public class StructattrServiceImpl implements StructattrService { prefix = String.valueOf(Integer.parseInt(subStringList.get(subStringList.size() - 1)) + 1); } - /* + */ +/* * 生成货位 - */ + *//* + String now = DateUtil.now(); for (int i = createNum_start; i <= createNum; i++) { @@ -767,9 +788,11 @@ public class StructattrServiceImpl implements StructattrService { // 仓位表 WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); - /* + */ +/* * 判断前缀是否存在 - */ + *//* + List attrList = WQL.getWO("QST_STRUCT_ATTR").addParam("flag", "2").process() .getResultJSONArray(0).toJavaList(JSONObject.class); @@ -875,3 +898,4 @@ public class StructattrServiceImpl implements StructattrService { } } +*/ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java index 0a8fea0..0075078 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java @@ -10,8 +10,8 @@ import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; -import org.nl.wms.basedata.st.service.dto.StructattrDto; -import org.nl.wms.basedata.st.service.impl.StructattrServiceImpl; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.nl.wms.basedata.master.structattr.service.impl.StructattrServiceImpl; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java index 273a610..351f913 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/RawAssistIStorServiceImpl.java @@ -20,11 +20,11 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.nl.system.service.param.impl.SysParamServiceImpl; -import org.nl.wms.basedata.st.service.StorattrService; -import org.nl.wms.basedata.st.service.StructattrService; -import org.nl.wms.basedata.st.service.dto.StorattrDto; -import org.nl.wms.basedata.st.service.dto.StructattrDto; -import org.nl.wms.basedata.st.service.impl.StructattrServiceImpl; +import org.nl.wms.basedata.master.structattr.service.dto.StructattrDto; +import org.nl.wms.basedata.master.storattr.service.StorattrService; +import org.nl.wms.basedata.master.structattr.service.StructattrService; +import org.nl.wms.basedata.master.storattr.service.dto.StorattrDto; +import org.nl.wms.basedata.master.structattr.service.impl.StructattrServiceImpl; import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; import org.nl.wms.pda.mps.eum.RegionTypeEnum; import org.nl.wms.sch.manage.AbstractAcsTask; @@ -812,7 +812,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { if (dis_rows.size() <= 0) { throw new BadRequestException("数据参数有误!"); } - StructattrDto old_struct = structattrService.findByCode((String) whereJson.get("struct_code")); + org.nl.wms.basedata.master.structattr.service.dto.StructattrDto old_struct = structattrService.findByCode((String) whereJson.get("struct_code")); JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + dis_rows.getJSONObject(0).getString("iostorinv_id") + "'").uniqueResult(0); for (int i = 0; i < dis_rows.size(); i++) { JSONObject i_form = new JSONObject(); @@ -2338,7 +2338,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { task_wql.update(task_map, "taskdtl_id = '" + whereJson.get("task_id") + "'"); //更新分配表的目的仓位 - StructattrDto structattrDto = structattrService.findByCode((String) whereJson.get("new_struct_code")); + org.nl.wms.basedata.master.structattr.service.dto.StructattrDto structattrDto = structattrService.findByCode((String) whereJson.get("new_struct_code")); HashMap str_map = new HashMap<>(); str_map.put("sect_id", structattrDto.getSect_id()); str_map.put("sect_code", structattrDto.getSect_code()); @@ -2365,7 +2365,7 @@ public class RawAssistIStorServiceImpl implements RawAssistIStorService { if (dis_rows.size() <= 0) { throw new BadRequestException("数据参数有误!"); } - StructattrDto old_struct = structattrService.findByCode((String) whereJson.get("struct_code")); + org.nl.wms.basedata.master.structattr.service.dto.StructattrDto old_struct = structattrService.findByCode((String) whereJson.get("struct_code")); JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + dis_rows.getJSONObject(0).getString("iostorinv_id") + "'").uniqueResult(0); for (int i = 0; i < dis_rows.size(); i++) { JSONObject i_form = new JSONObject(); diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/sect/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/sect/index.vue index 0c74a29..23f080d 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/sect/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/sect/index.vue @@ -180,7 +180,6 @@ import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' -import crudStorattr from '@/views/wms/basedata/st/stor/storattr' import { isvalidPhone } from '@/utils/validate' import crudUserStor from '@/views/wms/basedata/st/userStor/userStor' @@ -214,7 +213,7 @@ const defaultForm = { back_ground_pic: null, font_direction_scode: null, floor_no: null, - is_used: '', + is_used: true, ext_id: null } export default { diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue index e7b1a5a..74b793a 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/struct/index.vue @@ -48,6 +48,7 @@ > @@ -64,6 +65,7 @@ > @@ -331,7 +333,7 @@ {{ dict.label.d_lock_type[scope.row.lock_type] }} - +