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 f0615451..27cdf427 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/aps_manage/mps.xls differ 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 }