diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/SectattrServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/SectattrServiceImpl.java index b1db514..4e00a4e 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/SectattrServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/basedata_manage/service/impl/SectattrServiceImpl.java @@ -160,6 +160,7 @@ public class SectattrServiceImpl extends ServiceImpl i String is_attachment = (String) whereJson.get("is_attachment"); String is_reversed = (String) whereJson.get("is_reversed"); String sect_type_attr = (String) whereJson.get("sect_type_attr"); + String stor_id = (String) whereJson.get("stor_id"); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(BsrealStorattr.class) .select(BsrealStorattr::getStor_id, BsrealStorattr::getStor_code, BsrealStorattr::getStor_name) @@ -169,6 +170,7 @@ public class SectattrServiceImpl extends ServiceImpl i .eq(StrUtil.isNotEmpty(is_productstore),BsrealStorattr::getIs_materialstore,is_productstore) .eq(StrUtil.isNotEmpty(is_attachment),BsrealStorattr::getIs_materialstore,is_attachment) .eq(StrUtil.isNotEmpty(is_reversed),BsrealStorattr::getIs_materialstore,is_reversed) + .eq(StrUtil.isNotEmpty(stor_id),BsrealStorattr::getStor_id,stor_id) .eq(BsrealStorattr::getIs_delete, BaseDataEnum.IS_YES_NOT.code("否")) .eq(BsrealStorattr::getIs_used, BaseDataEnum.IS_YES_NOT.code("是") ); diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoreOrlessController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoreOrlessController.java new file mode 100644 index 0000000..113eec6 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/MoreOrlessController.java @@ -0,0 +1,78 @@ +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.IStIvtMoreorlessmstService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessmst; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; +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-28 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/moreorLess") +@Slf4j +public class MoreOrlessController { + + @Autowired + private IStIvtMoreorlessmstService iStIvtMoreorlessmstService; + + @GetMapping + @Log("查询损益单") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + return new ResponseEntity<>(TableDataInfo.build(iStIvtMoreorlessmstService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增损益单") + public ResponseEntity create(@Validated @RequestBody MoreOrLessInsertDto dto) { + iStIvtMoreorlessmstService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改损益单") + public ResponseEntity update(@Validated @RequestBody MoreOrLessInsertDto dto) { + iStIvtMoreorlessmstService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除损益单") + public ResponseEntity delete(@RequestBody Set ids) { + iStIvtMoreorlessmstService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/queryMolDtl") + @Log("查询损益单明细") + public ResponseEntity queryMolDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(iStIvtMoreorlessmstService.queryMolDtl(whereJson), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("强制确认") + public ResponseEntity confirm(@RequestBody StIvtMoreorlessmst dao) { + iStIvtMoreorlessmstService.confirm(dao); + 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 c7109e3..ecea478 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 @@ -8,7 +8,17 @@ package org.nl.wms.warehouse_management.enums; public class IOSConstant { /** - * 更新库存状态:加可用 + * 是否删除 否 + */ + public final static String IS_DELETE_NO = "0"; + + /** + * 是否删除 是 + */ + public final static String IS_DELETE_YES = "1"; + + /** + * 更新库存状态:加可用(插入数据) */ public final static String UPDATE_IVT_TYPE_ADD_CANUSE = "1"; @@ -27,6 +37,16 @@ public class IOSConstant { */ public final static String UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE = "4"; + /** + * 更新库存状态:加可用(加库存) + */ + public final static String UPDATE_IVT_TYPE_ADD_CANUSE_IVT = "5"; + + /** + * 更新库存状态:减可用(减库存) + */ + public final static String UPDATE_IVT_TYPE_SUB_CANUSE_IVT = "6"; + /** * 移库任务类编码 */ 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 a136717..b831e77 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 @@ -35,6 +35,12 @@ public enum IOSEnum { // 移库单明细状态 MOVE_DTL_STATUS(MapOf.of("生成", "10", "执行中", "20", "完成", "99")), + // 损益单状态 + MORE_MST_STATUS(MapOf.of("生成", "10", "审核", "20", "完成", "99")), + + // 损益类型 + MORE_TYPE(MapOf.of("损", "1", "溢", "2")), + ; private Map code; diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessdtlService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessdtlService.java new file mode 100644 index 0000000..194100b --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessdtlService.java @@ -0,0 +1,35 @@ +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.StIvtMoreorlessdtl; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 损溢单明细表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-28 + */ +public interface IStIvtMoreorlessdtlService extends IService { + + /** + * 创建明细 + * @param dto 新增修改实体类 + */ + void createMoreDtl(MoreOrLessInsertDto dto); + + /** + * 查询明细 + * @param whereJson { + * mol_id:标识id + * } + * @return List + */ + List queryMolDtl(Map whereJson); +} 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 new file mode 100644 index 0000000..3220d71 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IStIvtMoreorlessmstService.java @@ -0,0 +1,64 @@ +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.StIvtMoreorlessmst; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; + +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 损溢单主表 服务类 + *

+ * + * @author Liuxy + * @since 2025-05-28 + */ +public interface IStIvtMoreorlessmstService extends IService { + + /** + * 分页查询 + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增损益单 + * @param dto:新增修改dto实体类 + */ + void create(MoreOrLessInsertDto dto); + + /** + * 修改损益单 + * @param dto:新增修改dto实体类 + */ + void update(MoreOrLessInsertDto dto); + + /** + * 删除损益单 + * @param ids id集合 + */ + void delete(Set ids); + + /** + * 查询损益单明细 + * @param whereJson { + * mol_id: 标识id + * } + * @return List + */ + List queryMolDtl(Map whereJson); + + /** + * 强制确认 + * @param dao 主表实体类 + */ + void confirm(StIvtMoreorlessmst dao); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java new file mode 100644 index 0000000..bb9e47f --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessdtl.java @@ -0,0 +1,93 @@ +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-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moreorlessdtl") +public class StIvtMoreorlessdtl implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 损溢单明细id + */ + @TableId(value = "mol_dtl_id") + private String mol_dtl_id; + + /** + * 损溢单标识 + */ + private String mol_id; + + /** + * 明细序号 + */ + private BigDecimal seq_no; + + /** + * 库区编码 + */ + private String sect_code; + + /** + * 仓位编码 + */ + private String struct_code; + + /** + * 存储载具编码 + */ + private String storagevehicle_code; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 数量计量单位标识 + */ + private String qty_unit_id; + + /** + * 数量计量单位名称 + */ + private String qty_unit_name; + + /** + * 损溢数量 + */ + private BigDecimal mol_qty; + + /** + * 状态 + */ + private String status; + + /** + * 来源单编号 + */ + private String source_bill_code; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessmst.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessmst.java new file mode 100644 index 0000000..7700217 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/StIvtMoreorlessmst.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-28 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("st_ivt_moreorlessmst") +public class StIvtMoreorlessmst implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 损溢单标识 + */ + @TableId(value = "mol_id") + private String mol_id; + + /** + * 损溢单号 + */ + private String mol_code; + + /** + * 损溢单类型 + */ + private String mol_inv_type; + + /** + * 损溢类型 + */ + private String mol_type; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 明细数 + */ + private BigDecimal dtl_num; + + /** + * 总数量 + */ + private BigDecimal total_qty; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 制单人 + */ + private String input_optid; + + /** + * 制单人姓名 + */ + private String input_optname; + + /** + * 制单时间 + */ + private String input_time; + + /** + * 修改人 + */ + private String update_optid; + + /** + * 修改人姓名 + */ + private String update_optname; + + /** + * 修改时间 + */ + private String update_time; + + /** + * 确认人 + */ + private String confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 备注 + */ + private String remark; + + /** + * 状态 + */ + private String status; + + /** + * 是否删除 + */ + private String is_delete; + + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.java new file mode 100644 index 0000000..154b8d6 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.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.StIvtMoreorlessdtl; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 损溢单明细表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-28 + */ +public interface StIvtMoreorlessdtlMapper extends BaseMapper { + + /** + * 查询明细 + * @param whereJson { + * mol_id 标识id + * } + * @return List + */ + List queryMolDtl(@Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.xml new file mode 100644 index 0000000..fab47aa --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessdtlMapper.xml @@ -0,0 +1,36 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.java new file mode 100644 index 0000000..ea63bea --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.warehouse_management.service.dao.mapper; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessmst; + +import java.util.Map; + +/** + *

+ * 损溢单主表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-05-28 + */ +public interface StIvtMoreorlessmstMapper extends BaseMapper { + + /** + * 分页查询 + * @param page 分页条件 + * @param whereJson 查询条件 + * @return IPage + */ + IPage queryAllByPage(Page page,@Param("param") Map whereJson); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.xml new file mode 100644 index 0000000..97ba83a --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/StIvtMoreorlessmstMapper.xml @@ -0,0 +1,55 @@ + + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoreOrLessInsertDto.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoreOrLessInsertDto.java new file mode 100644 index 0000000..4e81029 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dto/MoreOrLessInsertDto.java @@ -0,0 +1,87 @@ +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/28 + */ +@Data +public class MoreOrLessInsertDto { + + /** + * 单据标识 + */ + private String mol_id; + + /** + * 单据类型 + */ + private String mol_inv_type; + + /** + * 损益类型 + */ + private String mol_type; + + /** + * 业务日期 + */ + private String biz_date; + + /** + * 明细数 + */ + private BigDecimal dtl_num; + + /** + * 仓库标识 + */ + private String stor_id; + + /** + * 备注 + */ + private String remark; + + /** + * 总数量 + */ + private BigDecimal total_qty; + + /** + * 生成方式 + */ + private String create_mode; + + /** + * 状态 + */ + private String status; + + /** + * 明细数据: + * { + * material_code 物料编码 + * material_id 物料id + * material_name 物料名称 + * pcsn 批次 + * ivt_qty 库存数量 + * mol_qty 损益数量 + * qty_unit_id 计量单位标识 + * qty_unit_name 计量单位名称 + * storagevehicle_code 载具编码 + * sect_code 库区 + * struct_code 仓位 + * status 执行状态 + * remark 备注 + * source_bill_code 源单据编码(盘点业务使用) + * } + */ + private List tableData; +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java new file mode 100644 index 0000000..006d47e --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessdtlServiceImpl.java @@ -0,0 +1,59 @@ +package org.nl.wms.warehouse_management.service.impl; + +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.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtMoreorlessdtlService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessdtl; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtMoreorlessdtlMapper; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; +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-28 + */ +@Service +public class StIvtMoreorlessdtlServiceImpl extends ServiceImpl implements IStIvtMoreorlessdtlService { + + @Override + public void createMoreDtl(MoreOrLessInsertDto dto) { + // 批量新增明细集合 + List dtlDaoList = new ArrayList<>(); + + for (int i = 0; i < dto.getTableData().size(); i++) { + JSONObject json = dto.getTableData().get(i); + StIvtMoreorlessdtl dao = new StIvtMoreorlessdtl(); + dao.setMol_dtl_id(IdUtil.getStringId()); + dao.setMol_id(dto.getMol_id()); + dao.setSeq_no(BigDecimal.valueOf(i+1)); + dao.setStruct_code(json.getString("struct_code")); + dao.setSect_code(json.getString("sect_code")); + dao.setStoragevehicle_code(json.getString("storagevehicle_code")); + dao.setMaterial_id(json.getString("material_id")); + dao.setPcsn(json.getString("pcsn")); + dao.setQty_unit_id(json.getString("qty_unit_id")); + dao.setQty_unit_name(json.getString("qty_unit_name")); + dao.setMol_qty(json.getBigDecimal("mol_qty")); + dao.setStatus(IOSEnum.MORE_MST_STATUS.code("生成")); + dao.setSource_bill_code(json.getString("source_bill_code")); + dtlDaoList.add(dao); + } + this.saveBatch(dtlDaoList); + } + + @Override + public List queryMolDtl(Map whereJson) { + return this.baseMapper.queryMolDtl(whereJson); + } +} 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 new file mode 100644 index 0000000..91350b1 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/StIvtMoreorlessmstServiceImpl.java @@ -0,0 +1,156 @@ +package org.nl.wms.warehouse_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.CodeUtil; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.nl.wms.warehouse_management.enums.IOSEnum; +import org.nl.wms.warehouse_management.service.IStIvtMoreorlessdtlService; +import org.nl.wms.warehouse_management.service.IStIvtMoreorlessmstService; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessdtl; +import org.nl.wms.warehouse_management.service.dao.StIvtMoreorlessmst; +import org.nl.wms.warehouse_management.service.dao.mapper.StIvtMoreorlessmstMapper; +import org.nl.wms.warehouse_management.service.dto.MoreOrLessInsertDto; +import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; +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 Liuixy + * @since 2025-05-28 + */ +@Service +public class StIvtMoreorlessmstServiceImpl extends ServiceImpl implements IStIvtMoreorlessmstService { + + /** + * 损益明细服务 + */ + @Autowired + private IStIvtMoreorlessdtlService iStIvtMoreorlessdtlService; + + /** + * 变更库存工具类 + */ + @Autowired + private UpdateIvtUtils updateIvtUtils; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + return this.baseMapper.queryAllByPage(new Page<>(page.getPage() + 1, page.getSize()), + whereJson); + } + + @Override + @Transactional + public void create(MoreOrLessInsertDto dto) { + // 主表 + StIvtMoreorlessmst mstDao = new StIvtMoreorlessmst(); + mstDao.setMol_id(IdUtil.getStringId()); + mstDao.setMol_code(CodeUtil.getNewCode("MORE_BILL_CODE")); + mstDao.setMol_type(dto.getMol_type()); + mstDao.setMol_inv_type(dto.getMol_inv_type()); + mstDao.setStor_id(dto.getStor_id()); + mstDao.setDtl_num(dto.getDtl_num()); + mstDao.setTotal_qty(dto.getTotal_qty()); + mstDao.setCreate_mode(dto.getCreate_mode()); + mstDao.setInput_optid(SecurityUtils.getCurrentUserId()); + mstDao.setInput_optname(SecurityUtils.getCurrentNickName()); + mstDao.setInput_time(DateUtil.now()); + mstDao.setStatus(dto.getStatus()); + this.save(mstDao); + + // 明细 + dto.setMol_id(mstDao.getMol_id()); + iStIvtMoreorlessdtlService.createMoreDtl(dto); + } + + @Override + @Transactional + public void update(MoreOrLessInsertDto dto) { + StIvtMoreorlessmst mstDao = this.getById(dto.getMol_id()); + mstDao.setMol_type(dto.getMol_type()); + mstDao.setStor_id(dto.getStor_id()); + mstDao.setDtl_num(dto.getDtl_num()); + mstDao.setTotal_qty(dto.getTotal_qty()); + mstDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + mstDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + mstDao.setUpdate_time(DateUtil.now()); + this.updateById(mstDao); + + // 删除老的所有明细 + iStIvtMoreorlessdtlService.remove( + new QueryWrapper().lambda() + .eq(StIvtMoreorlessdtl::getMol_id, mstDao.getMol_id()) + ); + // 新增明细 + iStIvtMoreorlessdtlService.createMoreDtl(dto); + } + + @Override + @Transactional + public void delete(Set ids) { + this.update( + new UpdateWrapper().lambda() + .in(StIvtMoreorlessmst::getMol_id,ids) + .set(StIvtMoreorlessmst::getIs_delete, IOSConstant.IS_DELETE_YES) + ); + } + + @Override + public List queryMolDtl(Map whereJson) { + return iStIvtMoreorlessdtlService.queryMolDtl(whereJson); + } + + @Override + @Transactional + public void confirm(StIvtMoreorlessmst dao) { + // 更新主表 + dao.setStatus(IOSEnum.MORE_MST_STATUS.code("完成")); + dao.setConfirm_optid(SecurityUtils.getCurrentUserId()); + dao.setConfirm_optname(SecurityUtils.getCurrentNickName()); + dao.setConfirm_time(DateUtil.now()); + this.updateById(dao); + // 查询所有明细 + List dtlDaoList = iStIvtMoreorlessdtlService.list( + new QueryWrapper().lambda() + .eq(StIvtMoreorlessdtl::getMol_id, dao.getMol_id()) + ); + // 更新库存 + for (StIvtMoreorlessdtl dto : dtlDaoList) { + JSONObject json = new JSONObject(); + json.put("type", dao.getMol_type().equals(IOSEnum.MORE_TYPE.code("损")) + ? IOSConstant.UPDATE_IVT_TYPE_SUB_CANUSE_IVT : IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE_IVT); + json.put("storagevehicle_code",dto.getStoragevehicle_code()); + json.put("material_id",dto.getMaterial_id()); + json.put("pcsn",dto.getPcsn()); + json.put("qty_unit_id",dto.getQty_unit_id()); + json.put("qty_unit_name",dto.getQty_unit_name()); + json.put("change_qty",dto.getMol_qty()); + json.put("remark","由损益单据【"+dao.getMol_code()+"】变更库存数量【"+dto.getMol_qty()+"】"); + updateIvtUtils.updateIvt(json); + } + // 更新明细为完成 + iStIvtMoreorlessdtlService.update( + new UpdateWrapper().lambda() + .eq(StIvtMoreorlessdtl::getMol_id, dao.getMol_id()) + .set(StIvtMoreorlessdtl::getStatus, IOSEnum.MORE_MST_STATUS.code("完成")) + ); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java index b1e0b11..beb5c1d 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/util/UpdateIvtUtils.java @@ -34,7 +34,7 @@ public class UpdateIvtUtils { /** * 更新库存 * @param where: { - * type: 1-加可用,2-加冻结减可用,3-减冻结 + * type: 1-加可用(插入数据),2-加冻结减可用,3-减冻结,4-减冻结加可用,5-加可用(加库存),6-减可用(减库存) * storagevehicle_code: 载具编码 * material_id: 物料标识 * pcsn: 批次 @@ -51,7 +51,7 @@ public class UpdateIvtUtils { switch (type) { case IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE : // 加可用 - updateAddCanuseIvt(where); + updateAddCanuseInsertIvt(where); break; case IOSConstant.UPDATE_IVT_TYPE_ADD_FROZEN : // 加冻结减可用 @@ -65,6 +65,14 @@ public class UpdateIvtUtils { // 减冻结加可用 updateSubFrozenAddIvt(where); break; + case IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE_IVT : + // 加可用(加库存) + updateAddCanuseIvt(where); + break; + case IOSConstant.UPDATE_IVT_TYPE_SUB_CANUSE_IVT : + // 减可用(减库存) + updateSubCanuseIvt(where); + break; default: break; } @@ -100,10 +108,10 @@ public class UpdateIvtUtils { /** - * 加可用 + * 加可用(插入数据) * @param where 输入参数 */ - private void updateAddCanuseIvt(JSONObject where) { + private void updateAddCanuseInsertIvt(JSONObject where) { // 判断当前载具是否有物料 MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne( new QueryWrapper().lambda() @@ -122,6 +130,7 @@ public class UpdateIvtUtils { extParamDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); extParamDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); extParamDao.setUpdate_time(DateUtil.now()); + extParamDao.setRemark(where.getString("remark")); iMdPbStoragevehicleextService.save(extParamDao); } @@ -223,4 +232,55 @@ public class UpdateIvtUtils { iMdPbStoragevehicleextService.updateById(extDao); } + /** + * 加可用(加库存) + * @param where 输入参数 + */ + private void updateAddCanuseIvt(JSONObject where) { + MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, where.getString("storagevehicle_code")) + .eq(MdPbStoragevehicleext::getMaterial_id, where.getString("material_id")) + .eq(MdPbStoragevehicleext::getPcsn, where.getString("pcsn")) + ); + if (ObjectUtil.isEmpty(extDao)) { + throw new BadRequestException("当前载具【"+extDao.getStoragevehicle_code()+"】不存在相关物料批次库存,请检查数据!"); + } + + double canuse_qty = NumberUtil.add(extDao.getCanuse_qty(), where.getDoubleValue("change_qty")).doubleValue(); + extDao.setCanuse_qty(BigDecimal.valueOf(canuse_qty)); + extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_time(DateUtil.now()); + extDao.setRemark(where.getString("remark")); + iMdPbStoragevehicleextService.updateById(extDao); + } + + /** + * 减可用(减库存) + * @param where 输入参数 + */ + private void updateSubCanuseIvt(JSONObject where) { + MdPbStoragevehicleext extDao = iMdPbStoragevehicleextService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleext::getStoragevehicle_code, where.getString("storagevehicle_code")) + .eq(MdPbStoragevehicleext::getMaterial_id, where.getString("material_id")) + .eq(MdPbStoragevehicleext::getPcsn, where.getString("pcsn")) + ); + if (ObjectUtil.isEmpty(extDao)) { + throw new BadRequestException("当前载具【"+extDao.getStoragevehicle_code()+"】不存在相关物料批次库存,请检查数据!"); + } + + double canuse_qty = NumberUtil.sub(extDao.getCanuse_qty(), where.getDoubleValue("change_qty")).doubleValue(); + if (canuse_qty < 0) { + throw new BadRequestException("可用数不能为负数,请检查变动数量!当前可用数为【"+extDao.getCanuse_qty()+"】当前变动数为【"+where.getDoubleValue("change_qty")+"】"); + } + extDao.setCanuse_qty(BigDecimal.valueOf(canuse_qty)); + extDao.setUpdate_optid(SecurityUtils.getCurrentUserId()); + extDao.setUpdate_optname(SecurityUtils.getCurrentNickName()); + extDao.setUpdate_time(DateUtil.now()); + extDao.setRemark(where.getString("remark")); + iMdPbStoragevehicleextService.updateById(extDao); + } + } diff --git a/wms/nladmin-ui/src/views/wms/st/moreorlessbill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/AddDialog.vue new file mode 100644 index 0000000..7d3b218 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/AddDialog.vue @@ -0,0 +1,435 @@ + + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/moreorlessbill/StructDiv.vue b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/StructDiv.vue new file mode 100644 index 0000000..4e2ba1c --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/StructDiv.vue @@ -0,0 +1,231 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/moreorlessbill/index.vue b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/index.vue new file mode 100644 index 0000000..ef5542e --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/index.vue @@ -0,0 +1,327 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/moreorlessbill/moreorless.js b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/moreorless.js new file mode 100644 index 0000000..412cc68 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/st/moreorlessbill/moreorless.js @@ -0,0 +1,43 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: '/api/moreorLess', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/moreorLess', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/moreorLess', + method: 'put', + data + }) +} + +export function queryMolDtl(params) { + return request({ + url: '/api/moreorLess/queryMolDtl', + method: 'get', + params + }) +} + +export function confirm(data) { + return request({ + url: '/api/moreorLess/confirm', + method: 'post', + data + }) +} + +export default { add, edit, del, queryMolDtl, confirm } diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue index b6cdf8c..3c85e64 100644 --- a/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue +++ b/wms/nladmin-ui/src/views/wms/st/movebill/AddDialog.vue @@ -206,7 +206,7 @@ - + @@ -220,9 +220,9 @@ import crudUserStor from '@/views/wms/basedata/bsrealstorattr/bsrealstorattr' const defaultForm = { bill_code: '', - stor_id: '1582991156504039424', - stor_code: 'AC01', - stor_name: '兰州仓库', + stor_id: '', + stor_code: '', + stor_name: '', block_num: null, bill_status: '10', total_qty: '0', @@ -255,6 +255,7 @@ export default { storId: null, nowindex: '', storlist: [], + sectList: [], invtypelist: [], rules: { stor_id: [ @@ -323,7 +324,9 @@ export default { if (!this.form.stor_id) { return this.crud.notify('请先选择仓库!', CRUD.NOTIFICATION_TYPE.INFO) } + this.sectList = [] this.storId = this.form.stor_id + this.sectList.push(this.storId) this.dtlShow = true }, async queryStruct(index, row) { diff --git a/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue b/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue index 5b3072d..d89fc13 100644 --- a/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue +++ b/wms/nladmin-ui/src/views/wms/st/movebill/AddDtl.vue @@ -96,7 +96,6 @@ import CRUD, { header, presenter } from '@crud/crud' import rrOperation from '@crud/RR.operation' import pagination from '@crud/Pagination' -import movestor from '@/views/wms/st/movebill/movestor' import crudSectattr from '@/views/wms/basedata/sectattr/sectattr' export default { @@ -129,6 +128,9 @@ export default { }, storId: { type: String + }, + sectList: { + type: Array } }, dicts: ['ST_QUALITY_SCODE', 'ST_IVT_LEVEL', 'is_usable'], @@ -138,7 +140,7 @@ export default { opendtlParam: '', sects: [], rows: [], - defaultList: ['1582991156504039424', '1582991348217286656'] + defaultList: [] } }, watch: { @@ -151,6 +153,11 @@ export default { handler(newValue, oldValue) { this.opendtlParam = newValue } + }, + sectList: { + handler(newValue, oldValue) { + this.defaultList === newValue + } } }, methods: {