From 035edb5c9657a96f3a596a3f430a8f0cc735cf41 Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 1 Jun 2023 14:30:16 +0800 Subject: [PATCH] =?UTF-8?q?add=20:=20=E5=8D=8A=E6=88=90=E5=93=81=E6=8D=9F?= =?UTF-8?q?=E6=BA=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/StIvtMoreorlessmstCpServiceImpl.java | 3 + .../structIvt/StIvtStructivtYlController.java | 7 + .../structIvt/IStIvtStructivtYlService.java | 3 + .../dao/mapper/StIvtStructivtYlMapper.java | 2 + .../dao/mapper/xml/StIvtStructivtYlMapper.xml | 36 +++ .../impl/StIvtStructivtYlServiceImpl.java | 5 + .../StIvtMoreorlessmstBcpController.java | 64 ++++- .../IStIvtMoreorlessdtlBcpService.java | 17 ++ .../IStIvtMoreorlessmstBcpService.java | 26 +- .../moveOrLess/dao/StIvtMoreorlessdtlBcp.java | 3 + .../moveOrLess/dao/StIvtMoreorlessmstBcp.java | 9 +- .../mapper/StIvtMoreorlessdtlBcpMapper.java | 7 + .../mapper/StIvtMoreorlessmstBcpMapper.java | 9 + .../xml/StIvtMoreorlessdtlBcpMapper.xml | 16 ++ .../xml/StIvtMoreorlessmstBcpMapper.xml | 54 ++++ .../StIvtMoreorlessdtlBcpServiceImpl.java | 93 +++++- .../StIvtMoreorlessmstBcpServiceImpl.java | 269 +++++++++++++++++- .../semiproductMoreOrless/AddDialog.vue | 61 ++-- .../semiproductMoreOrless/StructDiv.vue | 50 ++-- .../semiproductMoreOrless/index.vue | 35 +-- .../semiproductMoreOrless/moreorless.js | 44 ++- 21 files changed, 696 insertions(+), 117 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java index c47ee096..c762935f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/impl/StIvtMoreorlessmstCpServiceImpl.java @@ -89,6 +89,7 @@ public class StIvtMoreorlessmstCpServiceImpl extends ServiceImpl().eq("mol_id", id)); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java index 43caf5a1..d1181bc1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/controller/structIvt/StIvtStructivtYlController.java @@ -49,5 +49,12 @@ public class StIvtStructivtYlController { public ResponseEntity getStructIvt(StructIvtYLQuery query) { return new ResponseEntity<>(structivtYlService.getStructIvt(query), HttpStatus.OK); } + + @PostMapping("/getSemiProductIvt") + @Log("查询可用的半成品库存") + @ApiOperation("查询可用的半成品库存") + public ResponseEntity getSemiProductIvt(StructIvtYLQuery query) { + return new ResponseEntity<>(structivtYlService.getSemiProductIvt(query), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java index 46bf7420..ba9cf85a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/IStIvtStructivtYlService.java @@ -36,4 +36,7 @@ public interface IStIvtStructivtYlService extends IService { * @return JSONObject */ Object getProductIvt(StructIvtYLQuery query, PageQuery page); + + + Object getSemiProductIvt(StructIvtYLQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java index 5d236d49..d710eae8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/StIvtStructivtYlMapper.java @@ -24,5 +24,7 @@ public interface StIvtStructivtYlMapper extends BaseMapper { List getProductIvt(@Param("query") StructIvtYLQuery query, @Param("pageQuery") PageQuery pageQuery); + List getSemiProductIvt(@Param("query") StructIvtYLQuery query); + List getStructIvt(@Param("query") StructIvtYLQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml index b7f1092c..bd4d2d1e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/rawmanage/service/structIvt/dao/mapper/xml/StIvtStructivtYlMapper.xml @@ -73,6 +73,42 @@ + + + SELECT + dtl.*, + mb.material_code, + mb.material_name + FROM + st_ivt_moreorlessdtl_bcp dtl + LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id + + + dtl.mol_id = #{map.mol_id} + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/dao/mapper/xml/StIvtMoreorlessmstBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/dao/mapper/xml/StIvtMoreorlessmstBcpMapper.xml index 7a992692..83d37e07 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/dao/mapper/xml/StIvtMoreorlessmstBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/dao/mapper/xml/StIvtMoreorlessmstBcpMapper.xml @@ -2,4 +2,58 @@ + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessdtlBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessdtlBcpServiceImpl.java index dd278663..0eb53f58 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessdtlBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessdtlBcpServiceImpl.java @@ -1,11 +1,33 @@ package org.nl.wms.storage_manage.semimanage.service.moveOrLess.impl; -import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.StIvtMoreorlessdtlBcp; -import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.mapper.StIvtMoreorlessdtlBcpMapper; -import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessdtlBcpService; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +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.service.impl.ServiceImpl; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; +import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.semimanage.MLEnum; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessdtlBcpService; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.StIvtMoreorlessdtlBcp; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.StIvtMoreorlessmstBcp; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.mapper.StIvtMoreorlessdtlBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; + /** *

* 损溢单明细表 服务实现类 @@ -17,4 +39,69 @@ import org.springframework.stereotype.Service; @Service public class StIvtMoreorlessdtlBcpServiceImpl extends ServiceImpl implements IStIvtMoreorlessdtlBcpService { + @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IMdPbStoragevehicleinfoService iMdPbStoragevehicleinfoService; // 载具服务 + + @Override + public List getMlDtl(JSONObject form) { + return this.baseMapper.getMlDtl(form); + } + + @Override + public double create(JSONArray rows, StIvtMoreorlessmstBcp mst) { + double total_qty = 0; + + if (rows.size() > 0 && ObjectUtil.isNotEmpty(mst)) { + // 先删除在插入 + this.remove(new QueryWrapper().eq("mol_id", mst.getMol_id())); + + for (int i = 0; i < rows.size(); i++) { + String mol_dtl_id = IdUtil.getStringId(); + StIvtMoreorlessdtlBcp row = rows.getJSONObject(i).toJavaObject(StIvtMoreorlessdtlBcp.class); + row.setMol_dtl_id(mol_dtl_id); + row.setMol_id(mst.getMol_id()); + row.setMol_code(mst.getMol_code()); + row.setSeq_no(BigDecimal.valueOf(i + 1)); + row.setPcsn(DateUtil.today()); + + // 获取库区信息 + QueryWrapper sect_wrapper = new QueryWrapper<>(); + sect_wrapper.eq("sect_id", row.getSect_id()); + sect_wrapper.eq("is_used", true); + StIvtSectattr sectDao = sectattrService.getOne(sect_wrapper); + if (ObjectUtil.isEmpty(sectDao)) throw new BadRequestException("库区不存在或未启用!"); + row.setSect_name(sectDao.getSect_name()); + // 获取仓位信息 + QueryWrapper struct_wrapper = new QueryWrapper<>(); + struct_wrapper.eq("struct_id", row.getStruct_id()); + struct_wrapper.eq("is_used", true); + StIvtStructattr structDao = structattrService.getOne(struct_wrapper); + if (ObjectUtil.isEmpty(structDao)) throw new BadRequestException("仓位不存在或未启用!"); + row.setStruct_name(structDao.getStruct_name()); + + // 获取载具信息 + MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( + new QueryWrapper().lambda() + .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, row.getStoragevehicle_code()) + ); + + if (ObjectUtil.isEmpty(vehicleDao)) throw new BadRequestException("载具不存在!"); + + row.setStoragevehicle_id(vehicleDao.getStoragevehicle_id()); + row.setStoragevehicle_code(vehicleDao.getStoragevehicle_code()); + row.setStatus(MLEnum.DTL_STATUS.code("生成")); + this.save(row); + + //锁定货位 + structattrService.update(new UpdateWrapper().set("lock_type", IOSEnum.LOCK_TYPE.code("损溢锁")).set("inv_code",mst.getMol_code()).eq("struct_id", row.getStruct_id())); + } + } + return total_qty; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessmstBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessmstBcpServiceImpl.java index ca7737fd..498c7217 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessmstBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/moveOrLess/impl/StIvtMoreorlessmstBcpServiceImpl.java @@ -1,10 +1,46 @@ package org.nl.wms.storage_manage.semimanage.service.moveOrLess.impl; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +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.service.impl.ServiceImpl; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; +import org.jetbrains.annotations.NotNull; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.storage_manage.CHECKEnum; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.rawmanage.service.moveOrLess.dto.MoreOrlessQuery; +import org.nl.wms.storage_manage.semimanage.MLEnum; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessdtlBcpService; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessmstBcpService; +import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.StIvtMoreorlessdtlBcp; import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.StIvtMoreorlessmstBcp; import org.nl.wms.storage_manage.semimanage.service.moveOrLess.dao.mapper.StIvtMoreorlessmstBcpMapper; -import org.nl.wms.storage_manage.semimanage.service.moveOrLess.IStIvtMoreorlessmstBcpService; -import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.storage_manage.semimanage.service.structIvt.IStIvtStructivtBcpService; +import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivtBcp; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; /** *

@@ -17,4 +53,233 @@ import org.springframework.stereotype.Service; @Service public class StIvtMoreorlessmstBcpServiceImpl extends ServiceImpl implements IStIvtMoreorlessmstBcpService { + @Autowired + private IStIvtMoreorlessdtlBcpService iStIvtMoreorlessdtlBcpService; // 半成品明细服务 + + @Autowired + private IStIvtBsrealstorattrService stIvtBsrealstorattrService; // 实物属性服务 + + @Autowired + private IStIvtStructivtBcpService iStIvtStructivtBcpService; // 半成品库存服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Override + public Object pageQuery(MoreOrlessQuery query, PageQuery pageQuery) { + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); + List mst_detail = this.baseMapper.getMstDetail(query, pageQuery); + TableDataInfo build = TableDataInfo.build(mst_detail); + build.setTotalElements(page.getTotal()); + return build; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject form) { + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + + // 调用主表 插入/更新方法 + StIvtMoreorlessmstBcp mlmstYl = packageMstForm(new StIvtMoreorlessmstBcp(), form); + this.save(mlmstYl); + + //调用明细表 插入方法 + iStIvtMoreorlessdtlBcpService.create(rows, mlmstYl); + + if (form.containsKey("auto_confirm") && form.getString("auto_confirm").equals("1")) { + JSONObject mst = new JSONObject(); + mst.put("mol_id", mlmstYl.getMol_id()); + this.confirm(mst); + } + } + + @Override + public List getMlDtl(JSONObject map) { + return iStIvtMoreorlessdtlBcpService.getMlDtl(map); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject form) { + Assert.notNull(new Object[]{form, form.get("mol_id")}, "请求参数不能为空"); + StIvtMoreorlessmstBcp mst = form.toJavaObject(StIvtMoreorlessmstBcp.class); + this.updateById(mst); + + JSONArray rows = form.getJSONArray("tableData"); + if (ObjectUtil.isEmpty(rows)) throw new BadRequestException("请求参数不能为空"); + // 调用明细表 插入/更新方法 + iStIvtMoreorlessdtlBcpService.create(rows, mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long[] ids) { + for (Long id : ids) { + StIvtMoreorlessmstBcp dao = this.getOne(new QueryWrapper().eq("mol_id", id)); + dao.setIs_delete(true); + this.updateById(dao); + + + // 解锁货位 + StIvtMoreorlessdtlBcp dtlDao = iStIvtMoreorlessdtlBcpService.getOne( + new QueryWrapper().lambda() + .eq(StIvtMoreorlessdtlBcp::getMol_id, id), + false + ); + + structattrService.update( + new StIvtStructattr() + .setInv_code("") + .setInv_type("") + .setInv_id("") + .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, dtlDao.getStruct_id()) + ); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(JSONObject whereJson) { + + String mol_id = (String) whereJson.get("mol_id"); + + StIvtMoreorlessmstBcp mst = this.getOne(new QueryWrapper().eq("mol_id", mol_id)); + + if (!mst.getStatus().equals(MLEnum.BILL_STATUS.code("生成"))) { + throw new BadRequestException("请选择单据状态为生成的损溢单!"); + } + + String mol_type = mst.getMol_type(); + + List dtl_list = iStIvtMoreorlessdtlBcpService.list(new QueryWrapper().eq("mol_id", mol_id)); + //更新库存 + if (mol_type.equals(MLEnum.MOL_TYPE.code("损"))) { + dtl_list.forEach(dtl -> { + StIvtStructivtBcp ivt = iStIvtStructivtBcpService.getOne(new QueryWrapper().eq("struct_id", dtl.getStruct_id()).eq("material_id", dtl.getMaterial_id())); + if (ObjectUtil.isEmpty(ivt)) { + throw new BadRequestException("未查询到相关库存!"); + } + BigDecimal canuse_qty = ivt.getCanuse_qty(); + BigDecimal mol_qty = dtl.getMol_qty(); + ivt.setCanuse_qty(NumberUtil.sub(canuse_qty, mol_qty)); + //如果库存变为0则删除记录 + if (canuse_qty.compareTo(mol_qty) == 0 ) { + iStIvtStructivtBcpService.removeById(ivt.getStruct_id()); + + // 更新货位 -- 清除载具号 + structattrService.update( + new StIvtStructattr() + .setStoragevehicle_code("") + .setInv_id("") + .setInv_type("") + .setInv_code(""), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_id, ivt.getStruct_id()) + ); + } else { + iStIvtStructivtBcpService.updateById(ivt); + } + }); + } else { + dtl_list.forEach(dtl -> { + StIvtStructivtBcp ivt = iStIvtStructivtBcpService.getOne(new QueryWrapper().eq("struct_id", dtl.getStruct_id()).eq("material_id", dtl.getMaterial_id())); + BigDecimal mol_qty = dtl.getMol_qty(); + + if (ObjectUtil.isEmpty(ivt)) { + StIvtStructattr struct_jo = structattrService.getOne(new QueryWrapper().eq("struct_id", dtl.getStruct_id())); + //新增一条库存记录 + iStIvtStructivtBcpService.save(StIvtStructivtBcp.builder() + .struct_id(dtl.getStruct_id()) + .struct_code(struct_jo.getStruct_code()) + .struct_name(struct_jo.getStruct_name()) + .material_id(dtl.getMaterial_id()) + .quality_scode(dtl.getQuality_scode()) + .pcsn(dtl.getPcsn()) + .ivt_level(dtl.getIvt_level()) + .is_active(dtl.getIs_active()) + .canuse_qty(mol_qty) + .qty_unit_id(dtl.getQty_unit_id()) + .instorage_time(DateUtil.now()) + .stor_id(mst.getStor_id()) + .workshop_id(mst.getProduct_area()) + .is_pick(false) + .build() + ); + + // 更新仓位 + struct_jo.setStoragevehicle_code(dtl.getStoragevehicle_code()); + structattrService.updateById(struct_jo); + + } else { + BigDecimal canuse_qty = ivt.getCanuse_qty(); + ivt.setCanuse_qty(NumberUtil.add(canuse_qty, mol_qty)); + iStIvtStructivtBcpService.updateById(ivt); + } + + //更新明细状态 + dtl.setStatus(MLEnum.DTL_STATUS.code("确认完成")); + iStIvtMoreorlessdtlBcpService.updateById(dtl); + }); + } + + dtl_list.stream().map(dtl -> dtl.getStruct_id()) + .distinct() + .forEach(struct_id -> structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getInv_code, "") + .eq(StIvtStructattr::getStruct_id, struct_id)) + ); + + //更新损溢单主表 + mst.setStatus(MLEnum.BILL_STATUS.code("完成")); + mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + mst.setConfirm_time(DateUtil.now()); + this.updateById(mst); + } + + @NotNull + private StIvtMoreorlessmstBcp packageMstForm(StIvtMoreorlessmstBcp mlmstYl, JSONObject whereJson) { + JSONArray rows = whereJson.getJSONArray("tableData"); + // 新增 + mlmstYl.setMol_id(IdUtil.getStringId()); + mlmstYl.setMol_code(CodeUtil.getNewCode("MOL_CODE")); + if (StrUtil.isEmpty(whereJson.getString("buss_type"))) { + mlmstYl.setBuss_type(MLEnum.BILL_TYPE.code("普通损溢")); + mlmstYl.setMol_inv_type(MLEnum.BILL_TYPE.code("普通损溢")); + } else { + mlmstYl.setBuss_type(whereJson.getString("buss_type")); + mlmstYl.setMol_inv_type(whereJson.getString("buss_type")); + } + + mlmstYl.setMol_type(whereJson.getString("mol_type")); + + // 获取仓库信息 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("stor_id", whereJson.getString("stor_id")); + wrapper.eq("is_used", true); + StIvtBsrealstorattr bsrealDao = stIvtBsrealstorattrService.getOne(wrapper); + if (ObjectUtil.isEmpty(bsrealDao)) throw new BadRequestException("仓库不存在或未启用!"); + + mlmstYl.setStor_id(bsrealDao.getStor_id()); + mlmstYl.setStor_name(bsrealDao.getStor_name()); + mlmstYl.setDtl_num(BigDecimal.valueOf(rows.size())); + mlmstYl.setCreate_mode(CHECKEnum.CREATE_MODE.code("PC产生")); + mlmstYl.setStatus(CHECKEnum.BILL_STATUS.code("生成")); + mlmstYl.setCreate_id(SecurityUtils.getCurrentUserId()); + mlmstYl.setCreate_name(SecurityUtils.getCurrentNickName()); + mlmstYl.setCreate_time(DateUtil.now()); + mlmstYl.setIs_delete(false); + // TODO 暂时写死 + mlmstYl.setSysdeptid("111"); + mlmstYl.setSyscompanyid("111"); + + mlmstYl.setRemark(whereJson.getString("remark")); + + return mlmstYl; + } } diff --git a/mes/qd/src/views/wms/storage_manage/semiproduct/semiproductMoreOrless/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproduct/semiproductMoreOrless/AddDialog.vue index a10f7e58..ce68268e 100644 --- a/mes/qd/src/views/wms/storage_manage/semiproduct/semiproductMoreOrless/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/semiproduct/semiproductMoreOrless/AddDialog.vue @@ -11,7 +11,7 @@ > - + @@ -39,7 +39,7 @@ > - + @@ -79,12 +79,12 @@ - + - + @@ -113,7 +113,7 @@
- + @@ -46,15 +47,15 @@ @select="handleSelectionChange" @select-all="onSelectAll" > - - - - - - + + + + + + - + 取 消 确 定 @@ -64,7 +65,7 @@