diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java index 122f786..ac81039 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/ISysMenuService.java @@ -158,4 +158,10 @@ public interface ISysMenuService extends IService { */ List getMenusByRole(String roleId, String systemType, String category); + /** + * 获取菜单 + * @param param {} + * @return Map + */ + Map queryAuthority(Map param); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java index 3d7cafc..e1356e1 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.java @@ -1,5 +1,6 @@ package org.nl.system.service.menu.dao.mapper; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Param; @@ -80,4 +81,13 @@ public interface SysMenuMapper extends BaseMapper { * @return / */ String findAllChild(String pid); + + /** + * + * @param accountId 用户id + * @param component 组件 + * @param pid 父级id + * @return JSONArray + */ + JSONArray queryPdaAuthority(String accountId, String component, String pid); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml index 2664d38..32ff687 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/dao/mapper/SysMenuMapper.xml @@ -99,4 +99,43 @@ ) t3 where childId != '0' + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java index 2fa76ef..ea04c4f 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/menu/impl/SysMenuServiceImpl.java @@ -3,6 +3,8 @@ package org.nl.system.service.menu.impl; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -468,4 +470,42 @@ public class SysMenuServiceImpl extends ServiceImpl impl baseMapper.getMenusByRole(systemType,category); return null; } + + @Override + public Map queryAuthority(Map param) { + String accountId = SecurityUtils.getCurrentUserId(); + JSONObject returnjo = new JSONObject(); + if (StrUtil.isEmpty(accountId)) { + returnjo.put("code", "0"); + returnjo.put("desc", "用户id不能为空!"); + returnjo.put("result", new JSONArray()); + } + //查询一级 + JSONArray pa = baseMapper.queryPdaAuthority(accountId, "0", null); + if(ObjectUtil.isEmpty(pa)){ + throw new BadRequestException("当前用户无菜单权限!"); + } + JSONObject result = new JSONObject(); + for (int i = 0; i < pa.size(); i++) { + JSONObject res = pa.getJSONObject(i); + //查询二级 + JSONArray secondResults = baseMapper.queryPdaAuthority(accountId, "1", res.getString("menu_id")); + //查询三级 + JSONArray roleTree = new JSONArray(); + for (int j = 0; j < secondResults.size(); j++) { + JSONObject row = secondResults.getJSONObject(j); + String menu_id = row.getString("menu_id"); + JSONArray ThirdResults = baseMapper.queryPdaAuthority(accountId, "2", menu_id); + row.put("sonTree", ThirdResults); + roleTree.add(row); + } + res.put("sonTree", roleTree); + result.put("rf_menu0", res); + } + + returnjo.put("code", "1"); + returnjo.put("desc", "查询成功!"); + returnjo.put("result", result); + return returnjo; + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java new file mode 100644 index 0000000..998d67a --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/controller/StructIvtController.java @@ -0,0 +1,43 @@ +package org.nl.wms.basedata_manage.controller; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.util.Map; + + +/** + *

+ * 载具扩展属性表 控制层 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/structivt") +@Slf4j +public class StructIvtController { + + @Resource + private final IMdPbStoragevehicleextService iMdPbStoragevehicleextService; + + @GetMapping + @Log("查询库存") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iMdPbStoragevehicleextService.queryAll(whereJson, page)), HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java index 1615d10..06c3e79 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/IMdPbStoragevehicleextService.java @@ -1,10 +1,13 @@ package org.nl.wms.basedata_manage.service; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; import java.util.List; +import java.util.Map; /** *

@@ -16,6 +19,14 @@ import java.util.List; */ public interface IMdPbStoragevehicleextService extends IService { + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + /** * 更新库存以及仓位状态 * @param updateIvtList :{ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java index 65ada0c..411f088 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/dao/mapper/MdPbStoragevehicleextMapper.java @@ -29,4 +29,12 @@ public interface MdPbStoragevehicleextMapper extends BaseMapper getCanuseIvt(Page page, @Param("param") Map whereJson); BigDecimal queryCanuseSumByPcsn(@Param("pcsn") String pcsn); + + /** + * 分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage queryAllByPage(Page page, @Param("param") Map whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java index 74b0839..d23b4e0 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/MdPbStoragevehicleextServiceImpl.java @@ -1,7 +1,10 @@ package org.nl.wms.basedata_manage.service.impl; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; @@ -10,6 +13,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Map; /** *

@@ -28,6 +32,12 @@ public class MdPbStoragevehicleextServiceImpl extends ServiceImpl queryAll(Map whereJson, PageQuery page) { + return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + @Override public void updateIvt(List updateIvtList) { for (JSONObject json : updateIvtList) { diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToErpService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToErpService.java new file mode 100644 index 0000000..654023f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/WmsToErpService.java @@ -0,0 +1,26 @@ +package org.nl.wms.ext.service; + +import com.alibaba.fastjson.JSONObject; + +/** + *

+ * WMS调用ERP 服务类 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +public interface WmsToErpService { + + /** + * 出入库单据回传 + * @param whereJson { + * data: [] + * } + * @return JSONObject { + * status: 200 / !=200 + * message: 信息 + * } + */ + JSONObject uploadErp(JSONObject whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToErpServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToErpServiceImpl.java new file mode 100644 index 0000000..45bfa41 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/service/impl/WmsToErpServiceImpl.java @@ -0,0 +1,54 @@ +package org.nl.wms.ext.service.impl; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.exception.BadRequestException; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.service.WmsToErpService; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; + +/** + *

+ * WMS调用ERP 实现类 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +@Service +@Slf4j +public class WmsToErpServiceImpl implements WmsToErpService { + + @Override + public JSONObject uploadErp(JSONObject whereJson) { + log.info("uploadErp接口输入参数为:-------------------" + whereJson.toString()); + JSONObject result = new JSONObject(); + + String url = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("ERP_URL").getValue(); + String api = "CamstarApi/MomRollBakeInBound"; + url = url + api; + + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(whereJson)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + log.info("uploadErp接口输出参数为:-------------------" + result.toString()); + + + Integer status = result.getInteger("status"); + if (status != HttpStatus.OK.value()) { + throw new BadRequestException(result.getString("message")); + } + + } catch (Exception e) { + throw new BadRequestException("ERP提示错误:" + e.getMessage()); + } + return result; + + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java new file mode 100644 index 0000000..a44d787 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/authorization/controller/AuthorizationsController.java @@ -0,0 +1,36 @@ +package org.nl.wms.pda.authorization.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.extern.slf4j.Slf4j; +import org.nl.system.service.menu.ISysMenuService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + *

+ * 手持端 控制层 + *

+ * + * @author Liuxy + * @since 2025-06-04 + */ +@Slf4j +@RestController +@RequestMapping("/api/pda") +public class AuthorizationsController { + @Autowired + private ISysMenuService menuService; + + @PostMapping(value = "/authority") + @SaIgnore + public ResponseEntity queryAuthority(@RequestBody Map param) { + return new ResponseEntity<>(menuService.queryAuthority(param), HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/CheckController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/CheckController.java new file mode 100644 index 0000000..1d58b2c --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/CheckController.java @@ -0,0 +1,84 @@ +package org.nl.wms.warehouse_management.controller; + + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.warehouse_management.service.IStIvtCheckmstService; +import org.nl.wms.warehouse_management.service.dto.CheckInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 盘点 控制层 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/check") +@Slf4j +public class CheckController { + + @Autowired + private IStIvtCheckmstService iStIvtCheckmstService; + + @GetMapping + @Log("查询盘点单") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtCheckmstService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增盘点单") + public ResponseEntity create(@Validated @RequestBody CheckInsertDto dto) { + iStIvtCheckmstService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改盘点单") + public ResponseEntity update(@Validated @RequestBody CheckInsertDto dto) { + iStIvtCheckmstService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除盘点单") + public ResponseEntity delete(@RequestBody Set ids) { + iStIvtCheckmstService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getDtl") + @Log("获取明细") + public ResponseEntity getDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(iStIvtCheckmstService.getDtl(whereJson),HttpStatus.OK); + } + + @PostMapping("/saveCheck") + @Log("保存盘点") + public ResponseEntity saveCheck(@RequestBody CheckInsertDto dto) { + iStIvtCheckmstService.saveCheck(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("确认盘点") + public ResponseEntity confirm(@RequestBody CheckInsertDto dto) { + iStIvtCheckmstService.confirm(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/ReturnController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/ReturnController.java new file mode 100644 index 0000000..efedaed --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/ReturnController.java @@ -0,0 +1,55 @@ +package org.nl.wms.warehouse_management.controller; + + +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.logging.annotation.Log; +import org.nl.wms.warehouse_management.service.ReturnService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** + *

+ * 出入库回传 控制层 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/iosReturn") +@Slf4j +public class ReturnController { + + @Autowired + private ReturnService returnService; + + @GetMapping + @Log("查询出入库单") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(returnService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping("/upload") + @Log("回传") + public ResponseEntity upload(@RequestBody JSONObject whereJson) { + returnService.upload(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/disupload") + @Log("不回传") + public ResponseEntity disupload(@RequestBody JSONObject whereJson) { + returnService.disupload(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java index ecea478..912671b 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSConstant.java @@ -17,6 +17,11 @@ public class IOSConstant { */ public final static String IS_DELETE_YES = "1"; + /** + * 创建方式 + */ + public final static String CREATE_TYPE = "1"; + /** * 更新库存状态:加可用(插入数据) */ diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java index db784d5..2cd0ce4 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/enums/IOSEnum.java @@ -47,12 +47,21 @@ public enum IOSEnum { // 移库单明细状态 MOVE_DTL_STATUS(MapOf.of("生成", "10", "执行中", "20", "完成", "99")), + // 损益单据类型 + MORE_MST_TYPE(MapOf.of("手工损益", "1001", "盘点损益", "1002")), + // 损益单状态 MORE_MST_STATUS(MapOf.of("生成", "10", "审核", "20", "完成", "99")), // 损益类型 MORE_TYPE(MapOf.of("损", "1", "溢", "2")), + // 盘点单主表状态 + CHECK_MST_STATUS(MapOf.of("生成", "10", "盘点中", "20", "完成", "99")), + + // 盘点明细状态 + CHECK_DTL_STATUS(MapOf.of("生成", "10", "盘点中", "20", "已盘点", "30", "完成", "99")), + ; private Map code; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckdtlService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckdtlService.java new file mode 100644 index 0000000..1fbabdd --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckdtlService.java @@ -0,0 +1,41 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl; +import org.nl.wms.warehouse_management.service.dto.CheckInsertDto; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +public interface IStIvtCheckdtlService extends IService { + + /** + * 新增明细 + * @param dto 新增修改实体dto + */ + void createCheckDtl(CheckInsertDto dto); + + /** + * 获取明细 + * @param whereJson { + * check_id:主表标识 + * } + * @return List + */ + List getDtl(Map whereJson); + + /** + * 创建损益单据 + * @param list 明细实体类集合 + */ + void createMore(List list, String check_id); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckmstService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckmstService.java new file mode 100644 index 0000000..b9cbfaf --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtCheckmstService.java @@ -0,0 +1,69 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckmst; +import org.nl.wms.warehouse_management.service.dto.CheckInsertDto; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 盘点单主表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +public interface IStIvtCheckmstService extends IService { + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增盘点单 + * @param dto 新增修改实体dto + */ + void create(CheckInsertDto dto); + + /** + * 修改盘点单 + * @param dto:新增修改dto实体类 + */ + void update(CheckInsertDto dto); + + /** + * 删除盘点单 + * @param ids 标识集合 + */ + void delete(Set ids); + + /** + * 获取明细 + * @param whereJson { + * check_id: 主表标识 + * } + * @return List + */ + List getDtl(Map whereJson); + + /** + * 到村盘点单 + * @param dto 新增修改dto实体类 + */ + void saveCheck(CheckInsertDto dto); + + /** + * 确认盘点 + * @param dto 新增修改dto实体类 + */ + void confirm(CheckInsertDto dto); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessmstService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessmstService.java index 3220d71..eb9f013 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessmstService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessmstService.java @@ -33,7 +33,7 @@ public interface IStIvtMoreorlessmstService extends IService * 新增损益单 * @param dto:新增修改dto实体类 */ - void create(MoreOrLessInsertDto dto); + String create(MoreOrLessInsertDto dto); /** * 修改损益单 diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/ReturnService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/ReturnService.java new file mode 100644 index 0000000..c82cb50 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/ReturnService.java @@ -0,0 +1,45 @@ +package org.nl.wms.warehouse_management.service; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.warehouse_management.service.dao.IOStorInv; + +import java.util.Map; + + +/** + *

+ * 出入库回传 服务类 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +public interface ReturnService extends IService { + + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 回传 + * @param whereJson { + * rows: [] + * } + */ + void upload(JSONObject whereJson); + + /** + * 不回传 + * @param whereJson { + * rows: [] + * } + */ + void disupload(JSONObject whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckdtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckdtl.java new file mode 100644 index 0000000..e50fb0b --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckdtl.java @@ -0,0 +1,128 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 盘点单明细表 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_checkdtl") +public class StIvtCheckdtl implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 盘点单明细id + */ + @TableId(value = "checkdtl_id") + private String checkdtl_id; + + /** + * 盘点单标识 + */ + private String check_id; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 盘点库区 + */ + private String sect_code; + + /** + * 盘点货位 + */ + private String struct_code; + + /** + * 盘点站台 + */ + private String checkpoint_code; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 库存数量 + */ + private BigDecimal base_qty; + + /** + * 基本计量单位 + */ + private String qty_unit_id; + + /** + * 单位名称 + */ + private String qty_unit_name; + + /** + * 状态 + */ + private String status; + + /** + * 是否已下发 + */ + private String is_down; + + /** + * 盘点数量 + */ + private BigDecimal fac_qty; + + /** + * 盘点结果 + */ + private String check_result; + + /** + * 盘点人 + */ + private String check_optid; + + /** + * 盘点人姓名 + */ + private String check_optname; + + /** + * 盘点时间 + */ + private String check_time; + + /** + * 明细备注 + */ + private String remark; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckmst.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckmst.java new file mode 100644 index 0000000..442a58c --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtCheckmst.java @@ -0,0 +1,128 @@ +package org.nl.wms.warehouse_management.service.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 盘点单主表 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_checkmst") +public class StIvtCheckmst implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 盘点单标识 + */ + @TableId(value = "check_id") + private String check_id; + + /** + * 盘点单号 + */ + private String check_code; + + /** + * 盘点单类型 + */ + private String check_type; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 明细数 + */ + private BigDecimal dtl_num; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 制单人 + */ + private String input_optid; + + /** + * 制单人姓名 + */ + private String input_optname; + + /** + * 制单时间 + */ + private String input_time; + + /** + * 审核人 + */ + private String audit_optid; + + /** + * 审核人姓名 + */ + private String audit_optname; + + /** + * 审核时间 + */ + private String audit_time; + + /** + * 确认人 + */ + private String confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 备注 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 是否已上传 + */ + private String is_upload; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java new file mode 100644 index 0000000..166bc69 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +public interface StIvtCheckdtlMapper extends BaseMapper { + + /** + * 获取明细 + * @param whereJson { + * check_id 主表标识 + * } + * @return List + */ + List getDtl(@Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml new file mode 100644 index 0000000..f014af8 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckdtlMapper.xml @@ -0,0 +1,27 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.java new file mode 100644 index 0000000..0e1ced3 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.java @@ -0,0 +1,15 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckmst; + +/** + *

+ * 盘点单主表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +public interface StIvtCheckmstMapper extends BaseMapper { +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.xml new file mode 100644 index 0000000..9080108 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtCheckmstMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/CheckInsertDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/CheckInsertDto.java new file mode 100644 index 0000000..5f1c82e --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/CheckInsertDto.java @@ -0,0 +1,75 @@ +package org.nl.wms.warehouse_management.service.dto; + +import com.alibaba.fastjson.JSONObject; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * 盘点新增修改dto实体类 + * @author Liuxy + * 2025/5/29 + */ +@Data +public class CheckInsertDto { + + /** + * 单据标识 + */ + private String check_id; + + /** + * 单据类型 + */ + private String check_type; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 明细数 + */ + private BigDecimal dtl_num; + + /** + * 备注 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + /** + * 仓库id + */ + private String stor_id; + + /** + * 仓库名称 + */ + private String stor_name; + + /** + * 明细数据: + * { + * sect_code 库区 + * struct_code 货位 + * storagevehicle_code 载具编码 + * material_id 物料id + * material_code 物料编码 + * pcsn 批次 + * base_qty 库存数量 + * fac_qty 盘点数量 + * qty_unit_id 计量单位标识 + * qty_unit_name 计量单位名称 + * status 状态 + * remark 备注 + * } + */ + private List tableData; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RetrunServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RetrunServiceImpl.java new file mode 100644 index 0000000..32ee0d1 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RetrunServiceImpl.java @@ -0,0 +1,197 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService; +import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService; +import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase; +import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit; +import org.nl.wms.ext.service.WmsToErpService; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.ReturnService; +import org.nl.wms.warehouse_management.service.dao.IOStorInv; +import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; +import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + *

+ * 出入库回传 实现类 + *

+ * + * @author Liuxy + * @since 2025-06-03 + */ +@Service +public class RetrunServiceImpl extends ServiceImpl implements ReturnService { + + /** + * 出入库mapper服务 + */ + @Autowired + private IOStorInvDisMapper ioStorInvDisMapper; + + /** + * 物料基础服务 + */ + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; + + /** + * 计量单位服务 + */ + @Autowired + private IMdPbMeasureunitService iMdPbMeasureunitService; + + /** + * WMS调用ERP服务类 + */ + @Autowired + private WmsToErpService wmsToErpService; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String stor_id = MapUtil.getStr(whereJson, "stor_id"); + String io_type = MapUtil.getStr(whereJson, "io_type"); + String bill_type = MapUtil.getStr(whereJson, "bill_type"); + String bill_code = MapUtil.getStr(whereJson, "bill_code"); + String is_upload = MapUtil.getStr(whereJson, "is_upload"); + String begin_time = MapUtil.getStr(whereJson, "begin_time"); + String end_time = MapUtil.getStr(whereJson, "end_time"); + + LambdaQueryWrapper lambda = new QueryWrapper().lambda(); + lambda.eq(ObjectUtil.isNotEmpty(stor_id), IOStorInv::getStor_id, stor_id); + lambda.eq(ObjectUtil.isNotEmpty(io_type), IOStorInv::getIo_type, io_type); + lambda.eq(ObjectUtil.isNotEmpty(bill_type), IOStorInv::getBill_type, bill_type); + lambda.like(ObjectUtil.isNotEmpty(bill_code), IOStorInv::getBill_code, bill_code); + lambda.eq(ObjectUtil.isNotEmpty(is_upload), IOStorInv::getIs_upload, is_upload); + lambda.ge(ObjectUtil.isNotEmpty(begin_time), IOStorInv::getInput_time, begin_time); + lambda.lt(ObjectUtil.isNotEmpty(end_time), IOStorInv::getInput_time, end_time); + lambda.eq(IOStorInv::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")); + lambda.eq(IOStorInv::getBill_status, IOSEnum.CHECK_MST_STATUS.code("完成")); + lambda.orderByDesc(IOStorInv::getInput_time); + return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), + lambda + ); + } + + @Override + public void upload(JSONObject whereJson) { + List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + // 根据主表id查询所有分配明细 + List iosDisList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .in(IOStorInvDis::getIostorinv_id, rows.stream() + .map(row -> row.getString("iostorinv_id")) + .collect(Collectors.toList()) + ) + ); + // 查询所有物料 + List materList = iMdMeMaterialbaseService.list( + new QueryWrapper().lambda() + .in(MdMeMaterialbase::getMaterial_id, iosDisList.stream() + .map(IOStorInvDis::getMaterial_id) + .distinct() + .collect(Collectors.toList()) + + ) + ); + // 查询所有计量单位 + List unitList = iMdPbMeasureunitService.list( + new QueryWrapper().lambda() + .in(MdPbMeasureunit::getMeasure_unit_id, iosDisList.stream() + .map(IOStorInvDis::getQty_unit_id) + .distinct() + .collect(Collectors.toList())) + ); + + // 需回传数据集合 + List paramList = new ArrayList<>(); + for(IOStorInvDis disDao : iosDisList) { + JSONObject param = new JSONObject(); + // 物料编码 + MdMeMaterialbase materDao = materList.stream() + .filter(row -> row.getMaterial_id().equals(disDao.getMaterial_id())) + .findFirst().orElse(null); + param.put("mater_code", materDao.getExt_id()); + // 批次 + param.put("batch_no", disDao.getPcsn()); + // 数量 + param.put("quantity", disDao.getReal_qty()); + // 计量单位 + MdPbMeasureunit unitDao = unitList.stream() + .filter(row -> row.getMeasure_unit_id().equals(disDao.getQty_unit_id())) + .findFirst().orElse(null); + param.put("unit_code", unitDao.getExt_id()); + // 仓库编码 + JSONObject jsonMst = rows.stream() + .filter(row -> row.getString("iostorinv_id").equals(disDao.getIostorinv_id())) + .findFirst().orElse(null); + param.put("stor_code", jsonMst.getString("stor_code")); + // 货位编码 + param.put("point_code", disDao.getStruct_code()); + // 载具编码 + param.put("pallet_code", disDao.getStoragevehicle_code()); + // 单据号 + param.put("inv_code", jsonMst.getString("bill_code")); + // 业务类型 + param.put("task_type", jsonMst.getString("bill_type")); + paramList.add(param); + } + JSONObject jsonParam = new JSONObject(); + jsonParam.put("data", paramList); + wmsToErpService.uploadErp(jsonParam); + + // 更新主表 + this.update( + new UpdateWrapper().lambda() + .in(IOStorInv::getIostorinv_id, rows.stream() + .map(row -> row.getString("iostorinv_id")) + .collect(Collectors.toList()) + ) + .set(IOStorInv::getIs_upload, IOSConstant.IS_DELETE_YES) + .set(IOStorInv::getUpdate_optid, SecurityUtils.getCurrentUserId()) + .set(IOStorInv::getUpdate_optname, SecurityUtils.getCurrentNickName()) + .set(IOStorInv::getUpdate_time, DateUtil.now()) + ); + + } + + @Override + @Transactional + public void disupload(JSONObject whereJson) { + List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + List idList = rows.stream() + .map(row -> row.getString("iostorinv_id")) + .collect(Collectors.toList()); + // 更新 + this.update( + new UpdateWrapper().lambda() + .in(IOStorInv::getIo_type, idList) + .set(IOStorInv::getIs_upload, IOSConstant.IS_DELETE_YES) + .set(IOStorInv::getUpdate_optid, SecurityUtils.getCurrentUserId()) + .set(IOStorInv::getUpdate_optname, SecurityUtils.getCurrentNickName()) + .set(IOStorInv::getUpdate_time, DateUtil.now()) + ); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckdtlServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckdtlServiceImpl.java new file mode 100644 index 0000000..bc584b5 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckdtlServiceImpl.java @@ -0,0 +1,131 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.utils.IdUtil; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtCheckdtlService; +import org.nl.wms.warehouse_management.service.IStIvtCheckmstService; +import org.nl.wms.warehouse_management.service.IStIvtMoreorlessmstService; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckmst; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtCheckdtlMapper; +import org.nl.wms.warehouse_management.service.dto.CheckInsertDto; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + *

+ * 盘点单明细表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +@Service +public class StIvtCheckdtlServiceImpl extends ServiceImpl implements IStIvtCheckdtlService { + + /** + * 盘点单主表服务 + */ + @Autowired + private IStIvtCheckmstService iStIvtCheckmstService; + + /** + * 损益单主表服务 + */ + @Autowired + private IStIvtMoreorlessmstService iStIvtMoreorlessmstService; + + @Override + public void createCheckDtl(CheckInsertDto dto) { + // 批量新增集合 + List dtlDaoList = new ArrayList<>(); + for (int i = 0; i < dto.getTableData().size(); i++) { + JSONObject json = dto.getTableData().get(i); + StIvtCheckdtl dao = new StIvtCheckdtl(); + dao.setCheckdtl_id(IdUtil.getStringId()); + dao.setCheck_id(dto.getCheck_id()); + dao.setSeq_no(BigDecimal.valueOf(i+1)); + dao.setSect_code(json.getString("sect_code")); + dao.setStruct_code(json.getString("struct_code")); + dao.setStoragevehicle_code(json.getString("storagevehicle_code")); + dao.setMaterial_id(json.getString("material_id")); + dao.setPcsn(json.getString("pcsn")); + dao.setBase_qty(json.getBigDecimal("base_qty")); + dao.setFac_qty(json.getBigDecimal("fac_qty")); + dao.setQty_unit_id(json.getString("qty_unit_id")); + dao.setQty_unit_name(json.getString("qty_unit_name")); + dao.setStatus(json.getString("status")); + dao.setRemark(json.getString("remark")); + dtlDaoList.add(dao); + } + this.saveBatch(dtlDaoList); + } + + @Override + public List getDtl(Map whereJson) { + return this.baseMapper.getDtl(whereJson); + } + + @Override + public void createMore(List dtlDaoList, String check_id) { + StIvtCheckmst mstDao = iStIvtCheckmstService.getById(check_id); + for (StIvtCheckdtl dao : dtlDaoList) { + // 组织创建损益单据主数据 + MoreOrLessInsertDto moreDto = new MoreOrLessInsertDto(); + moreDto.setMol_inv_type(IOSEnum.MORE_MST_TYPE.code("盘点损益")); + // 根据库存数量以及盘点数量来判断损益类型 + double base_qty = dao.getBase_qty().doubleValue(); + double fac_qty = dao.getFac_qty().doubleValue(); + double mol_qty; + if (base_qty == fac_qty) { + continue; + } else if (base_qty > fac_qty) { + moreDto.setMol_type(IOSEnum.MORE_TYPE.code("损")); + mol_qty = NumberUtil.sub(base_qty, fac_qty); + } else { + moreDto.setMol_type(IOSEnum.MORE_TYPE.code("溢")); + mol_qty = NumberUtil.sub(fac_qty, base_qty); + } + moreDto.setBiz_date(DateUtil.today()); + moreDto.setDtl_num(BigDecimal.valueOf(1)); + moreDto.setStor_id(mstDao.getStor_id()); + moreDto.setRemark("由明细标识【"+dao.getCheck_optid()+"】创建"); + moreDto.setTotal_qty(BigDecimal.valueOf(mol_qty)); + moreDto.setCreate_mode(IOSConstant.CREATE_TYPE); + moreDto.setStatus(IOSEnum.MORE_MST_STATUS.code("生成")); + + // 创建损益单明细数据 + List tableData = new ArrayList<>(); + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("material_id", dao.getMaterial_id()); + jsonDtl.put("pcsn", dao.getPcsn()); + jsonDtl.put("ivt_qty", base_qty); + jsonDtl.put("mol_qty", mol_qty); + jsonDtl.put("qty_unit_id", dao.getQty_unit_id()); + jsonDtl.put("qty_unit_name", dao.getQty_unit_name()); + jsonDtl.put("storagevehicle_code", dao.getStoragevehicle_code()); + jsonDtl.put("sect_code", dao.getSect_code()); + jsonDtl.put("struct_code", dao.getStruct_code()); + jsonDtl.put("status", IOSEnum.MORE_MST_STATUS.code("生成")); + jsonDtl.put("remark", "由明细标识【"+dao.getCheck_optid()+"】创建"); + jsonDtl.put("source_bill_code", mstDao.getCheck_code()); + tableData.add(jsonDtl); + moreDto.setTableData(tableData); + //调用创建 + String mol_id = iStIvtMoreorlessmstService.create(moreDto); + // 调用强制确认 + iStIvtMoreorlessmstService.confirm(iStIvtMoreorlessmstService.getById(mol_id)); + } + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckmstServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckmstServiceImpl.java new file mode 100644 index 0000000..a5c09bf --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtCheckmstServiceImpl.java @@ -0,0 +1,168 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.basedata_manage.enums.BaseDataEnum; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtCheckdtlService; +import org.nl.wms.warehouse_management.service.IStIvtCheckmstService; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckdtl; +import org.nl.wms.warehouse_management.service.dao.StIvtCheckmst; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtCheckmstMapper; +import org.nl.wms.warehouse_management.service.dto.CheckInsertDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 盘点单主表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-05-29 + */ +@Service +public class StIvtCheckmstServiceImpl extends ServiceImpl implements IStIvtCheckmstService { + + @Autowired + private IStIvtCheckdtlService iStIvtCheckdtlService; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String check_code = MapUtil.getStr(whereJson, "check_code"); + String stor_id = MapUtil.getStr(whereJson, "stor_id"); + String status = MapUtil.getStr(whereJson, "status"); + String check_type = MapUtil.getStr(whereJson, "check_type"); + String create_mode = MapUtil.getStr(whereJson, "create_mode"); + String begin_time = MapUtil.getStr(whereJson, "begin_time"); + String end_time = MapUtil.getStr(whereJson, "end_time"); + // 查询条件 + LambdaQueryWrapper queryWrapper = new QueryWrapper().lambda(); + queryWrapper.like(ObjectUtil.isNotEmpty(check_code), StIvtCheckmst::getCheck_code, check_code); + queryWrapper.eq(ObjectUtil.isNotEmpty(stor_id), StIvtCheckmst::getStor_id, stor_id); + queryWrapper.eq(ObjectUtil.isNotEmpty(check_type), StIvtCheckmst::getCheck_type, check_type); + queryWrapper.eq(ObjectUtil.isNotEmpty(status), StIvtCheckmst::getStatus, status); + queryWrapper.eq(ObjectUtil.isNotEmpty(create_mode), StIvtCheckmst::getCreate_mode, create_mode); + queryWrapper.ge(ObjectUtil.isNotEmpty(begin_time), StIvtCheckmst::getInput_time, begin_time); + queryWrapper.lt(ObjectUtil.isNotEmpty(end_time), StIvtCheckmst::getInput_time, end_time); + queryWrapper.eq(StIvtCheckmst::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")); + queryWrapper.orderByDesc(StIvtCheckmst::getInput_time); + return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()), + queryWrapper + ); + } + + @Override + @Transactional + public void create(CheckInsertDto dto) { + // 主表 + StIvtCheckmst mstDao = new StIvtCheckmst(); + mstDao.setCheck_id(IdUtil.getStringId()); + mstDao.setCheck_code(CodeUtil.getNewCode("CHECK_BILL_CODE")); + mstDao.setCheck_type(dto.getCheck_type()); + mstDao.setStor_id(dto.getStor_id()); + mstDao.setStor_name(dto.getStor_name()); + mstDao.setDtl_num(dto.getDtl_num()); + mstDao.setCreate_mode(dto.getCreate_mode()); + mstDao.setStatus(dto.getStatus()); + mstDao.setRemark(dto.getRemark()); + mstDao.setInput_optid(SecurityUtils.getCurrentUserId()); + mstDao.setInput_optname(SecurityUtils.getCurrentNickName()); + mstDao.setInput_time(DateUtil.now()); + this.save(mstDao); + // 明细 + dto.setCheck_id(mstDao.getCheck_id()); + iStIvtCheckdtlService.createCheckDtl(dto); + } + + @Override + @Transactional + public void update(CheckInsertDto dto) { + StIvtCheckmst mstDao = this.getById(dto.getCheck_id()); + mstDao.setStor_id(dto.getStor_id()); + mstDao.setCheck_type(dto.getCheck_type()); + mstDao.setDtl_num(dto.getDtl_num()); + this.updateById(mstDao); + // 删除老明细 + iStIvtCheckdtlService.remove( + new QueryWrapper().lambda() + .eq(StIvtCheckdtl::getCheck_id, mstDao.getCheck_id()) + ); + // 新增明细 + iStIvtCheckdtlService.createCheckDtl(dto); + } + + @Override + public void delete(Set ids) { + this.update( + new UpdateWrapper().lambda() + .in(StIvtCheckmst::getCheck_id,ids) + .set(StIvtCheckmst::getIs_delete, IOSConstant.IS_DELETE_YES) + ); + } + + @Override + public List getDtl(Map whereJson) { + return iStIvtCheckdtlService.getDtl(whereJson); + } + + @Override + @Transactional + public void saveCheck(CheckInsertDto dto) { + StIvtCheckmst mstDao = this.getById(dto.getCheck_id()); + mstDao.setStatus(IOSEnum.CHECK_MST_STATUS.code("盘点中")); + this.updateById(mstDao); + // 更新明细 + iStIvtCheckdtlService.remove( + new QueryWrapper().lambda() + .eq(StIvtCheckdtl::getCheck_id, mstDao.getCheck_id()) + ); + iStIvtCheckdtlService.createCheckDtl(dto); + iStIvtCheckdtlService.update( + new UpdateWrapper().lambda() + .eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id()) + .set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("盘点中")) + ); + } + + @Override + @Transactional + public void confirm(CheckInsertDto dto) { + // 更新主表 + StIvtCheckmst mstDao = this.getById(dto.getCheck_id()); + mstDao.setStatus(IOSEnum.CHECK_MST_STATUS.code("完成")); + mstDao.setConfirm_optid(SecurityUtils.getCurrentUserId()); + mstDao.setConfirm_optname(SecurityUtils.getCurrentNickName()); + mstDao.setConfirm_time(DateUtil.now()); + this.updateById(mstDao); + // 更新明细 + iStIvtCheckdtlService.update( + new UpdateWrapper().lambda() + .eq(StIvtCheckdtl::getCheck_id, dto.getCheck_id()) + .set(StIvtCheckdtl::getStatus, IOSEnum.CHECK_DTL_STATUS.code("完成")) + ); + // 创建损益单 + iStIvtCheckdtlService.createMore(iStIvtCheckdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtCheckdtl::getCheck_id,mstDao.getCheck_id()) + ),mstDao.getCheck_id()); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessmstServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessmstServiceImpl.java index 91350b1..5c75018 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessmstServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessmstServiceImpl.java @@ -59,7 +59,7 @@ public class StIvtMoreorlessmstServiceImpl extends ServiceImpl - - + - ${LOG_HOME}/XgAgvDeviceDriver/${DEVICECODE}/%d{yyyy-MM-dd}.%i.log + ${LOG_HOME}/WmsToErp/%d{yyyy-MM-dd}.%i.log 15 @@ -22,13 +21,8 @@ - - - - - + + diff --git a/wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml b/wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml index aaedad5..a480500 100644 --- a/wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml +++ b/wms/nladmin-system/nlsso-server/src/main/resources/logback-spring.xml @@ -15,9 +15,7 @@ https://juejin.cn/post/6844903775631572999 value="%cyan(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss.SSS}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %blue(%msg%n)"/> - - + diff --git a/wms/nladmin-ui/src/utils/nladmin.js b/wms/nladmin-ui/src/utils/nladmin.js index fb347e6..e5f7d36 100644 --- a/wms/nladmin-ui/src/utils/nladmin.js +++ b/wms/nladmin-ui/src/utils/nladmin.js @@ -234,14 +234,14 @@ export async function blobValidate(data) { * 注:prop,title有一个必传 */ export function flexWidth(prop, tableData, title, num = 0) { + if (!tableData || tableData.length === 0) { // 表格没数据不做处理 + return + } let flexWidth = 0// 初始化表格列宽 let columnContent = ''// 占位最宽的内容 const canvas = document.createElement('canvas') const context = canvas.getContext('2d') context.font = '14px Microsoft YaHei' - if (tableData.length === 0) { // 表格没数据不做处理 - return context.measureText(title).width + 20 + num + 'px' - } // 获取占位最宽的内容 let index = 0 for (let i = 0; i < tableData.length; i++) { // 循环表格内容,获取表格内容中最长的数据 diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/checkbill/AddDialog.vue new file mode 100644 index 0000000..afaa13c --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/AddDialog.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/AddDtl.vue b/wms/nladmin-ui/src/views/wms/st/checkbill/AddDtl.vue new file mode 100644 index 0000000..ee8efce --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/AddDtl.vue @@ -0,0 +1,230 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue b/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue new file mode 100644 index 0000000..8e8a221 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/CheckDialog.vue @@ -0,0 +1,343 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/check.js b/wms/nladmin-ui/src/views/wms/st/checkbill/check.js new file mode 100644 index 0000000..eb11069 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/check.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/check', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/check/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/check', + method: 'put', + data + }) +} + +export function getDtl(params) { + return request({ + url: '/api/check/getDtl', + method: 'get', + params + }) +} +export function getStructIvt(params) { + return request({ + url: '/api/check/getStructIvt', + method: 'get', + params + }) +} + +export function confirm(data) { + return request({ + url: '/api/check/confirm', + method: 'post', + data + }) +} +export function saveCheck(data) { + return request({ + url: '/api/check/saveCheck', + method: 'post', + data + }) +} +export default { add, edit, del, getDtl, getStructIvt, confirm, saveCheck } diff --git a/wms/nladmin-ui/src/views/wms/st/checkbill/index.vue b/wms/nladmin-ui/src/views/wms/st/checkbill/index.vue new file mode 100644 index 0000000..f8a9f51 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/checkbill/index.vue @@ -0,0 +1,345 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js b/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js new file mode 100644 index 0000000..79241b4 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/inandoutreturn.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/iosReturn', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/iosReturn/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/iosReturn', + method: 'put', + data + }) +} + +export function upload(data) { + return request({ + url: '/api/iosReturn/upload', + method: 'post', + data + }) +} + +export function disupload(data) { + return request({ + url: '/api/iosReturn/disupload', + method: 'post', + data + }) +} + +export default { add, edit, del, upload, disupload } diff --git a/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue b/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue new file mode 100644 index 0000000..aeb37b3 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/inAndOutReturn/index.vue @@ -0,0 +1,355 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/statement/structivt/index.vue b/wms/nladmin-ui/src/views/wms/statement/structivt/index.vue new file mode 100644 index 0000000..85ddab2 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/statement/structivt/index.vue @@ -0,0 +1,184 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js b/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js new file mode 100644 index 0000000..52927a9 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/statement/structivt/structivt.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/structivt', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/structivt/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/structivt', + method: 'put', + data + }) +} + +export function getStruct() { + return request({ + url: 'api/structivt/getStruct', + method: 'get' + }) +} + +export function getStructById(data) { + return request({ + url: 'api/structivt/getStructById', + method: 'post', + data + }) +} + +export function getUnits() { + return request({ + url: 'api/structivt/getUnits', + method: 'get' + }) +} + +export function save(data) { + return request({ + url: 'api/structivt/save', + method: 'post', + data: data + }) +} + +export function excelImport(data) { + return request({ + url: 'api/structivt/importExcel', + method: 'post', + data + }) +} + +export default { add, edit, del, getStruct, getStructById, getUnits, save, excelImport }