From 20ab356de073701ae97740c1f7e8e7750b9daab6 Mon Sep 17 00:00:00 2001 From: liuxy Date: Fri, 16 Jun 2023 08:49:44 +0800 Subject: [PATCH 1/7] =?UTF-8?q?rev:=20=E6=88=90=E5=93=81=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dao/mapper/xml/MpsSaleOrderMapper.xml | 1 + .../org/nl/wms/storage_manage/IOSEnum.java | 2 + .../IStivtlostorivnCpInController.java | 9 +- .../iostorInv/IStIvtIostorinvCpService.java | 8 +- .../impl/StIvtIostorinvCpServiceImpl.java | 365 +++++++++++------- .../impl/StIvtIostorinvdisCpServiceImpl.java | 30 +- .../StIvtIostorinvdisdtlCpServiceImpl.java | 23 +- .../impl/StIvtIostorinvdtlCpServiceImpl.java | 22 ++ .../product/productIn/AddDialog.vue | 46 ++- .../product/productIn/DivDialog.vue | 89 +++-- .../product/productIn/productin.js | 5 +- 11 files changed, 378 insertions(+), 222 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml index e2837d2e..abcdf4bd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -7,6 +7,7 @@ der.*, mater.material_code, mater.material_name, + mater.material_spec, unit.unit_name AS qty_unit_name FROM mps_sale_order der diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/IOSEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/IOSEnum.java index 59929f7e..022ba03b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/IOSEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/IOSEnum.java @@ -19,6 +19,8 @@ public enum IOSEnum { IO_TYPE(MapOf.of("入库", "0", "出库", "1")), //是否 IS_USED(MapOf.of("是", "1", "否", "0")), + //托盘超限类型 + VEHICLE_OVER_TYPE(MapOf.of("标准", "00", "横向超", "01","纵向超","02")), //单据类型 BILL_TYPE(MapOf.of("生产入库", "11", "手工入库", "12", "原料入库", "13" , "领料出库", "21", "销售出库", "22", "手工出库", "23")), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java index 4dfa0b09..8bd01199 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/controller/iostorInv/IStivtlostorivnCpInController.java @@ -75,11 +75,10 @@ public class IStivtlostorivnCpInController { } @PostMapping("/vehicleCheck") - @Log("校验载具是否存在") - @ApiOperation("校验载具是否存在") - public ResponseEntity vehicleCheck(@RequestBody JSONObject whereJson){ - iStIvtIostorinvCpService.vehicleCheck(whereJson); - return new ResponseEntity<>(HttpStatus.OK); + @Log("生成载具") + @ApiOperation("生成载具") + public ResponseEntity vehicleCheck(){ + return new ResponseEntity<>(iStIvtIostorinvCpService.vehicleCheck(),HttpStatus.OK); } @PostMapping("/confirmvehicle") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java index f9389824..90e91f5e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/IStIvtIostorinvCpService.java @@ -110,13 +110,13 @@ public interface IStIvtIostorinvCpService extends IService { void delete(Long[] ids); /** - * 校验载具是否存在 - * @param whereJson + * 生成载具编码 + * @return JSONObject * { - * "storagevehicle_code" : 载具号 + * vehicle_code : 编码 * } */ - void vehicleCheck(JSONObject whereJson); + JSONObject vehicleCheck(); /** * 分配 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index 173e20a3..b71e3405 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -9,6 +9,7 @@ import com.alibaba.fastjson.JSON; 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.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -201,8 +202,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, jsonDtl.getString("iostorinvdtl_id")) - ); - if (ObjectUtil.isNotEmpty(disIs)) throw new BadRequestException("此明细已组盘"); - List disDtlList = tableDisDtl .stream() .map(row -> (JSONObject) row) .filter(row -> ObjectUtil.isNotEmpty(row.getString("bucketunique"))) + .filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id"))) .collect(Collectors.toList()); // 1.处理分配明细数据 JSONObject param = new JSONObject(); - param.put("iostorinv_id",jsonDtl.getString("iostorinv_id")); - param.put("iostorinvdtl_id",jsonDtl.getString("iostorinvdtl_id")); param.put("iostorinvdis_id",org.nl.common.utils.IdUtil.getStringId()); if (ObjectUtil.isNotEmpty(disDtlList)) { @@ -238,7 +229,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl> collect = disDtlDaoListAll .stream() - .collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getStoragevehicle_code)); + .collect(Collectors.groupingBy(StIvtIostorinvdisdtlCp::getIostorinvdtl_id)); for (List disDtlDaoList : collect.values()) { // 3.调用服务插入分配明细 @@ -256,8 +247,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, param.getString("iostorinvdis_id")) - .eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) + .eq(StIvtIostorinvdisdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id()) ); - // 6.更新载具扩展属性表 - MdPbStoragevehicleext vehicleDao = new MdPbStoragevehicleext(); - vehicleDao.setMaterial_id(disDtlDao.getMaterial_id()); - vehicleDao.setStorage_qty(qty); - vehicleDao.setUpdate_id(SecurityUtils.getCurrentUserId()); - vehicleDao.setUpdate_name(SecurityUtils.getCurrentNickName()); - vehicleDao.setUpdate_time(new Date()); - - iMdPbStoragevehicleextService.update( - vehicleDao,new QueryWrapper().lambda() - .eq(MdPbStoragevehicleext::getStoragevehicle_code, disDtlDao.getStoragevehicle_code()) - ); } } @@ -306,6 +285,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl (JSONObject) row) .filter(row -> ObjectUtil.isEmpty(row.getString("bucketunique"))) + .filter(row -> ObjectUtil.isEmpty(row.getString("iostorinvdis_id"))) .collect(Collectors.toList()); if (ObjectUtil.isNotEmpty(unDisDtlList)) { @@ -320,48 +300,53 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl disDaoList = iostorinvdisCpService.list( - new QueryWrapper().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) - ); - - if (ObjectUtil.isEmpty(disDaoList)) throw new BadRequestException("没有可取消组盘的分配明细!"); - - boolean is_struct = disDaoList.stream() - .anyMatch(row -> ObjectUtil.isNotEmpty(row.getStruct_id())); - - if (is_struct) throw new BadRequestException("有分配明细已分配货位不可取消组盘!"); - - // 2.更新载具扩展属性、 箱记录 - Map> collect = disDaoList.stream().collect(Collectors.groupingBy(StIvtIostorinvdisCp::getStoragevehicle_code)); - - for (String storagevehicle_code : collect.keySet()) { - // 更新载具扩展属性 - iMdPbStoragevehicleextService.update( - new UpdateWrapper().lambda() - .set(MdPbStoragevehicleext::getMaterial_id, "") - .set(MdPbStoragevehicleext::getStorage_qty, "0") - .eq(MdPbStoragevehicleext::getStoragevehicle_code, storagevehicle_code) - ); + if (ObjectUtil.isNotEmpty(whereJson.getString("struct_id"))) throw new BadRequestException("已分配货位,不可取消组盘!"); + // 2.判断是否有箱,有则更新箱记录表、分配表 + if (ObjectUtil.isNotEmpty(bucketunique)) { // 更新箱记录表 iMdPbBucketrecordService.update( new UpdateWrapper().lambda() - .set(MdPbBucketrecord::getStoragevehicle_code, "") - .set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成")) - .set(MdPbBucketrecord::getStoragevehicle_id, "") - .eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘")) - .eq(MdPbBucketrecord::getStoragevehicle_code, storagevehicle_code) + .set(MdPbBucketrecord::getStoragevehicle_code, "") + .set(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("生成")) + .set(MdPbBucketrecord::getStoragevehicle_id, "") + .eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("组盘")) + .eq(MdPbBucketrecord::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ); + + // 删除分配明细 + iStIvtIostorinvdisdtlCpService.remove( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) + .eq(StIvtIostorinvdisdtlCp::getBucketunique, bucketunique) + ); + + // 更新分配表 + StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id")); + BigDecimal qty = NumberUtil.sub(disDao.getReal_qty(), whereJson.getBigDecimal("qty")); + disDao.setReal_qty(qty); + disDao.setPlan_qty(qty); + + if (disDao.getReal_qty().doubleValue() <= 0) { + // 删除分配 + iostorinvdisCpService.removeById(disDao); + } else { + // 更新 + iostorinvdisCpService.updateById(disDao); + } + + } else { + // 3:无箱 - 直接删除分配 + iostorinvdisCpService.remove( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) ); } - // 3.删除分配表 - iostorinvdisCpService.remove( - new QueryWrapper().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) - ); + } @@ -378,29 +363,13 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) - .eq(MdPbStoragevehicleinfo::getIs_used, true) - ); + // 生成编码返回 + JSONObject json = new JSONObject(); + json.put("vehicle_code", CodeUtil.getNewCode("VEHICCLE_CODE_CDMTP")); + return json; - if (ObjectUtil.isEmpty(daoVehicle)) throw new BadRequestException("此载具不存在或未启用"); - - // 2.校验载具是否已组盘 - MdPbStoragevehicleext daoVehicleExt = iMdPbStoragevehicleextService.getOne( - new QueryWrapper().lambda() - .eq(MdPbStoragevehicleext::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) - ); - - if (ObjectUtil.isEmpty(daoVehicleExt)) { - throw new BadRequestException("此载具扩展属性不存在,请维护!"); - } else { - if (ObjectUtil.isNotEmpty(daoVehicleExt.getMaterial_id())) - throw new BadRequestException("此载具已组盘!"); - } } @Override @@ -430,7 +399,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ) + .stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id)); - disDao.setStruct_id(attrDao.getStruct_id()); - iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getSource_billdtl_id())); + for (List list : collect.values()) { + BigDecimal qty = list + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdisCp disDao_1 = list.get(0); + disDao_1.setPlan_qty(qty); + + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(disDao_1.getIostorinvdtl_id()); + + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.ADDWAREHOUSING_QTY,dtlDao.getBase_billdtl_id())); + + } } @Override @@ -503,7 +490,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id()) + .eq(StIvtIostorinvdisdtlCp::getIostorinv_id,disDao.getIostorinv_id()) + .eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) ); // 3.更新任务 @@ -526,9 +514,8 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() @@ -538,41 +525,83 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ) + .stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getMaterial_id)); - // 4.更新分配 - iostorinvdisCpService.updateById( - disDao.setStruct_name("").setStruct_code("") - .setStruct_id("").setSect_id("") - .setSect_code("").setSect_name("") - .setPoint_id("").setPoint_code("") - .setPoint_name("") - .setWork_status(IOSEnum.WORK_STATUS.code("生成")) - ); + for (List list : collect.values()) { - // 5.更新明细 - StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne( - new QueryWrapper().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id()) - ); + BigDecimal qty = list + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdisCp disDao_1 = list.get(0); + disDao_1.setPlan_qty(qty); + + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao_1,ChangeIvtUtil.SUBWAREHOUSING_QTY,null)); - if (StrUtil.equals(dtlDao.getBill_status(), IOSEnum.BILL_STATUS.code("生成"))) { - throw new BadRequestException("没有可取消的分配明细!"); } - dtlDao.setAssign_qty(NumberUtil.sub(dtlDao.getAssign_qty(),disDao.getReal_qty())); - dtlDao.setUnassign_qty(disDao.getReal_qty()); + // 4.更新明细 + Map> collect2 = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ) + .stream() + .filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id())) + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); - if (dtlDao.getAssign_qty().doubleValue() == 0) { - dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); - } else if (dtlDao.getAssign_qty().doubleValue() > 0) { - dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + for (List collectList : collect2.values()) { + // 计算已分配 + BigDecimal qty = collectList + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id()); + + // 明细已分配数量 + BigDecimal assign_qty = NumberUtil.sub(dtlDao.getAssign_qty(), qty); + // 明细未分配数量 + BigDecimal unAssign_qty = NumberUtil.add(dtlDao.getUnassign_qty(), qty); + + dtlDao.setAssign_qty(assign_qty); + dtlDao.setUnassign_qty(unAssign_qty); + + if (assign_qty.doubleValue() == 0) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + } else { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + iostorinvdtlCpService.updateById(dtlDao); } - iostorinvdtlCpService.updateById(dtlDao); + // 5.更新分配 + iostorinvdisCpService.update( + new UpdateWrapper().lambda() + .set(StIvtIostorinvdisCp::getStruct_id, "") + .set(StIvtIostorinvdisCp::getStruct_code, "") + .set(StIvtIostorinvdisCp::getStruct_name,"") + .set(StIvtIostorinvdisCp::getSect_id,"") + .set(StIvtIostorinvdisCp::getSect_code,"") + .set(StIvtIostorinvdisCp::getSect_name, "") + .set(StIvtIostorinvdisCp::getPoint_id, "") + .set(StIvtIostorinvdisCp::getPoint_code, "") + .set(StIvtIostorinvdisCp::getPoint_name,"") + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + .eq(StIvtIostorinvdisCp::getIostorinv_id,whereJson.getString("iostorinv_id")) + ); // 6.更新主表 - updateMst(dtlDao.getIostorinv_id()); + updateMst(disDao.getIostorinv_id()); } @@ -603,12 +632,17 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .set(StIvtIostorinvdisCp::getPoint_id, pointDao.getPoint_id()) + .set(StIvtIostorinvdisCp::getPoint_code, pointDao.getPoint_code()) + .set(StIvtIostorinvdisCp::getPoint_name,pointDao.getPoint_name()) + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成")) + .set(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id()) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) + .eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id()) ); + } @Override @@ -695,9 +729,6 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getTask_id, task_id)); - // 更新任务状态为完成 if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { // 更新任务为完成 @@ -712,12 +743,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getTask_id, task_id) + ) + .stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); + + for(List list : collect.values()) { + StIvtIostorinvdisCp disDao_2 = list.get(0); + JSONObject mst_jo = new JSONObject(); + mst_jo.put("iostorinvdtl_id", disDao_2.getIostorinvdtl_id()); + mst_jo.put("iostorinv_id", disDao_2.getIostorinv_id()); + mst_jo.put("is_out", false); + iostorinvdisCpService.confirm(mst_jo); + } } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { // 更新任务为执行中 @@ -734,6 +776,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getTask_id, task_id),false); + JSONObject param = new JSONObject(); param.put("iostorinvdis_id",disDao.getIostorinvdis_id()); delTask(param); @@ -753,12 +798,16 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .set(StIvtIostorinvdisCp::getPoint_id, "") + .set(StIvtIostorinvdisCp::getPoint_code, "") + .set(StIvtIostorinvdisCp::getPoint_name,"") + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("未生成")) + .set(StIvtIostorinvdisCp::getTask_id, "") + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) + .eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id()) + ); } @Override @@ -847,7 +896,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) + .eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) .eq(StIvtIostorinvdisdtlCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) ); @@ -861,23 +910,45 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) ); // 3.更新明细表 - BigDecimal unassign_qty = iostorinvdtlCpService.getOne( - new QueryWrapper().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) - ).getUnassign_qty(); + Map> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + ) + .stream() + .filter(row -> ObjectUtil.isNotEmpty(row.getStruct_id())) + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); - iostorinvdtlCpService.update( - new StIvtIostorinvdtlCp() - .setBill_status(IOSEnum.BILL_STATUS.code("分配完")) - .setAssign_qty(unassign_qty) - .setUnassign_qty(new BigDecimal(0)), - new QueryWrapper().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) - ); + for (List collectList : collect.values()) { + // 计算已分配 + BigDecimal qty = collectList + .stream() + .map(StIvtIostorinvdisCp::getReal_qty) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(collectList.get(0).getIostorinvdtl_id()); + + // 明细已分配数量 + BigDecimal assign_qty = NumberUtil.add(dtlDao.getAssign_qty(), qty); + // 明细未分配数量 + BigDecimal unAssign_qty = NumberUtil.sub(dtlDao.getUnassign_qty(), qty); + + dtlDao.setAssign_qty(assign_qty); + dtlDao.setUnassign_qty(unAssign_qty); + + if (unAssign_qty.doubleValue() == 0) { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配完")); + } else { + dtlDao.setBill_status(IOSEnum.BILL_STATUS.code("分配中")); + } + + iostorinvdtlCpService.updateById(dtlDao); + } // 4.更新主表 updateMst(whereJson.getString("iostorinv_id")); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisCpServiceImpl.java index 60513573..8ba7185c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisCpServiceImpl.java @@ -92,11 +92,6 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl result = new ArrayList<>(); list.forEach(item -> { - // 获取载具信息 - MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( - new QueryWrapper() - .eq("storagevehicle_code", item.getString("storagevehicle_code")) - ); // 获取物料信息 MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne( @@ -108,10 +103,13 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl().eq("measure_unit_id", materDao.getBase_unit_id()) ); + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id")); + + StIvtIostorinvdisCp disDao = new StIvtIostorinvdisCp() - .setIostorinvdis_id(json.getString("iostorinvdis_id")) - .setIostorinvdtl_id(json.getString("iostorinvdtl_id")) - .setIostorinv_id(json.getString("iostorinv_id")) + .setIostorinvdis_id(IdUtil.getStringId()) + .setIostorinvdtl_id(dtlDao.getIostorinvdtl_id()) + .setIostorinv_id(dtlDao.getIostorinv_id()) .setSeq_no(1) .setMaterial_id(materDao.getMaterial_id()) .setPcsn(DateUtil.today()) @@ -119,9 +117,7 @@ public class StIvtIostorinvdisCpServiceImpl extends ServiceImpl().eq("storagevehicle_code", vehicleDao.getStoragevehicle_code()) - ); - }); return result; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java index 84fc9e9b..c7aee0be 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdisdtlCpServiceImpl.java @@ -16,7 +16,9 @@ import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; import org.nl.wms.storage_manage.IVTEnum; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisdtlCpService; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdtlCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdisdtlCp; +import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvdisdtlCpMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -52,6 +54,9 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl list) { if (!CollectionUtils.isEmpty(list)){ @@ -69,20 +74,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl result = new ArrayList<>(); list.forEach(item -> { - // 获取载具信息 - MdPbStoragevehicleinfo vehicleDao = iMdPbStoragevehicleinfoService.getOne( - new QueryWrapper() - .eq("storagevehicle_code", item.getString("storagevehicle_code")) - ); MdMeMaterialbase mataDao = iMdMeMaterialbaseService.getOne( new QueryWrapper().lambda() .eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code")) ); + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getById(item.getString("iostorinvdtl_id")); + StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp() - .setIostorinv_id(json.getString("iostorinv_id")) - .setIostorinvdtl_id(json.getString("iostorinvdtl_id")) + .setIostorinv_id(dtlDao.getIostorinv_id()) + .setIostorinvdtl_id(dtlDao.getIostorinvdtl_id()) .setIostorinvdis_id(json.getString("iostorinvdis_id")) .setIostorinvdisdtl_id(IdUtil.getStringId()) .setSeq_no(new BigDecimal(1)) @@ -91,9 +93,7 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl list) { @@ -74,6 +81,21 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl().lambda() + .eq(MpsSaleOrder::getSale_code, row.getBase_bill_code()) + .eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table()) + ); + if (ObjectUtil.isEmpty(orderDao)) + throw new BadRequestException("销售单号错误!"); + + row.setBase_billdtl_id(orderDao.getSale_id().toString()); + row.setBase_bill_code(orderDao.getSale_code()); + row.setBase_bill_type(orderDao.getSale_type()); + row.setBase_bill_table(orderDao.getSeq_no().toString()); + } + row.setIostorinv_id(iostorinvCp_id); row.setMaterial_id(materDao.getMaterial_id()); row.setIostorinvdtl_id(org.nl.common.utils.IdUtil.getStringId()); diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue index dd20b409..f594cc86 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue @@ -146,6 +146,7 @@ {{ scope.row.material_code }} + - - + + + + + + + + @@ -66,14 +67,9 @@ - + + 生成 + @@ -91,6 +87,7 @@ :controls="false" precision="3" :min="0" + @change="changeQty" placeholder="数量" /> @@ -113,6 +110,23 @@ + + + + + +
@@ -123,6 +137,7 @@ + @@ -252,7 +268,7 @@ export default { name: 'DivDialog', components: { StructDiv, AddBox }, mixins: [crud()], - dicts: ['IO_BILL_STATUS', 'MD_OVERSTRUCT_TYPE'], + dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE'], props: { dialogShow: { type: Boolean, @@ -272,8 +288,8 @@ export default { data() { return { dialogVisible: false, - stor_id: '', - sect_id: '', + stor_id: '1528627995269533696', + sect_id: '1528631043496742912', sectProp: null, structShow: false, bucketObj: null, @@ -282,6 +298,7 @@ export default { addBoxShow: false, bucketuniqueObj: null, sects: [], + defaultList: ['1528627995269533696', '1528631043496742912'], dis_row: null, form: { dtl_row: null, @@ -292,6 +309,7 @@ export default { vehicle_code: '', bucketunique: '', checked: true, + vehicle_overstruct_type: '00', tableMater: [] }, storlist: [], @@ -309,7 +327,6 @@ export default { }, methods: { disabledIos(row) { - debugger if (row.iostorinvdis_id === undefined) { return false } else { @@ -340,22 +357,34 @@ export default { }, clcikRow(row, column, event) { this.form.dtl_row = row + this.form.storage_qty = this.form.dtl_row.plan_qty crudProductIn.getIosInvDis({ 'iostorinv_id': row.iostorinv_id, 'iostorinvdtl_id': row.iostorinvdtl_id }).then(res => { - this.form.tableMater = res + debugger + if (res.length !== 0) { + this.form.tableMater = res + } }) }, clcikRowDis(row, column, event) { this.dis_row = row }, - vehicleCheck(vehicle_code) { - this.form.bucketunique = '' - // 校验载具号是否存在&&是否已被组盘 - crudProductIn.vehicleCheck({ 'storagevehicle_code': vehicle_code }).then(res => { - this.crud.notify('查询成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + vehicleCheck() { + // 生成托盘 + crudProductIn.vehicleCheck().then(res => { + this.form.tableMater = [] + this.form.vehicle_code = res.vehicle_code + this.crud.notify('生成成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }).catch(() => { - this.form.vehicle_code = '' + }) }, + changeQty(val) { + debugger + if (parseFloat(this.form.dtl_row.plan_qty) < parseFloat(val)) { + this.crud.notify('放入数量不能大于明细数量!', CRUD.NOTIFICATION_TYPE.INFO) + this.$set(this.form, 'storage_qty', parseFloat(this.form.dtl_row.plan_qty)) + } + }, queryBox() { // 校验载具是否为空 if (!this.form.vehicle_code) { @@ -393,6 +422,7 @@ export default { }) if (fla) { + this.bucketuniqueObj.iostorinvdtl_id = this.form.dtl_row.iostorinvdtl_id this.form.tableMater.splice(-1, 0, this.bucketuniqueObj) this.form.bucketunique = '' } @@ -404,12 +434,24 @@ export default { } const item = { 'storagevehicle_code': this.form.vehicle_code, + 'iostorinvdtl_id': this.form.dtl_row.iostorinvdtl_id, 'material_id': this.form.dtl_row.material_id, 'material_code': this.form.dtl_row.material_code, + 'material_spec': this.form.dtl_row.material_spec, 'material_name': this.form.dtl_row.material_name, 'qty': this.form.storage_qty } - this.form.tableMater.splice(-1, 0, item) + + let fla2 = true + this.form.tableMater.forEach(res => { + if (res.iostorinvdtl_id === item.iostorinvdtl_id && res.storagevehicle_code === item.storagevehicle_code) { + fla2 = false + } + }) + + if (fla2) { + this.form.tableMater.splice(-1, 0, item) + } } }, deleteRow(index, rows) { @@ -486,11 +528,11 @@ export default { }) }, cancelConfirmvehicle() { - if (!this.form.dtl_row) { - this.crud.notify('请选择一条明细', CRUD.NOTIFICATION_TYPE.INFO) + if (!this.dis_row) { + this.crud.notify('请选择一条分配明细', CRUD.NOTIFICATION_TYPE.INFO) return } - crudProductIn.cancelConfirmvehicle(this.form.dtl_row).then(res => { + crudProductIn.cancelConfirmvehicle(this.dis_row).then(res => { crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => { this.form.vehicle_code = '' this.form.bucketunique = '' @@ -579,6 +621,7 @@ export default { return } + this.dis_row.vehicle_overstruct_type = this.form.vehicle_overstruct_type crudProductIn.unDivStruct(this.dis_row).then(res => { crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js b/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js index 63fa1658..2d5df5ef 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/productin.js @@ -40,11 +40,10 @@ export function getIosInvDis(data) { }) } -export function vehicleCheck(data) { +export function vehicleCheck() { return request({ url: '/api/productIn/vehicleCheck', - method: 'post', - data + method: 'post' }) } From edc2f84199d06c6eeffc5d1b7ac880a492343264 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Fri, 16 Jun 2023 09:36:56 +0800 Subject: [PATCH 2/7] =?UTF-8?q?rev=20=E7=9B=91=E6=8E=A7=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../HailiangAutoCacheLineDeviceDriver.java | 17 +++++++---------- .../nl/modules/quartz/task/AutoCreateInst.java | 6 +++--- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java index 13909923..95c1dd7d 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_auto_cache_line/HailiangAutoCacheLineDeviceDriver.java @@ -449,7 +449,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i } else { //如果上述条件不满足 先判断当前缓存线任务号是否为0 //如果为0 且agv上报的指令信息存在,需要下发缓存线对应的任务信息 - if (task == 0 && ObjectUtil.isNotEmpty(inst)) { + if (mode != 0 && task == 0 && ObjectUtil.isNotEmpty(inst)) { instructionService.issuedCacheInfo(inst); this.noFeedAgvMessage = "到达送满框点后下发电气任务信息成功,指令号:" + inst.getInstruction_code() + ",等待AGV再次请求后反馈!"; logServer.deviceExecuteLog(device_code, "", "", "下发电气任务信息成功,指令信息:" + JSON.toJSONString(inst) + ",等待AGV再次请求后反馈!"); @@ -471,6 +471,9 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i if (error == 35) { noFeedMessage += "准备位条码异常,"; } + if (Integer.parseInt(inst.getInstruction_code()) != task) { + noFeedMessage += "AGV上报指令与缓存线任务号不一致,"; + } this.noFeedAgvMessage = this.replace(noFeedMessage); } } @@ -500,16 +503,10 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i this.set(0, 0, null); } else { String noFeedMessage = this.noFeedMessage(); - if (move != 1) { - noFeedMessage += "对接位光电无货,"; - } - if (prepare_ready != 1) { - noFeedMessage += "准备位未就绪,"; - } // if (in_ready != 1) { // noFeedMessage += "对接位入箱未就绪,"; // } - if (error == 35) { + if (error == 34) { noFeedMessage += "准备位条码异常,"; } this.noFeedAgvMessage = this.replace(noFeedMessage); @@ -602,7 +599,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(device_code, "", "", this.messageInfo(agvphase)); this.set(0, 0, null); } else { - if (task == 0 && ObjectUtil.isNotEmpty(inst)) { + if (mode != 0 && task == 0 && ObjectUtil.isNotEmpty(inst)) { TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); if (taskDto != null) { Map issued = instructionService.issued(inst.getInstruction_code(), taskDto.getPriority_floor(), taskDto.getBarcodeArr(), "4", "1"); @@ -638,7 +635,7 @@ public class HailiangAutoCacheLineDeviceDriver extends AbstractOpcDeviceDriver i NDCSocketConnectionAutoRun.write(data); Map map = new LinkedHashMap<>(); map.put("to_agv_get_finish", "1"); - if (task == 0 || Integer.parseInt(inst.getTask_code()) == task) { + if (task == 0 || Integer.parseInt(inst.getInstruction_code()) == task) { try { Thread.sleep(100); } catch (InterruptedException e) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java index 59916b00..46fa5662 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoCreateInst.java @@ -94,7 +94,7 @@ public class AutoCreateInst { Device device = deviceAppService.findDeviceByCode(put_device_code); if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); - if (hailiangAutoCacheLineDeviceDriver.getMode() != 1 || hailiangAutoCacheLineDeviceDriver.getTask() != 0 || instructionService.findInstByDeviceCode(put_device_code) != null) { + if (hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("mode") != 1 || hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("task") != 0) { continue; } } @@ -105,7 +105,7 @@ public class AutoCreateInst { Device device = deviceAppService.findDeviceByCode(start_device_code); if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); - if (hailiangAutoCacheLineDeviceDriver.getMode() != 1 || hailiangAutoCacheLineDeviceDriver.getTask() != 0 || instructionService.findInstByDeviceCode(start_device_code) != null) { + if (hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("mode") != 1 || hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("task") != 0) { continue; } } @@ -143,7 +143,7 @@ public class AutoCreateInst { Device device = deviceAppService.findDeviceByCode(taskDto1.getPut_device_code()); if (device != null && device.getDeviceDriver() instanceof HailiangAutoCacheLineDeviceDriver) { hailiangAutoCacheLineDeviceDriver = (HailiangAutoCacheLineDeviceDriver) device.getDeviceDriver(); - if (hailiangAutoCacheLineDeviceDriver.getMode() != 1 || hailiangAutoCacheLineDeviceDriver.getTask() != 0 || instructionService.findInstByDeviceCode(taskDto1.getPut_device_code()) != null) { + if (hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("mode") != 1 || hailiangAutoCacheLineDeviceDriver.getItemProtocol().getOpcIntegerValue("task") != 0) { continue; } } From 3b1e1a71940ca38312e464906e6f8d0819269223 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Fri, 16 Jun 2023 16:15:00 +0800 Subject: [PATCH 3/7] =?UTF-8?q?rev=20=E6=B8=85=E6=B4=97=E4=B8=8A=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hailiang_cleaning_feeding_line/ItemProtocol.java | 4 +++- .../acs/order/service/impl/ProduceshiftorderServiceImpl.java | 4 ++-- .../src/main/resources/config/application-prod.yml | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java index 8f436d3d..d991a5c9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java @@ -34,6 +34,8 @@ public class ItemProtocol { public static String item_to_confirm_finished = "to_confirm_finished"; //批次号 public static String item_to_pcsn = "to_pcsn"; + //储料仓号 + public static String item_to_storage_num = "to_storage_num"; //上料总数量 public static String item_to_all_num = "to_all_num"; //上料总重量 @@ -116,7 +118,7 @@ public class ItemProtocol { list.add(new ItemDto(item_to_in_confirm_finish, "上料命令确认完毕", "DB2.W72")); list.add(new ItemDto(item_to_confirm_finished, "确认完成", "DB2.W74")); list.add(new ItemDto(item_to_pcsn, "批次号", "DB2.D84")); - list.add(new ItemDto(item_to_pcsn, "储料仓号", "DB2.D88")); + list.add(new ItemDto(item_to_storage_num, "储料仓号", "DB2.D88")); list.add(new ItemDto(item_to_all_num, "上料总数量", "DB2.D152")); list.add(new ItemDto(item_to_all_weight, "上料总重量", "DB2.D156")); list.add(new ItemDto(item_to_del_task, "任务删除", "DB2.W394")); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java index aa4ce8c8..23dcce1f 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/impl/ProduceshiftorderServiceImpl.java @@ -113,8 +113,8 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService, A return true; }) .sorted((order1, order2) -> (order1.getOrder_code().compareTo(order2.getOrder_code()))) - .skip((currentPageNumber - 1) * pageMaxSize) - .limit(pageMaxSize) + /* .skip((currentPageNumber - 1) * pageMaxSize) + .limit(pageMaxSize)*/ .collect(Collectors.toList()); List skipList = orderList.stream().skip((currentPageNumber - 1) * pageMaxSize) .limit(pageMaxSize) diff --git a/wcs/nladmin-system/src/main/resources/config/application-prod.yml b/wcs/nladmin-system/src/main/resources/config/application-prod.yml index d117748a..3b2f44d8 100644 --- a/wcs/nladmin-system/src/main/resources/config/application-prod.yml +++ b/wcs/nladmin-system/src/main/resources/config/application-prod.yml @@ -1,5 +1,5 @@ server: - port: 8011 + port: 8089 tomcat: accept-count: 1000 max-connections: 10000 From 804ecd9b74f46e2d4b0b1f4e233c3780bbb95662 Mon Sep 17 00:00:00 2001 From: liuxy Date: Sat, 17 Jun 2023 09:24:46 +0800 Subject: [PATCH 4/7] =?UTF-8?q?rev=EF=BC=9A=20=E6=88=90=E5=93=81=E5=87=BA?= =?UTF-8?q?=E5=85=A5=E5=BA=93=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/saleOrder/dao/MpsSaleOrder.java | 19 +- .../service/iostorInv/dto/IostorInvQuery.java | 2 + .../impl/StIvtIostorinvCpOutServiceImpl.java | 103 +++++---- .../impl/StIvtIostorinvCpServiceImpl.java | 69 ++++-- .../impl/StIvtIostorinvdtlCpServiceImpl.java | 4 +- .../dao/mapper/StIfDeliveryorderCpMapper.xml | 9 +- .../dao/mapper/StIvtStructivtCpMapper.xml | 25 ++- .../service/structIvt/dto/CpIvtQuery.java | 6 + .../impl/StIvtStructivtCpServiceImpl.java | 9 +- .../productmanage/util/RuleUtil.java | 2 +- .../product/productIn/AddDialog.vue | 12 +- .../product/productIn/AddDtl.vue | 1 + .../product/productIn/DivDialog.vue | 11 +- .../product/productIn/TaskDialog.vue | 10 +- .../product/productIn/ViewDialog.vue | 14 +- .../product/productIn/index.vue | 10 +- .../product/productIvt/index.vue | 35 +++- .../product/productOut/AddDialog.vue | 52 ++++- .../product/productOut/AddDtl.vue | 13 +- .../product/productOut/AddIvt.vue | 198 ++++++++++++++++++ .../product/productOut/DivDialog.vue | 13 +- .../product/productOut/StructIvt.vue | 3 +- .../product/productOut/TaskDialog.vue | 12 +- .../product/productOut/index.vue | 23 +- 24 files changed, 529 insertions(+), 126 deletions(-) create mode 100644 mes/qd/src/views/wms/storage_manage/product/productOut/AddIvt.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java index 2244a6dc..8db56de7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java @@ -1,6 +1,8 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -24,7 +26,8 @@ public class MpsSaleOrder implements Serializable { /** * 销售单标识 */ - private Long sale_id; + @TableId + private String sale_id; /** * 销售单号 @@ -44,7 +47,7 @@ public class MpsSaleOrder implements Serializable { /** * 物料标识 */ - private Long material_id; + private String material_id; /** * 状态 @@ -64,7 +67,7 @@ public class MpsSaleOrder implements Serializable { /** * 客户标识 */ - private Long cust_id; + private String cust_id; /** * 客户编码 @@ -79,7 +82,7 @@ public class MpsSaleOrder implements Serializable { /** * 计量单位标识 */ - private Long qty_unit_id; + private String qty_unit_id; /** * 计划交期 @@ -89,7 +92,7 @@ public class MpsSaleOrder implements Serializable { /** * 创建人 */ - private Long create_id; + private String create_id; /** * 创建人姓名 @@ -104,7 +107,7 @@ public class MpsSaleOrder implements Serializable { /** * 提交人 */ - private Long audit_optid; + private String audit_optid; /** * 提交时间 @@ -119,7 +122,7 @@ public class MpsSaleOrder implements Serializable { /** * 确认人 */ - private Long confirm_optid; + private String confirm_optid; /** * 确认人姓名 @@ -144,7 +147,7 @@ public class MpsSaleOrder implements Serializable { /** * 车间标识 */ - private Long workshop_id; + private String workshop_id; /** * 生产数量 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dto/IostorInvQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dto/IostorInvQuery.java index 76612314..c32cda55 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dto/IostorInvQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dto/IostorInvQuery.java @@ -29,6 +29,8 @@ public class IostorInvQuery extends BaseQuery { private String io_type; + private String product_area; + private Boolean is_delete = false; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java index 36f3653c..cfc97775 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpOutServiceImpl.java @@ -29,8 +29,6 @@ import org.nl.wms.masterdata_manage.service.vehicle.IMdPbBucketrecordService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleextService; import org.nl.wms.masterdata_manage.service.vehicle.IMdPbStoragevehicleinfoService; import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbBucketrecord; -import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleext; -import org.nl.wms.masterdata_manage.service.vehicle.dao.MdPbStoragevehicleinfo; 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; @@ -40,7 +38,6 @@ import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; -import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvCpOutService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; @@ -209,6 +206,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl dtlDaoList = new ArrayList<>(); if (whereJson.getBoolean("type")) { + // 全部分配 dtlDaoList = iostorinvdtlCpService.list( new QueryWrapper().lambda() .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) @@ -216,6 +214,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) @@ -237,8 +236,8 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl disDaoList = new ArrayList<>(); if (whereJson.getBoolean("type")) { + // 全部取消 disDaoList = iostorinvdisCpService.list( new QueryWrapper().lambda() .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) .orderByAsc(StIvtIostorinvdisCp::getSeq_no) ); } else { + // 单条取消 disDaoList = iostorinvdisCpService.list( new QueryWrapper().lambda() .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) @@ -397,11 +398,15 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() + .set(StIvtIostorinvdisCp::getPoint_id, pointDao.getPoint_id()) + .set(StIvtIostorinvdisCp::getPoint_code, pointDao.getPoint_code()) + .set(StIvtIostorinvdisCp::getPoint_name, pointDao.getPoint_name()) + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("生成")) + .set(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id()) + .eq(StIvtIostorinvdisCp::getIostorinv_id, disDao.getIostorinv_id()) + .eq(StIvtIostorinvdisCp::getStoragevehicle_code, disDao.getStoragevehicle_code()) ); } @@ -458,21 +463,12 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl row.getIostorinvdtl_id().equals(dao.getIostorinvdtl_id())) .findAny().get(); - iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY,dtlDao.getSource_billdtl_id())); + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBFROZEN_SUBIVT_QTY,dtlDao.getBase_billdtl_id())); - // 3)解锁起点 + // 3)解锁起点 / 将此托盘上的库存全部出掉 unLockNext(dao.getStruct_id()); - // 4) 更新载具扩展属性 - iMdPbStoragevehicleextService.update( - new MdPbStoragevehicleext() - .setMaterial_id("") - .setStorage_qty(BigDecimal.valueOf(0)), - new QueryWrapper().lambda() - .eq(MdPbStoragevehicleext::getStoragevehicle_code,dao.getStoragevehicle_code()) - ); - - // 5) 更新箱记录表为出库 + // 4) 更新箱记录表为出库 iMdPbBucketrecordService.update( MdPbBucketrecord.builder() .status(MasterEnum.BOX_STATUS.code("出库")) @@ -480,7 +476,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() .eq(MdPbBucketrecord::getStoragevehicle_code, dao.getStoragevehicle_code()) .eq(MdPbBucketrecord::getMaterial_id, dao.getMaterial_id()) - .eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("入库")) + .eq(MdPbBucketrecord::getStatus, MasterEnum.BOX_STATUS.code("出库")) ); } @@ -491,7 +487,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getTask_id, task_id)); + .eq(StIvtIostorinvdisCp::getTask_id, task_id),false); // 更新任务状态为完成 if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { @@ -567,12 +563,23 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl> collect = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getTask_id, task_id) + ) + .stream() + .collect(Collectors.groupingBy(StIvtIostorinvdisCp::getIostorinvdtl_id)); + + for(List list : collect.values()) { + StIvtIostorinvdisCp disDao_2 = list.get(0); + JSONObject mst_jo = new JSONObject(); + mst_jo.put("iostorinvdtl_id", disDao_2.getIostorinvdtl_id()); + mst_jo.put("iostorinv_id", disDao_2.getIostorinv_id()); + mst_jo.put("is_out", true); + iostorinvdisCpService.confirm(mst_jo); + } } else if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { // 更新任务为执行中 @@ -609,12 +616,15 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() + .set(StIvtIostorinvdisCp::getTask_id, "") + .set(StIvtIostorinvdisCp::getPoint_id, "") + .set(StIvtIostorinvdisCp::getPoint_code,"") + .set(StIvtIostorinvdisCp::getPoint_name,"") + .set(StIvtIostorinvdisCp::getWork_status, IOSEnum.WORK_STATUS.code("未生成")) + .eq(StIvtIostorinvdisCp::getTask_id, disDao.getTask_id()) + ); } @Override @@ -719,6 +729,7 @@ public class StIvtIostorinvCpOutServiceImpl extends ServiceImpl().lambda() - .eq(MdPbStoragevehicleinfo::getStoragevehicle_code, attrDao.getStoragevehicle_code()) - ); - - if (StrUtil.equals(vehicleDao.getOverstruct_type(),IOSEnum.IS_USED.code("是"))) { + if (StrUtil.equals(attrDao.getIs_zdepth(),IOSEnum.IS_USED.code("是"))) { // 解锁超限货位 iStIvtStructattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .eq(StIvtStructattr::getControl_code,attrDao.getStruct_id()) + .eq(StIvtStructattr::getStruct_id,attrDao.getControl_code()) ); } + // 将此托盘上的所有库存删除 + iStIvtStructivtCpService.remove( + new QueryWrapper().lambda() + .eq(StIvtStructivtCp::getStruct_id, struct_id) + .eq(StIvtStructivtCp::getFrozen_qty, 0) + ); + attrDao.setInv_code(""); attrDao.setInv_type(""); attrDao.setInv_id(""); + attrDao.setIs_zdepth(""); attrDao.setStoragevehicle_code(""); attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")); iStIvtStructattrService.updateById(attrDao); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java index b71e3405..b2405974 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvCpServiceImpl.java @@ -38,6 +38,8 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattr 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.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; @@ -118,6 +120,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl list : collect.values()) { @@ -454,8 +462,10 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_id,attrDao.getControl_code()) + ); + } + // 解锁货位 iStIvtStructattrService.update( new StIvtStructattr() .setLock_type(IOSEnum.LOCK_TYPE.code("未锁定")) .setInv_code("") .setInv_type("") + .setIs_zdepth("") .setInv_id(""), new QueryWrapper().lambda() - .eq(StIvtStructattr::getStruct_code, disDao.getStruct_code()) + .eq(StIvtStructattr::getStruct_id, disDao.getStruct_id()) ); - // 判断载具是否超限 - if (StrUtil.equals(whereJson.getString("vehicle_overstruct_type"),IOSEnum.VEHICLE_OVER_TYPE.code("横向超"))) { - - // 解锁超限货位 - iStIvtStructattrService.update( - new UpdateWrapper().lambda() - .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) - .eq(StIvtStructattr::getControl_code,disDao.getStruct_id()) - ); - } - // 更新库存 Map> collect = iostorinvdisCpService.list( new QueryWrapper().lambda() @@ -531,7 +545,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl list : collect.values()) { @@ -543,7 +557,9 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() .eq(MpsSaleOrder::getSale_code, row.getBase_bill_code()) .eq(MpsSaleOrder::getSeq_no, row.getBase_bill_table()) ); if (ObjectUtil.isEmpty(orderDao)) - throw new BadRequestException("销售单号错误!"); + throw new BadRequestException("销售单不存在!"); row.setBase_billdtl_id(orderDao.getSale_id().toString()); row.setBase_bill_code(orderDao.getSale_code()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml index 0585ae13..675c8c5f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/moreOrLess/dao/mapper/StIfDeliveryorderCpMapper.xml @@ -6,6 +6,7 @@ SELECT der.*, mater.material_name, + mater.material_spec, unit.unit_name AS qty_unit_name FROM ST_IF_DeliveryOrder_CP der @@ -18,16 +19,16 @@ and der.deliver_code = #{query.deliver_code} - and der.material_code >= #{query.material_code} + and der.material_code like #{query.material_code} - and der.status >= #{query.status} + and der.status = #{query.status} - and der.cust_code >= #{query.cust_code} + and der.cust_code like #{query.cust_code} - and der.sale_code >= #{query.sale_code} + and der.sale_code like #{query.sale_code} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml index e44d6174..188079cb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dao/mapper/StIvtStructivtCpMapper.xml @@ -8,7 +8,7 @@ FROM ST_IVT_StructIvt_CP ivt LEFT JOIN st_ivt_structattr attr ON ivt.struct_id = attr.struct_id - WHERE attr.lock_type = '0' + WHERE ivt.canuse_qty > 0 and ivt.frozen_qty = 0 and attr.stor_id = #{stor_id} @@ -34,6 +34,7 @@ attr.storagevehicle_code, mater.material_code, mater.material_name, + mater.material_spec, unit.unit_name AS qty_unit_name FROM ST_IVT_StructIvt_CP ivt @@ -144,30 +145,48 @@ attr.sect_name, ivt.struct_code, ivt.struct_name, + mater.material_id, mater.material_name, mater.material_code, + mater.material_spec, attr.storagevehicle_code, ivt.canuse_qty, ivt.frozen_qty, ivt.ivt_qty, ivt.warehousing_qty, unit.unit_name, - ivt.instorage_time + unit.measure_unit_id, + ivt.instorage_time, + sale.sale_code, + sale.seq_no, + sale.sale_id, + sale.sale_type FROM st_ivt_structivt_cp ivt LEFT JOIN md_me_materialbase mater ON ivt.material_id = mater.material_id LEFT JOIN st_ivt_structattr attr ON attr.struct_id = ivt.struct_id LEFT JOIN md_pb_measureunit unit ON unit.measure_unit_id = ivt.qty_unit_id + LEFT JOIN mps_sale_order sale ON sale.sale_id = ivt.sale_id 1=1 and mater.material_code LIKE #{query.material_code} or - (mater.material_name LIKE #{query.material_code}) + (mater.material_name LIKE #{query.material_code}) or + (mater.material_spec LIKE #{query.material_code}) and attr.struct_code LIKE #{query.struct_code} or (attr.struct_name LIKE #{query.struct_code}) + + and sale.sale_code LIKE #{query.sale_code} + + + and sale.seq_no LIKE #{query.seq_no} + + + and attr.lock_type = #{query.lock_type} + and ivt.instorage_time >= #{query.start_time} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dto/CpIvtQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dto/CpIvtQuery.java index e02b21b9..23100b01 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dto/CpIvtQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/dto/CpIvtQuery.java @@ -18,6 +18,12 @@ public class CpIvtQuery extends BaseQuery { private String material_code; + private String sale_code; + + private String seq_no; + + private String lock_type; + @Override public void paramMapping() { super.doP.put("struct_code", QParam.builder().k(new String[]{"struct_code"}).type(QueryTEnum.LK).build()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java index 3da06584..8b3889b8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/structIvt/impl/StIvtStructivtCpServiceImpl.java @@ -145,7 +145,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl().lambda() .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) - .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + .eq(StIvtStructivtCp::getSale_id, json.getString("sale_id")) ); if (ObjectUtil.isEmpty(ivtDao)) { @@ -170,6 +170,9 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl().lambda() .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) - .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + .eq(StIvtStructivtCp::getSale_id, json.getString("sale_id")) ); if (ObjectUtil.isEmpty(ivtDao)) { @@ -221,7 +224,7 @@ public class StIvtStructivtCpServiceImpl extends ServiceImpl().lambda() .eq(StIvtStructivtCp::getStruct_id, json.getString("struct_id")) .eq(StIvtStructivtCp::getMaterial_id, json.getString("material_id")) - .eq(StIvtStructivtCp::getPcsn, json.getString("pcsn")) + .eq(StIvtStructivtCp::getSale_id, json.getString("sale_id")) ); if (ObjectUtil.isEmpty(ivtDao)) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java index 2c7a3e3e..1bb5b809 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/util/RuleUtil.java @@ -16,7 +16,7 @@ public class RuleUtil { /* * 出库分配: - * 根据 仓库、库区、物料、销售单找库存 + * 根据 仓库、库区、物料、销售单、行号找库存 */ public static final String PRODUCTION_OUT_1 = "out_1"; diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue index f594cc86..2e1b4018 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/AddDialog.vue @@ -169,7 +169,7 @@ - + + diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue index db27987a..03450ba0 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/DivDialog.vue @@ -59,8 +59,9 @@ - - + + + @@ -268,7 +269,7 @@ export default { name: 'DivDialog', components: { StructDiv, AddBox }, mixins: [crud()], - dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE'], + dicts: ['IO_BILL_STATUS', 'VEHICLE_OVER_TYPE', 'PCS_SAL_TYPE'], props: { dialogShow: { type: Boolean, @@ -596,6 +597,7 @@ export default { this.dis_row.stor_id = this.stor_id.toString() this.dis_row.sect_id = this.sect_id.toString() + this.dis_row.vehicle_overstruct_type = this.form.vehicle_overstruct_type crudProductIn.divStruct(this.dis_row).then(res => { crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res @@ -649,6 +651,9 @@ export default { this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }) }) + }, + formatBaseType(row) { + return this.dict.label.PCS_SAL_TYPE[row.base_bill_type] } } } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/TaskDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/TaskDialog.vue index 135169b7..e0929ee4 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/TaskDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/TaskDialog.vue @@ -42,6 +42,9 @@ + + + - + + @@ -204,6 +210,7 @@ import CRUD, { crud, form } from '@crud/crud' import crudProductIn from '@/views/wms/storage_manage/product/productIn/productin' import MaterDtl from '@/views/wms/pub/MaterDialog' import AddDtl from '@/views/wms/storage_manage/product/productOut/AddDtl' +import AddIvt from '@/views/wms/storage_manage/product/productOut/AddIvt' import crudStorattr, { getStor } from '@/views/wms/storage_manage/basedata/basedata' const defaultForm = { @@ -223,7 +230,7 @@ const defaultForm = { export default { name: 'AddDialog', - components: { MaterDtl, AddDtl }, + components: { MaterDtl, AddDtl, AddIvt }, mixins: [crud(), form(defaultForm)], dicts: ['IO_BILL_STATUS', 'ST_INV_OUT_TYPE', 'ST_QUALITY_SCODE', 'bill_type', 'product_area'], props: { @@ -240,6 +247,7 @@ export default { dialogVisible: false, materShow: false, dtlShow: false, + ivtShow: false, opendtlParam: null, materType: '03', // 关键成品 storlist: [], @@ -345,12 +353,41 @@ export default { data.material_id = row.material_id data.material_code = row.material_code data.material_name = row.material_name + data.material_spec = row.material_spec data.plan_qty = row.delivery_qty data.qty_unit_name = row.qty_unit_name data.qty_unit_id = row.qty_unit_id - data.source_billdtl_id = row.sale_id - data.source_bill_type = row.sale_type - data.source_bill_code = row.sale_code + data.source_billdtl_id = row.deliver_id + data.source_bill_type = row.deliver_type + data.source_bill_code = row.deliver_code + data.base_billdtl_id = row.sale_id + data.base_bill_code = row.sale_code + data.base_bill_table = row.sale_seq_no + data.edit = true + this.form.tableData.splice(-1, 0, data) + this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty) + this.form.detail_count = this.form.tableData.length + } + }, + tableChanged3(row) { + let same_mater = true + this.form.tableData.forEach((item) => { + if (item.sale_id === row.sale_id) { + same_mater = false + } + }) + if (same_mater) { + const data = {} + data.material_id = row.material_id + data.material_code = row.material_code + data.material_name = row.material_name + data.material_spec = row.material_spec + data.plan_qty = row.canuse_qty + data.qty_unit_name = row.unit_name + data.qty_unit_id = row.measure_unit_id + data.base_billdtl_id = row.sale_id + data.base_bill_code = row.sale_code + data.base_bill_table = row.seq_no data.edit = true this.form.tableData.splice(-1, 0, data) this.form.total_qty = parseFloat(this.form.total_qty) + parseFloat(data.plan_qty) @@ -360,6 +397,9 @@ export default { insertEvent(row) { this.dtlShow = true }, + insertIvt() { + this.ivtShow = true + }, queryMater(index, row) { this.nowindex = index this.nowrow = row diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/AddDtl.vue b/mes/qd/src/views/wms/storage_manage/product/productOut/AddDtl.vue index f68da88b..5bdc47a1 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productOut/AddDtl.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/AddDtl.vue @@ -78,9 +78,13 @@ - + + + + + @@ -105,6 +109,7 @@ import pagination from '@crud/Pagination' export default { name: 'AddDtl', + dicts: ['PCS_DELIVER_TYPE', 'PCS_DELI_STATUS'], components: { rrOperation, pagination, crudOperation }, cruds() { return CRUD({ @@ -175,6 +180,12 @@ export default { this.$emit('update:dialogShow', false) this.rows = this.$refs.multipleTable.selection this.$emit('tableChanged', this.tableRadio) + }, + formatStatus(row, column) { + return this.dict.label.PCS_DELI_STATUS[row.status] + }, + formatSourceType(row, column) { + return this.dict.label.PCS_DELIVER_TYPE[row.deliver_type] } } } diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/AddIvt.vue b/mes/qd/src/views/wms/storage_manage/product/productOut/AddIvt.vue new file mode 100644 index 00000000..91a3f174 --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/AddIvt.vue @@ -0,0 +1,198 @@ + + + + diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue index ca40132a..0f4d65c6 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/DivDialog.vue @@ -112,7 +112,7 @@ - + @@ -204,10 +204,10 @@ - - - + + + @@ -227,7 +227,7 @@ export default { name: 'DivDialog', components: { StructIvt }, mixins: [crud()], - dicts: ['IO_BILL_STATUS', 'work_status'], + dicts: ['IO_BILL_STATUS', 'work_status', 'PCS_DELIVER_TYPE'], props: { dialogShow: { type: Boolean, @@ -315,6 +315,9 @@ export default { bill_statusFormat(row, column) { return this.dict.label.IO_BILL_STATUS[row.bill_status] }, + formatSourceType(row, column) { + return this.dict.label.PCS_DELIVER_TYPE[row.source_bill_type] + }, quality_scodeFormat(row, column) { return this.dict.label.ST_QUALITY_SCODE[row.quality_scode] }, diff --git a/mes/qd/src/views/wms/storage_manage/product/productOut/StructIvt.vue b/mes/qd/src/views/wms/storage_manage/product/productOut/StructIvt.vue index 88033482..2717ab56 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productOut/StructIvt.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productOut/StructIvt.vue @@ -79,8 +79,9 @@ + + -