From 87f6cc442c6808161a6ba32a35403a1d22f652be Mon Sep 17 00:00:00 2001 From: liuxy Date: Mon, 1 Dec 2025 17:30:36 +0800 Subject: [PATCH] =?UTF-8?q?add=EF=BC=9A=E5=85=A5=E5=BA=93=E6=B7=B7?= =?UTF-8?q?=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/PackagingController.java | 73 ++++++ .../service/IMdPdmPackagingService.java | 58 +++++ .../service/dao/MdPdmPackaging.java | 77 ++++++ .../dao/mapper/MdPdmPackagingMapper.java | 29 +++ .../dao/mapper/MdPdmPackagingMapper.xml | 40 +++ .../impl/MdPdmPackagingServiceImpl.java | 108 ++++++++ .../controller/RawAssistIStorController.java | 6 + .../service/IRawAssistIStorService.java | 11 +- .../service/dao/mapper/IOStorInvMapper.java | 2 + .../service/dao/mapper/IOStorInvMapper.xml | 28 ++ .../impl/RawAssistIStorServiceImpl.java | 245 +++++++++++------- .../views/wms/pdm_manage/packaging/index.vue | 216 +++++++++++++++ .../wms/pdm_manage/packaging/packaging.js | 35 +++ .../views/wms/pdm_manage/transfer/AddDtl.vue | 142 ++++++++++ .../views/wms/pdm_manage/transfer/index.vue | 242 +++++++++++++++++ .../src/views/wms/st/inbill/AddDialog.vue | 29 ++- .../src/views/wms/st/inbill/rawassist.js | 12 +- 17 files changed, 1246 insertions(+), 107 deletions(-) create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/controller/PackagingController.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/IMdPdmPackagingService.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/MdPdmPackaging.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.java create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.xml create mode 100644 wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/impl/MdPdmPackagingServiceImpl.java create mode 100644 wms/nladmin-ui/src/views/wms/pdm_manage/packaging/index.vue create mode 100644 wms/nladmin-ui/src/views/wms/pdm_manage/packaging/packaging.js create mode 100644 wms/nladmin-ui/src/views/wms/pdm_manage/transfer/AddDtl.vue create mode 100644 wms/nladmin-ui/src/views/wms/pdm_manage/transfer/index.vue diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/controller/PackagingController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/controller/PackagingController.java new file mode 100644 index 0000000..c1b2c17 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/controller/PackagingController.java @@ -0,0 +1,73 @@ +package org.nl.wms.pdm_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.pdm_management.service.IMdPdmPackagingService; +import org.nl.wms.pdm_management.service.dao.MdPdmPackaging; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.Set; + + +/** + *

+ * 外包材收货记录 控制层 + *

+ * + * @author Liuxy + * @since 2025-11-26 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/packaging") +@Slf4j +public class PackagingController { + + @Resource + private final IMdPdmPackagingService iMdPdmPackagingService; + + @GetMapping + @Log("外包材收货分页查询") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { + whereJson.put("is_transfer", IOSConstant.ZERO); + return new ResponseEntity<>(TableDataInfo.build(iMdPdmPackagingService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @GetMapping("/queryTransfer") + @Log("外包材转运分页查询") + public ResponseEntity queryTransfer(@RequestParam Map whereJson, PageQuery page) { + whereJson.put("is_transfer", IOSConstant.ONE); + return new ResponseEntity<>(TableDataInfo.build(iMdPdmPackagingService.queryAll(whereJson, page)), HttpStatus.OK); + } + + @PostMapping + @Log("新增外包材收货记录") + public ResponseEntity create(@Validated @RequestBody MdPdmPackaging dto) { + iMdPdmPackagingService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改外包材收货记录") + public ResponseEntity update(@Validated @RequestBody MdPdmPackaging dto) { + iMdPdmPackagingService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @DeleteMapping + @Log("删除外包材收货记录") + public ResponseEntity delete(@RequestBody Set ids) { + iMdPdmPackagingService.delete(ids); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/IMdPdmPackagingService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/IMdPdmPackagingService.java new file mode 100644 index 0000000..f42942e --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/IMdPdmPackagingService.java @@ -0,0 +1,58 @@ +package org.nl.wms.pdm_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.pdm_management.service.dao.MdPdmPackaging; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 外包材收货记录表 服务类 + *

+ * + * @author Liuxy + * @since 2025-11-26 + */ +public interface IMdPdmPackagingService extends IService { + + /** + * 外包材收货分页查询 + * + * @param whereJson : {查询参数} + * @param page : 分页对象 + * @return 返回结果 + */ + IPage queryAll(Map whereJson, PageQuery page); + + /** + * 新增外包材收货记录 + * + * @param dto 外包材收货记录实体类 + */ + void create(MdPdmPackaging dto); + + /** + * 修改外包材收货记录 + * + * @param dto 外包材收货记录实体类 + */ + void update(MdPdmPackaging dto); + + /** + * 删除外包材收货记录 + * + * @param ids 标识集合 + */ + void delete(Set ids); + + /** + * 确认转运 + * + * @param dto 外包材收货记录实体类 + */ + void confirmTransfer(MdPdmPackaging dto); +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/MdPdmPackaging.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/MdPdmPackaging.java new file mode 100644 index 0000000..46ca965 --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/MdPdmPackaging.java @@ -0,0 +1,77 @@ +package org.nl.wms.pdm_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-11-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_pdm_packaging") +public class MdPdmPackaging implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 收货标识id + */ + @TableId(value = "packing_id") + private String packing_id; + + /** + * 物料标识 + */ + private String material_id; + + /** + * 批次 + */ + private String pcsn; + + /** + * 数量 + */ + private BigDecimal qty; + + /** + * 收货人 + */ + private String create_id; + + /** + * 收货人名称 + */ + private String create_name; + + /** + * 收货时间 + */ + private String create_time; + + /** + * 转运点位 + */ + private String point_code; + + /** + * 是否转运 + */ + private String is_transfer; + + /** + * 备注 + */ + private String remark; + +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.java new file mode 100644 index 0000000..1c295ed --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.java @@ -0,0 +1,29 @@ +package org.nl.wms.pdm_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.pdm_management.service.dao.MdPdmPackaging; + +import java.util.Map; + +/** + *

+ * 外包材收货记录表 Mapper 接口 + *

+ * + * @author Liuxy + * @since 2025-11-26 + */ +public interface MdPdmPackagingMapper 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/pdm_management/service/dao/mapper/MdPdmPackagingMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.xml new file mode 100644 index 0000000..40d96ac --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/dao/mapper/MdPdmPackagingMapper.xml @@ -0,0 +1,40 @@ + + + + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/impl/MdPdmPackagingServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/impl/MdPdmPackagingServiceImpl.java new file mode 100644 index 0000000..24260ac --- /dev/null +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm_management/service/impl/MdPdmPackagingServiceImpl.java @@ -0,0 +1,108 @@ +package org.nl.wms.pdm_management.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.pdm_management.service.IMdPdmPackagingService; +import org.nl.wms.pdm_management.service.dao.MdPdmPackaging; +import org.nl.wms.pdm_management.service.dao.mapper.MdPdmPackagingMapper; +import org.nl.wms.warehouse_management.enums.IOSConstant; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 外包材收货记录表 服务实现类 + *

+ * + * @author Liuxy + * @since 2025-11-26 + */ +@Service +public class MdPdmPackagingServiceImpl extends ServiceImpl implements IMdPdmPackagingService { + + @Resource + private IMdPdmPackagingService iMdPdmPackagingService; + + @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(MdPdmPackaging dto) { + if (ObjectUtil.isNotEmpty(dto.getPoint_code())) { + // 外包材转运操作 + iMdPdmPackagingService.confirmTransfer(dto); + return; + } + + // 查询此物料此批次是否有收过货的 + MdPdmPackaging packDao = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(MdPdmPackaging::getMaterial_id, dto.getMaterial_id()) + .eq(MdPdmPackaging::getPcsn, dto.getPcsn()) + .eq(MdPdmPackaging::getIs_transfer, IOSConstant.ZERO) + ); + + if (ObjectUtil.isNotEmpty(packDao)) { + // 数量叠加 + packDao.setQty(NumberUtil.add(packDao.getQty(), dto.getQty())); + packDao.setCreate_id(SecurityUtils.getCurrentUserId()); + packDao.setCreate_name(SecurityUtils.getCurrentNickName()); + packDao.setCreate_time(DateUtil.now()); + this.updateById(packDao); + } else { + // 新增 + dto.setPacking_id(IdUtil.getStringId()); + dto.setCreate_id(SecurityUtils.getCurrentUserId()); + dto.setCreate_name(SecurityUtils.getCurrentNickName()); + dto.setCreate_time(DateUtil.now()); + this.save(dto); + } + + } + + @Override + @Transactional + public void update(MdPdmPackaging dto) { + this.updateById(dto); + } + + @Override + @Transactional + public void delete(Set ids) { + this.baseMapper.deleteBatchIds(ids); + } + + @Override + @Transactional + public void confirmTransfer(MdPdmPackaging dto) { + MdPdmPackaging mdPdmPackaging = this.baseMapper.selectOne( + new QueryWrapper().lambda() + .eq(MdPdmPackaging::getMaterial_id, dto.getMaterial_id()) + .eq(MdPdmPackaging::getPcsn, dto.getPcsn()) + ); + + mdPdmPackaging.setIs_transfer(IOSConstant.ONE); + mdPdmPackaging.setPoint_code(dto.getPoint_code()); + mdPdmPackaging.setCreate_id(SecurityUtils.getCurrentUserId()); + mdPdmPackaging.setCreate_name(SecurityUtils.getCurrentNickName()); + mdPdmPackaging.setCreate_time(DateUtil.now()); + this.updateById(mdPdmPackaging); + } +} diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java index 47e884d..126d5a7 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/controller/RawAssistIStorController.java @@ -112,4 +112,10 @@ public class RawAssistIStorController { public ResponseEntity getInBillTaskDtl(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(iRawAssistIStorService.getInBillTaskDtl(whereJson), HttpStatus.OK); } + + @PostMapping("/getVehicleGroup") + @Log("根据托盘查询此托盘下的所有已经组盘的记录") + public ResponseEntity getVehicleGroup(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(iRawAssistIStorService.getVehicleGroup(whereJson), HttpStatus.OK); + } } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java index b87fa24..a007de6 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/IRawAssistIStorService.java @@ -93,7 +93,7 @@ public interface IRawAssistIStorService extends IService { void unDivStruct(Map whereJson); /** - * 设置站带你 + * 设置站点 * * @param whereJson { *

@@ -151,4 +151,13 @@ public interface IRawAssistIStorService extends IService { List getInBillTaskDtl(Map whereJson); String insertPdaDtl(JSONObject whereJson); + + /** + * 根据托盘查询此托盘下的所有已经组盘的记录 + * @param whereJson { + * rows: [] + * } + * @return List + */ + List getVehicleGroup(JSONObject whereJson); } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java index bf491a6..695e231 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.java @@ -27,4 +27,6 @@ public interface IOStorInvMapper extends BaseMapper { IPage queryOutBillPage (IPage page,@Param("params") Map whereJson); + List getVehicleGroup ( List collect); + } diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml index 33217be..b0f2954 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/dao/mapper/IOStorInvMapper.xml @@ -183,4 +183,32 @@ ORDER BY ios.iostorinv_id Desc + + + diff --git a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java index 2a95422..1123b42 100644 --- a/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java +++ b/wms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/warehouse_management/service/impl/RawAssistIStorServiceImpl.java @@ -53,7 +53,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author Liuxy @@ -413,7 +415,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl disList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getIostorinv_id, map.get("iostorinv_id")) + .eq(IOStorInvDis::getStoragevehicle_code, map.get("storagevehicle_code")) + ); + List dtlList = ioStorInvDtlMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, disList.get(0).getIostorinv_id()) + .in(IOStorInvDtl::getPcsn, disList.stream() + .map(IOStorInvDis::getPcsn) + .collect(Collectors.toList())) ); //维护单据明细表里 分配数量 - JSONObject jsonObject = new JSONObject(); - jsonObject.put("iostorinvdtl_id", map.get("iostorinvdtl_id")); - jsonObject.put("bill_status", IOSEnum.BILL_STATUS.code("分配完")); - jsonObject.put("assign_qty", map.get("plan_qty")); - jsonObject.put("unassign_qty", "0"); - ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class)); + dtlList.forEach(row -> { + IOStorInvDis dis = disList.stream() + .filter(item -> item.getPcsn().equals(row.getPcsn())) + .findFirst().orElse(null); + + row.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + row.setAssign_qty(dis.getPlan_qty()); + row.setUnassign_qty(BigDecimal.ZERO); + ioStorInvDtlMapper.updateById(row); + }); //根据单据标识判断分配明细是否都已经分配完成 int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) @@ -518,16 +538,34 @@ public class RawAssistIStorServiceImpl extends ServiceImpl disList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getIostorinv_id, jo.get("iostorinv_id")) + .eq(IOStorInvDis::getStoragevehicle_code, jo.get("storagevehicle_code")) + ); + List dtlList = ioStorInvDtlMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDtl::getIostorinv_id, disList.get(0).getIostorinv_id()) + .in(IOStorInvDtl::getPcsn, disList.stream() + .map(IOStorInvDis::getPcsn) + .collect(Collectors.toList())) ); //维护单据明细表里 分配数量 - JSONObject jsonObject = new JSONObject(); - jsonObject.put("iostorinvdtl_id", jo.get("iostorinvdtl_id")); - jsonObject.put("bill_status", IOSEnum.BILL_STATUS.code("生成")); - jsonObject.put("assign_qty", "0"); - jsonObject.put("unassign_qty", jo.get("plan_qty")); - ioStorInvDtlMapper.updateById(jsonObject.toJavaObject(IOStorInvDtl.class)); + dtlList.forEach(row -> { + IOStorInvDis dis = disList.stream() + .filter(item -> item.getPcsn().equals(row.getPcsn())) + .findFirst().orElse(null); + + row.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + row.setAssign_qty(BigDecimal.ZERO); + row.setUnassign_qty(dis.getPlan_qty()); + ioStorInvDtlMapper.updateById(row); + }); //根据单据标识判断分配明细是否都已经分配完成 int disCount = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) @@ -574,13 +612,19 @@ public class RawAssistIStorServiceImpl extends ServiceImpl disList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getStoragevehicle_code, map.get("storagevehicle_code")) + .eq(IOStorInvDis::getIostorinv_id, map.get("iostorinv_id")) + ); + + disList.forEach(row -> { + row.setWork_status(IOSEnum.INBILL_DIS_STATUS.code("生成")); + row.setTask_id(task_id); + row.setIs_issued(BaseDataEnum.IS_YES_NOT.code("是")); + row.setPoint_code(point_code); + ioStorInvDisMapper.updateById(row); + }); return task_id; } @@ -679,87 +723,90 @@ public class RawAssistIStorServiceImpl extends ServiceImpl(IOStorInvDis.class) - .eq(IOStorInvDis::getTask_id, task.getTask_id()) + List disList = ioStorInvDisMapper.selectList( + new QueryWrapper().lambda() + .eq(IOStorInvDis::getTask_id, task.getTask_id()) ); - if (ObjectUtil.isEmpty(ioStorInvDis)) { + + if (ObjectUtil.isEmpty(disList)) { throw new BadRequestException("未找到任务对应的分配明细"); } - // 完成当前分配明细 - ioStorInvDisMapper.update(ioStorInvDis, new LambdaUpdateWrapper<>(IOStorInvDis.class) - .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) - .set(IOStorInvDis::getReal_qty, ioStorInvDis.getPlan_qty()) - .eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id()) - ); + for (IOStorInvDis ioStorInvDis : disList) { + // 完成当前分配明细 + ioStorInvDisMapper.update(ioStorInvDis, new LambdaUpdateWrapper<>(IOStorInvDis.class) + .set(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) + .set(IOStorInvDis::getReal_qty, ioStorInvDis.getPlan_qty()) + .eq(IOStorInvDis::getIostorinvdis_id, ioStorInvDis.getIostorinvdis_id()) + ); + //修改库存 + List updateIvtList = new ArrayList<>(); + JSONObject jsonIvt = new JSONObject(); + jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); + jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); + jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); + jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); + jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); + jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); + jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); + updateIvtList.add(jsonIvt); + iMdPbStoragevehicleextService.updateIvt(updateIvtList); + + //更新组盘记录表 + groupPlateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class) + .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) + .eq(GroupPlate::getPcsn, ioStorInvDis.getPcsn()) + .eq(GroupPlate::getVehicle_code, ioStorInvDis.getStoragevehicle_code()) + .eq(GroupPlate::getMaterial_id, ioStorInvDis.getMaterial_id()) + .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) + ); + // 查询该明细下是否还有未完成的分配明细 + int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) + .eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id()) + .ne(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) + ); + + // 明细 + IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(ioStorInvDis.getIostorinvdtl_id()); + if (ObjectUtil.isEmpty(ioStorInvDtl)) { + throw new BadRequestException("未找到明细"); + } + // 如果分配明细全部完成则更新明细表状态 + if (countDis == 0) { + // 更新明细表状态 + ioStorInvDtl.setReal_qty(ioStorInvDis.getPlan_qty()); + ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + ioStorInvDtlMapper.updateById(ioStorInvDtl); + + // 查看明细是否全部完成 + int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) + .eq(IOStorInvDtl::getIostorinv_id, ioStorInvDtl.getIostorinv_id()) + .ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + ); + + // 如果明细全部完成则更新主表状态 + if (countDtl == 0) { + //更新主表状态 + ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class) + .set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) + .set(IOStorInv::getConfirm_optid, currentUserId) + .set(IOStorInv::getConfirm_optname, nickName) + .set(IOStorInv::getConfirm_time, now) + .eq(IOStorInv::getIostorinv_id, ioStorInvDtl.getIostorinv_id()) + ); + } + } + } //解锁库位 JSONObject finish_map = new JSONObject(); - finish_map.put("struct_code", ioStorInvDis.getStruct_code()); - finish_map.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); + finish_map.put("struct_code", disList.get(0).getStruct_code()); + finish_map.put("storagevehicle_code", disList.get(0).getStoragevehicle_code()); finish_map.put("inv_type", null); finish_map.put("inv_id", null); finish_map.put("inv_code", null); iStructattrService.updateStatusByCode("1", finish_map); - //修改库存 - List updateIvtList = new ArrayList<>(); - JSONObject jsonIvt = new JSONObject(); - jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_ADD_CANUSE); - jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); - jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); - jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); - jsonIvt.put("qty_unit_id", ioStorInvDis.getQty_unit_id()); - jsonIvt.put("qty_unit_name", ioStorInvDis.getQty_unit_name()); - jsonIvt.put("change_qty", ioStorInvDis.getPlan_qty()); - updateIvtList.add(jsonIvt); - iMdPbStoragevehicleextService.updateIvt(updateIvtList); - - //更新组盘记录表 - groupPlateMapper.update(new GroupPlate(), new LambdaUpdateWrapper<>(GroupPlate.class) - .set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库")) - .eq(GroupPlate::getPcsn, ioStorInvDis.getPcsn()) - .eq(GroupPlate::getVehicle_code, ioStorInvDis.getStoragevehicle_code()) - .eq(GroupPlate::getMaterial_id, ioStorInvDis.getMaterial_id()) - .eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("组盘")) - ); - - // 查询该明细下是否还有未完成的分配明细 - int countDis = ioStorInvDisMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDis.class) - .eq(IOStorInvDis::getIostorinvdtl_id, ioStorInvDis.getIostorinvdtl_id()) - .ne(IOStorInvDis::getWork_status, IOSEnum.INBILL_DIS_STATUS.code("完成")) - ); - - // 明细 - IOStorInvDtl ioStorInvDtl = ioStorInvDtlMapper.selectById(ioStorInvDis.getIostorinvdtl_id()); - if (ObjectUtil.isEmpty(ioStorInvDtl)) { - throw new BadRequestException("未找到明细"); - } - // 如果分配明细全部完成则更新明细表状态 - if (countDis == 0) { - // 更新明细表状态 - ioStorInvDtl.setReal_qty(ioStorInvDis.getPlan_qty()); - ioStorInvDtl.setBill_status(IOSEnum.BILL_STATUS.code("完成")); - ioStorInvDtlMapper.updateById(ioStorInvDtl); - - // 查看明细是否全部完成 - int countDtl = ioStorInvDtlMapper.selectCount(new LambdaQueryWrapper<>(IOStorInvDtl.class) - .eq(IOStorInvDtl::getIostorinv_id, ioStorInvDtl.getIostorinv_id()) - .ne(IOStorInvDtl::getBill_status, IOSEnum.BILL_STATUS.code("完成")) - ); - - // 如果明细全部完成则更新主表状态 - if (countDtl == 0) { - //更新主表状态 - ioStorInvMapper.update(new IOStorInv(), new LambdaUpdateWrapper<>(IOStorInv.class) - .set(IOStorInv::getBill_status, IOSEnum.BILL_STATUS.code("完成")) - .set(IOStorInv::getConfirm_optid, currentUserId) - .set(IOStorInv::getConfirm_optname, nickName) - .set(IOStorInv::getConfirm_time, now) - .eq(IOStorInv::getIostorinv_id, ioStorInvDtl.getIostorinv_id()) - ); - } - } } @Override @@ -851,7 +898,7 @@ public class RawAssistIStorServiceImpl extends ServiceImpl row = rows.get(i); - Object qty = ObjectUtil.isEmpty(whereJson.getBigDecimal("material_qty")) ? row.get("qty") :whereJson.getBigDecimal("material_qty"); + Object qty = ObjectUtil.isEmpty(whereJson.getBigDecimal("material_qty")) ? row.get("qty") : whereJson.getBigDecimal("material_qty"); JSONObject ioStorInvDtl = new JSONObject(); ioStorInvDtl.putAll(row); @@ -901,4 +948,18 @@ public class RawAssistIStorServiceImpl extends ServiceImpl getVehicleGroup(JSONObject whereJson) { + if (ObjectUtil.isEmpty(whereJson.getJSONArray("rows"))) { + return null; + } + List rows = whereJson.getJSONArray("rows").toJavaList(JSONObject.class); + List vehicleList = rows.stream() + .map(row -> row.getString("vehicle_code")) + .distinct() + .collect(Collectors.toList()); + + return ioStorInvMapper.getVehicleGroup(vehicleList); + } } diff --git a/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/index.vue b/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/index.vue new file mode 100644 index 0000000..c793d00 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/index.vue @@ -0,0 +1,216 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/packaging.js b/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/packaging.js new file mode 100644 index 0000000..d327285 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/pdm_manage/packaging/packaging.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/packaging', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/packaging/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/packaging', + method: 'put', + data + }) +} + +export function confirmTransfer(data) { + return request({ + url: 'api/packaging/confirmTransfer', + method: 'post', + data + }) +} + +export default { add, edit, del, confirmTransfer } diff --git a/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/AddDtl.vue b/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/AddDtl.vue new file mode 100644 index 0000000..d250c48 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/AddDtl.vue @@ -0,0 +1,142 @@ + + + + diff --git a/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/index.vue b/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/index.vue new file mode 100644 index 0000000..7c1dbc6 --- /dev/null +++ b/wms/nladmin-ui/src/views/wms/pdm_manage/transfer/index.vue @@ -0,0 +1,242 @@ + + + + + diff --git a/wms/nladmin-ui/src/views/wms/st/inbill/AddDialog.vue b/wms/nladmin-ui/src/views/wms/st/inbill/AddDialog.vue index a1eb1ae..a966807 100644 --- a/wms/nladmin-ui/src/views/wms/st/inbill/AddDialog.vue +++ b/wms/nladmin-ui/src/views/wms/st/inbill/AddDialog.vue @@ -292,11 +292,11 @@ export default { this.form.detail_count = this.form.tableData.length }, deleteRow(index, rows) { - const pcsn = rows[index].pcsn + const vehicle_code = rows[index].vehicle_code let len = rows.length while (len--) { const obj = rows[len] - if (pcsn === obj.pcsn) { + if (vehicle_code === obj.vehicle_code) { const index = rows.indexOf(obj) if (index > -1) { // 移除找到的指定元素 this.form.total_qty = parseFloat(this.form.total_qty) - parseFloat(rows[index].plan_qty) @@ -307,20 +307,23 @@ export default { } }, tableChanged(rows) { - // 对新增的行进行校验不能存在相同物料批次 - rows.forEach((item) => { - let same_mater = true - this.form.tableData.forEach((row) => { - if (row.pcsn === item.pcsn) { - same_mater = false + // 根据载具编码查询载具下的所有组盘信息 + crudRawAssist.getVehicleGroup({ 'rows': rows }).then(res => { + rows = res + rows.forEach((item) => { + let same_mater = true + this.form.tableData.forEach((row) => { + if (row.pcsn === item.pcsn) { + same_mater = false + } + }) + if (same_mater) { + this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty) + this.form.tableData.splice(-1, 0, item) } }) - if (same_mater) { - this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(item.plan_qty) - this.form.tableData.splice(-1, 0, item) - } + this.form.detail_count = this.form.tableData.length }) - this.form.detail_count = this.form.tableData.length }, async insertEvent(row) { if (this.form.bill_type === '') { diff --git a/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js b/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js index e0e9cf1..e0281b1 100644 --- a/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js +++ b/wms/nladmin-ui/src/views/wms/st/inbill/rawassist.js @@ -93,5 +93,15 @@ export function getInBillTaskDtl(data) { }) } +export function getVehicleGroup(data) { + return request({ + url: '/api/in/rawAssist/getVehicleGroup', + method: 'post', + data + }) +} + export default { add, edit, del, getIODtl, commit, - deleteDisDtl, getDisDtl, divStruct, unDivStruct, divPoint, confirm, getInBillTaskDtl } + deleteDisDtl, getDisDtl, divStruct, unDivStruct, divPoint, confirm, getInBillTaskDtl, + getVehicleGroup +}