From cc15c50bbfb24aca955441be1875768f333f16ec Mon Sep 17 00:00:00 2001 From: liuxy Date: Thu, 25 May 2023 21:42:15 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BB=A3=E7=A0=81=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/nl/wms/aps_manage/mps.xls | Bin 171008 -> 175616 bytes .../service/vehicle/dao/MdPbBucketrecord.java | 3 + .../service/saleOrder/dao/MpsSaleOrder.java | 85 ++++- .../IStivtlostorivnCpInController.java | 24 ++ .../iostorInv/IStIvtIostorinvCpService.java | 27 ++ .../impl/StIvtIostorinvCpServiceImpl.java | 305 +++++++++++++++++- .../StIvtIostorinvdisdtlCpServiceImpl.java | 32 +- .../impl/StIvtIostorinvdtlCpServiceImpl.java | 3 + mes/qd/src/views/wms/pub/StructDialog.vue | 2 +- .../product/productIn/AddDialog.vue | 27 +- .../product/productIn/DivDialog.vue | 103 +++--- .../product/productIn/ViewDialog.vue | 4 +- .../product/productIn/index.vue | 28 +- .../product/productIn/productin.js | 31 +- 14 files changed, 548 insertions(+), 126 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls index f061545183b81c6ba7200a2ed11b5fe0d93bb8a6..27cdf427ba0fad73c0033a9a335f9acb40e37e54 100644 GIT binary patch delta 37144 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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java index edee1353..531d7963 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/vehicle/dao/MdPbBucketrecord.java @@ -3,6 +3,8 @@ package org.nl.wms.masterdata_manage.service.vehicle.dao; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; + +import lombok.Builder; import lombok.Data; import lombok.EqualsAndHashCode; @@ -15,6 +17,7 @@ import lombok.EqualsAndHashCode; * @since 2023-05-10 */ @Data +@Builder @EqualsAndHashCode(callSuper = false) @TableName("md_pb_bucketrecord") public class MdPbBucketrecord implements Serializable { 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 eaa3271d..2244a6dc 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,12 +1,11 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao; +import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; import lombok.Data; import lombok.EqualsAndHashCode; -import java.io.Serializable; -import java.math.BigDecimal; - /** *

* 生产订单表 @@ -96,17 +95,71 @@ public class MpsSaleOrder implements Serializable { * 创建人姓名 */ private String create_name; - private String audit_optid; - private String audit_time; - private String audit_optname; - private String confirm_optid; - private String confirm_optname; - private String confirm_time; - private String is_delete; - private String remark; - private String workshop_id; - private String product_qty; - private String instor_qty; - private String sendout_qty; -} + /** + * 创建时间 + */ + private String create_time; + + /** + * 提交人 + */ + private Long audit_optid; + + /** + * 提交时间 + */ + private String audit_time; + + /** + * 提交人姓名 + */ + private String audit_optname; + + /** + * 确认人 + */ + private Long confirm_optid; + + /** + * 确认人姓名 + */ + private String confirm_optname; + + /** + * 确认时间 + */ + private String confirm_time; + + /** + * 是否删除 + */ + private String is_delete; + + /** + * 备注 + */ + private String remark; + + /** + * 车间标识 + */ + private Long workshop_id; + + /** + * 生产数量 + */ + private BigDecimal product_qty; + + /** + * 预入库数量 + */ + private BigDecimal instor_qty; + + /** + * 发货数量 + */ + private BigDecimal sendout_qty; + + +} 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 580a8248..457e6fc6 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 @@ -98,4 +98,28 @@ public class IStivtlostorivnCpInController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/unDivStruct") + @Log("取消分配") + @ApiOperation("取消分配") + public ResponseEntity unDivStruct(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.unDivStruct(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/setPoint") + @Log("设置起点") + @ApiOperation("设置起点") + public ResponseEntity setPoint(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.setPoint(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("强制确认") + @ApiOperation("强制确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson){ + iStIvtIostorinvCpService.confirm(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + } 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 479c8aed..d82b7976 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 @@ -117,4 +117,31 @@ public interface IStIvtIostorinvCpService extends IService { * } */ void divStruct(JSONObject whereJson); + + /** + * 取消分配 + * @param whereJson + * { + * 分配明细 + * } + */ + void unDivStruct(JSONObject whereJson); + + /** + * 设置起点 + * @param whereJson + * { + * 分配明细 + * } + */ + void setPoint(JSONObject whereJson); + + /** + * 强制确认 + * @param whereJson + * { + * "" + * } + */ + void confirm(JSONObject whereJson); } 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 8c396c31..de31155f 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 @@ -1,7 +1,9 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.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; @@ -11,18 +13,28 @@ 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.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; 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.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; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +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; +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.IStIvtIostorinvCpService; import org.nl.wms.storage_manage.productmanage.service.iostorInv.IStIvtIostorinvdisCpService; @@ -34,6 +46,8 @@ import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostor import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.StIvtIostorinvdtlCp; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dao.mapper.StIvtIostorinvCpMapper; import org.nl.wms.storage_manage.productmanage.service.iostorInv.dto.IostorInvQuery; +import org.nl.wms.storage_manage.productmanage.service.structIvt.IStIvtStructivtCpService; +import org.nl.wms.storage_manage.productmanage.util.ChangeIvtUtil; import org.nl.wms.storage_manage.productmanage.util.DivRuleCpService; import org.nl.wms.storage_manage.productmanage.util.RuleUtil; import org.springframework.beans.factory.annotation.Autowired; @@ -41,7 +55,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; -import java.util.*; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -79,12 +96,23 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl pageQuery = this.page(page.build(), query.build()); @@ -208,7 +236,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id"))); + if (ObjectUtil.isNotEmpty(disDao.getStruct_code())) throw new BadRequestException("此明细已分配"); String struct_id = whereJson.getString("struct_id"); StIvtStructattr attrDao = new StIvtStructattr(); @@ -356,7 +388,211 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() + .eq(StIvtIostorinvdisCp::getIostorinvdis_id, whereJson.getString("iostorinvdis_id")) + ); + if (ObjectUtil.isEmpty(disDao)) throw new BadRequestException("分配明细不存在!"); + + + SchBaseTask taskDao = iSchBaseTaskService.getOne( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_id, disDao.getTask_id()) + .gt(SchBaseTask::getTask_status, TaskStatusEnum.START_AND_POINT.getCode()) + ); + if (ObjectUtil.isNotEmpty(taskDao)) throw new BadRequestException("任务已下发,不可取消!"); + + // 2.更新分配明细 + iStIvtIostorinvdisdtlCpService.update( + new StIvtIostorinvdisdtlCp() + .setStruct_name("") + .setStruct_code("") + .setStruct_id("") + .setSect_id("") + .setSect_code("") + .setSect_name(""), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinvdis_id,disDao.getIostorinvdis_id()) + ); + + // 3.更新任务 +// iSchBaseTaskService.update( +// new SchBaseTask().setIs_delete(true), +// new QueryWrapper().lambda() +// .eq(SchBaseTask::getTask_id, disDao.getTask_id()) +// .lt(SchBaseTask::getTask_status, TaskStatusEnum.ISSUE.getCode()) +// ); + + // 解锁货位 + iStIvtStructattrService.update( + new StIvtStructattr() + .setLock_type("1") // TODO 暂时写死 + .setInv_code("") + .setInv_type("") + .setInv_id(""), + new QueryWrapper().lambda() + .eq(StIvtStructattr::getStruct_code, disDao.getStruct_code()) + ); + + // 更新库存 + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(disDao,ChangeIvtUtil.SUBWAREHOUSING_QTY,null)); + + // 4.更新分配 + iostorinvdisCpService.updateById( + disDao.setStruct_name("").setStruct_code("") + .setStruct_id("").setSect_id("") + .setSect_code("").setSect_name("") + .setPoint_id("").setPoint_code("") + .setPoint_name("") + ); + + // 5.更新明细 + StIvtIostorinvdtlCp dtlDao = iostorinvdtlCpService.getOne( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, disDao.getIostorinvdtl_id()) + ); + + 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()); + + 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("分配中")); + } + + iostorinvdtlCpService.updateById(dtlDao); + + // 6.更新主表 + updateMst(dtlDao.getIostorinv_id()); + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void setPoint(JSONObject whereJson) { + StIvtIostorinvdisCp disDao = iostorinvdisCpService.getById(whereJson.getString("iostorinvdis_id")); + + // 1.校验是否设置过起点 + if (ObjectUtil.isNotEmpty(disDao.getPoint_id())) throw new BadRequestException("此明细已生成任务!"); + + // 2.下发任务 + SchBasePoint pointDao = iSchBasePointService.getOne( + new QueryWrapper().lambda() + .eq(SchBasePoint::getPoint_code, whereJson.getString("point_code")) + ); + + PointEvent event = PointEvent.builder() + .type(CHANGE_BILL_TYPE_ENUM.IOSTORINV_IN_SEND.getCode()) + .point_code1(disDao.getStruct_code()) + .point_code2(pointDao.getPoint_code()) + .callback((Consumer) disDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 3.更新分配表 + iostorinvdisCpService.updateById( + disDao.setPoint_id(pointDao.getPoint_id()) + .setPoint_code(pointDao.getPoint_code()) + .setPoint_name(pointDao.getPoint_name()) + ); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void confirm(JSONObject whereJson) { + + // 1.更新主表为完成 + StIvtIostorinvCp mstDao = this.getById(whereJson.getString("iostorinv_id")); + mstDao.setBill_status(IOSEnum.BILL_STATUS.code("完成")); + mstDao.setConfirm_id(SecurityUtils.getCurrentUserId()); + mstDao.setConfirm_name(SecurityUtils.getCurrentNickName()); + mstDao.setConfirm_time(DateUtil.now()); + this.updateById(mstDao); + + // 2.判断所有明细是否为分配完 + List dtlDaoList = iostorinvdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + boolean is_dis = dtlDaoList.stream() + .anyMatch(row -> row.getBill_status().equals(IOSEnum.BILL_STATUS.code("分配完"))); + + if (!is_dis) throw new BadRequestException("请先分配单据!"); + + // 3.更新明细表为完成 + iostorinvdtlCpService.update( + new StIvtIostorinvdtlCp() + .setBill_status(IOSEnum.BILL_STATUS.code("完成")), + new QueryWrapper().lambda() + .eq(StIvtIostorinvdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + // 4.更新箱记录表状态为入库 + List disDtlList = iStIvtIostorinvdisdtlCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisdtlCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + for (StIvtIostorinvdisdtlCp disDtlDao : disDtlList) { + // 更新箱记录表 + iMdPbBucketrecordService.update( + MdPbBucketrecord.builder() + .status("03") // TODO 暂时写死 + .instor_optid(Long.getLong(SecurityUtils.getCurrentUserId())) + .instor_optname(SecurityUtils.getCurrentNickName()) + .instor_time(DateUtil.now()) + .build(), + new QueryWrapper().lambda() + .eq(MdPbBucketrecord::getBucketunique, disDtlDao.getBucketunique()) + ); + } + + // 5.更新任务为完成、更新库存、解锁点位 + List disDaoList = iostorinvdisCpService.list( + new QueryWrapper().lambda() + .eq(StIvtIostorinvdisCp::getIostorinv_id, whereJson.getString("iostorinv_id")) + ); + + for (StIvtIostorinvdisCp dao : disDaoList) { + // 1)更新任务为完成 + SchBaseTask taskDao = iSchBaseTaskService.getById(dao.getTask_id()); + + if (ObjectUtil.isNotEmpty(taskDao)) { + // 更新有任务分配 + if (!StrUtil.equals(taskDao.getTask_id(), TaskStatusEnum.FINISHED.getCode())) { + taskDao.setTask_status(TaskStatusEnum.FINISHED.getCode()); + iSchBaseTaskService.updateById(taskDao); + } + } + + // 2)更新库存 + iStIvtStructivtCpService.UpdateIvt(ivtDataParam(dao,ChangeIvtUtil.SUBWAREHOUSING_ADDIVT_QTY,null)); + + // 3)解锁终点 + unLockNext(dao.getStruct_id(),dao.getStoragevehicle_code()); + } + } @NotNull @@ -378,6 +614,7 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdisCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) ); // 3.更新明细表 @@ -445,11 +682,11 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl().lambda() - .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) + .eq(StIvtIostorinvdtlCp::getIostorinvdtl_id, whereJson.getString("iostorinvdtl_id")) ); // 4.更新主表 @@ -493,7 +730,45 @@ public class StIvtIostorinvCpServiceImpl extends ServiceImpl row.getBill_status().equals(IOSEnum.BILL_STATUS.code("生成"))); + + if (is_create) mstDao.setBill_status(IOSEnum.BILL_STATUS.code("生成")); + this.updateById(mstDao); } + public JSONObject ivtDataParam(StIvtIostorinvdisCp disDao,String change_type,String sale_id) { + JSONObject ivtParam = new JSONObject(); + ivtParam.put("struct_id", disDao.getStruct_id()); + ivtParam.put("material_id", disDao.getMaterial_id()); + ivtParam.put("pcsn", disDao.getPcsn()); + ivtParam.put("quality_scode", disDao.getQuality_scode()); + ivtParam.put("ivt_level", disDao.getIvt_level()); + ivtParam.put("change_qty", disDao.getReal_qty()); + ivtParam.put("change_type", change_type); + ivtParam.put("sale_id", sale_id); + + return ivtParam; + } + + /* + 解锁终点 + */ + public void unLockNext(String struct_id, String storagevehicle_code) { + + StIvtStructattr attrDao = iStIvtStructattrService.getById(struct_id); + if (ObjectUtil.isEmpty(attrDao)) throw new BadRequestException("仓位不存在!"); + + attrDao.setInv_code(""); + attrDao.setInv_type(""); + attrDao.setInv_id(""); + attrDao.setStoragevehicle_code(storagevehicle_code); + attrDao.setLock_type("1"); + iStIvtStructattrService.updateById(attrDao); + + } + } 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 f337e296..fad48322 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 @@ -6,6 +6,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.nl.common.utils.IdUtil; import org.nl.common.utils.SecurityUtils; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; 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; @@ -44,6 +46,10 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl list) { if (!CollectionUtils.isEmpty(list)){ @@ -67,13 +73,18 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl().lambda() + .eq(MdMeMaterialbase::getMaterial_code, item.getString("material_code")) + ); + StIvtIostorinvdisdtlCp disDtlDao = new StIvtIostorinvdisdtlCp() .setIostorinv_id(json.getString("iostorinv_id")) .setIostorinvdtl_id(json.getString("iostorinvdtl_id")) .setIostorinvdis_id(json.getString("iostorinvdis_id")) .setIostorinvdisdtl_id(IdUtil.getStringId()) .setSeq_no(new BigDecimal(1)) - .setMaterial_id(item.getString("material_id")) + .setMaterial_id(mataDao.getMaterial_id()) .setPcsn(item.getString("pcsn")) .setQuality_scode("00") // TODO 暂时写 .setIvt_level("01") // TODO 暂时写 @@ -88,16 +99,17 @@ public class StIvtIostorinvdisdtlCpServiceImpl extends ServiceImpl().eq("bucketunique", item.getString("bucketunique")) + MdPbBucketrecord.builder() + .storagevehicle_id(Long.getLong(vehicleDao.getStoragevehicle_id())) + .status("02") // TODO 暂时写死 + .storagevehicle_code(vehicleDao.getStoragevehicle_code()) + .instor_optid(Long.getLong(SecurityUtils.getCurrentUserId())) + .instor_optname(SecurityUtils.getCurrentNickName()) + .instor_time(DateUtil.now()) + .build(), + new QueryWrapper() + .eq("bucketunique", item.getString("bucketunique")) ); }); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java index 3147a5c9..81a0a8d9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/impl/StIvtIostorinvdtlCpServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.storage_manage.productmanage.service.iostorInv.impl; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -74,7 +75,9 @@ public class StIvtIostorinvdtlCpServiceImpl extends ServiceImpl - - - - - - - - - - { + crudStorattr.getStor({ 'stor_type': '4' }).then(res => { this.storlist = res.content }) }, @@ -377,7 +355,6 @@ export default { 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 } }, 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 fda420da..5063f875 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 @@ -208,6 +208,18 @@ + + + @@ -285,6 +297,14 @@ export default { } }, methods: { + disabledIos(row) { + debugger + if (row.iostorinvdis_id === undefined) { + return false + } else { + return true + } + }, open() { crudSectattr.getSect({ 'stor_id': this.storId }).then(res => { this.sects = res.content @@ -381,6 +401,9 @@ export default { this.form.tableMater.splice(-1, 0, item) } }, + deleteRow(index, rows) { + rows.splice(index, 1) + }, tableRowClassName({ row, rowIndex }) { row.index = rowIndex }, @@ -441,9 +464,14 @@ export default { return } crudProductIn.confirmvehicle(this.form).then(res => { - this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - this.form.vehicle_code = '' - this.form.bucketunique = '' + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id }).then(res => { + this.form.vehicle_code = '' + this.form.bucketunique = '' + this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('组盘成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + }) }) }, @@ -487,25 +515,6 @@ export default { row.qty = row.storage_qty this.bucketuniqueObj = row }, - divPoint() { - if (!this.form.point_code) { - this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO) - return - } - if (this.form.tableMater.length === 0) { - this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO) - return - } - crudProductIn.divPoint(this.form).then(res => { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { - this.openParam = res - }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.crud.notify('设置起点成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - }) - }) - }, divStruct() { if (this.dis_row === null) { this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO) @@ -519,17 +528,16 @@ export default { if (this.form.checked) { this.divBtn = true + debugger this.dis_row.stor_id = this.stor_id this.dis_row.sect_id = this.sect_id crudProductIn.divStruct(this.dis_row).then(res => { - /* crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.divBtn = false - this.crud.notify('分配货位成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) - })*/ }).finally(() => { this.divBtn = false }) @@ -539,23 +547,36 @@ export default { } }, unDivStruct() { - if (this.form.tableMater.length <= 0) { - this.crud.notify('不存在载具明细!', CRUD.NOTIFICATION_TYPE.INFO) + if (this.dis_row === null) { + this.crud.notify('请先选择一条分配明细!', CRUD.NOTIFICATION_TYPE.INFO) return } - const flag = this.form.tableMater.some(mater => !mater.struct_code) - if (flag) { - this.crud.notify('明细存在未分配货位!', CRUD.NOTIFICATION_TYPE.INFO) - return - } - // 如果勾选了,直接跳后台 - crudProductIn.unDivStruct(this.form).then(res => { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.dtl_row.iostorinv_id, 'open_flag': '1' }).then(res => { + + crudProductIn.unDivStruct(this.dis_row).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('取消成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }) - crudProductIn.getDisDtl(this.form.dtl_row).then(res => { - this.form.tableMater = res - this.crud.notify('取消分配成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) + }) + }, + divPoint() { + if (!this.form.point_code) { + this.crud.notify('请选择入库点', CRUD.NOTIFICATION_TYPE.INFO) + return + } + if (this.dis_row === null) { + this.crud.notify('请先选择一条明细!', CRUD.NOTIFICATION_TYPE.INFO) + return + } + this.dis_row.point_code = this.form.point_code + crudProductIn.setPoint(this.dis_row).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.dis_row.iostorinv_id }).then(res => { + this.openParam = res + this.form.tableMater = [] + this.dis_row = null + this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }) }) } diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue index 95aaa188..f426a84b 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/ViewDialog.vue @@ -235,13 +235,13 @@ export default { this.currentDis = current }, queryTableDtl() { - crudProductIn.getIODtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { + crudProductIn.getIosInvDtl({ 'iostorinv_id': this.form.iostorinv_id }).then(res => { this.tableDtl = res }) }, queryTableDdis() { if (this.currentdtl !== null) { - crudProductIn.getDisTask({ 'iostorinvdtl_id': this.currentdtl.iostorinvdtl_id }).then(res => { + crudProductIn.getIosInvDis({ "iostorinvdtl_id": this.currentdtl.iostorinvdtl_id }).then(res => { this.tabledis = res }).catch(() => { this.tabledis = [] diff --git a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue index e6b3397f..0c0a426c 100644 --- a/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue +++ b/mes/qd/src/views/wms/storage_manage/product/productIn/index.vue @@ -141,17 +141,17 @@ > 分配 - - 作业任务 - + { + crudStorattr.getStor({ 'stor_type': '4' }).then(res => { this.storlist = res.content }) }, @@ -341,7 +341,7 @@ export default { this.crud.notify('请选择一条单据', CRUD.NOTIFICATION_TYPE.INFO) return } - crudProductIn.confirm(this.currentRow).then(res => { + crudProductIn.confirm({ 'iostorinv_id': this.currentRow.iostorinv_id }).then(res => { this.crud.notify('单据确认成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) this.crud.toQuery() }) 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 5aaf216f..57dccafb 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 @@ -66,7 +66,31 @@ export function getSect(data) { export function divStruct(data) { return request({ - url: '/api/stIvtSectattr/divStruct', + url: '/api/productIn/divStruct', + method: 'post', + data + }) +} + +export function unDivStruct(data) { + return request({ + url: '/api/productIn/unDivStruct', + method: 'post', + data + }) +} + +export function setPoint(data) { + return request({ + url: '/api/productIn/setPoint', + method: 'post', + data + }) +} + +export function confirm(data) { + return request({ + url: '/api/productIn/confirm', method: 'post', data }) @@ -81,5 +105,8 @@ export default { vehicleCheck, confirmvehicle, getSect, - divStruct + divStruct, + unDivStruct, + setPoint, + confirm }