From c09c3c926ead219c53e4d958cc686d34fb793270 Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 27 Jun 2023 09:09:12 +0800 Subject: [PATCH] =?UTF-8?q?rev=EF=BC=9A=E5=8D=8A=E6=88=90=E5=93=81?= =?UTF-8?q?=E6=8B=BC=E7=9B=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/AcsTaskEnum.java | 3 +- .../org/nl/wms/storage_manage/IOSEnum.java | 2 +- .../storage_manage/semimanage/TASKEnum.java | 4 + .../StIvtShutframeinvBcpController.java | 15 +- .../IStIvtShutframeinvBcpService.java | 2 + .../shutFrame/dao/StIvtShutframedtlBcp.java | 2 + .../mapper/xml/StIvtShutframeinvBcpMapper.xml | 1 + .../impl/StIvtShutframedtlBcpServiceImpl.java | 28 +- .../impl/StIvtShutframeinvBcpServiceImpl.java | 257 +++++++++++++++--- .../semiproductShutFrame/AddDialog.vue | 6 +- 10 files changed, 280 insertions(+), 40 deletions(-) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index 4a9cc7d1..31c32c7d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -36,7 +36,8 @@ public enum AcsTaskEnum { TASK_STRUCT_IN("9","入库-生产入库"), TASK_STRUCT_OUT("10","出库-生产出库"), TASK_STRUCT_CHECK("14","盘点任务"), - TASK_STRUCT_SHUT("15","拼盘任务"), + TASK_STRUCT_SHUT("15","拼盘任务出"), + TASK_STRUCT_SHUT_IN("16","拼盘任务入"), TASK_STRUCT_CP_IN("11","入库-成品-生产入库"), TASK_STRUCT_CP_OUT("12","出库-成品-生产出库"), TASK_STRUCT_CP_CHECK("13","成品-盘点"), 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 09445b0e..a27e9273 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 @@ -31,7 +31,7 @@ public enum IOSEnum { //订单/发货单 状态 ORDER_STATUS(MapOf.of("生成", "10", "提交", "20", "发货中", "30", "确认", "99")), //锁定类型 - LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2","盘点锁", "3","损溢锁", "4","其他锁","99")), + LOCK_TYPE(MapOf.of("未锁定", "0", "入库锁", "1", "出库锁", "2","盘点锁", "3","损溢锁", "4","拼盘锁","5","其他锁","99")), ; private Map code; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java index e9a59faa..1d3d8057 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/TASKEnum.java @@ -36,6 +36,10 @@ public enum TASKEnum implements FunctionStrategy { IStIvtShutframeinvBcpService bean = SpringContextHolder.getBean(IStIvtShutframeinvBcpService.class); bean.taskOperate(form); }), + SHUT_TASK_IN(type -> AcsTaskEnum.TASK_STRUCT_SHUT_IN.getCode().equals(type), form -> { + IStIvtShutframeinvBcpService bean = SpringContextHolder.getBean(IStIvtShutframeinvBcpService.class); + bean.taskOperate2(form); + }), CP_IN_TASK(type -> AcsTaskEnum.TASK_STRUCT_CP_IN.getCode().equals(type), form -> { IStIvtIostorinvCpService bean = SpringContextHolder.getBean(IStIvtIostorinvCpService.class); bean.taskOperate(form); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/controller/shutFrame/StIvtShutframeinvBcpController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/controller/shutFrame/StIvtShutframeinvBcpController.java index 780a7c04..a78945bf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/controller/shutFrame/StIvtShutframeinvBcpController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/controller/shutFrame/StIvtShutframeinvBcpController.java @@ -1,6 +1,7 @@ package org.nl.wms.storage_manage.semimanage.controller.shutFrame; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.ApiOperation; import org.nl.common.anno.Log; @@ -23,6 +24,7 @@ import org.springframework.web.bind.annotation.*; */ @RestController @RequestMapping("api/shutframe") +@SaIgnore public class StIvtShutframeinvBcpController { @Autowired @@ -75,11 +77,20 @@ public class StIvtShutframeinvBcpController { } @PostMapping("/confirm") - @Log("拼盘确认") - @ApiOperation("拼盘确认") + @Log("强制确认") + @ApiOperation("强制确认") public ResponseEntity confirm(@RequestBody JSONObject jo) { shutframeinvBcpService.confirm(jo); return new ResponseEntity<>(HttpStatus.OK); } + + @PostMapping("/confirmOne") + @Log("一体机拼盘确认") + @ApiOperation("一体机拼盘确认") + @SaIgnore + public ResponseEntity confirmOne(@RequestBody JSONObject jo) { + shutframeinvBcpService.confirmOne(jo); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/IStIvtShutframeinvBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/IStIvtShutframeinvBcpService.java index 5676ee57..f579b299 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/IStIvtShutframeinvBcpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/IStIvtShutframeinvBcpService.java @@ -40,5 +40,7 @@ public interface IStIvtShutframeinvBcpService extends IService + order by mst.create_time DESC diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java index c3fbefba..f1962123 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java @@ -2,15 +2,18 @@ package org.nl.wms.storage_manage.semimanage.service.shutFrame.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; +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.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.nl.common.utils.IdUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.service.teamcorrPerson.dao.PdmBiTeamcorrperson; import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.SHUTEnum; import org.nl.wms.storage_manage.rawmanage.service.iostorInv.dao.StIvtIostorinvdtlYl; @@ -21,7 +24,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.Comparator; import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; /** *

@@ -39,6 +45,11 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl list = rows.stream() + .sorted(Comparator.comparing(row -> ((JSONObject) row).getString("canuse_qty")).reversed()).collect(Collectors.toList()); + rows = JSONArray.parseArray(JSON.toJSONString(list)); + StIvtStructattr first_struct = null; StIvtStructattr last_struct = null; int total_qty = 1; @@ -77,7 +88,7 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("拼盘锁")) + .eq(StIvtStructattr::getStruct_id, dtl.getTurnin_struct_id()) + ); + + structattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("拼盘锁")) + .eq(StIvtStructattr::getStruct_id, dtl.getTurnout_struct_id()) + ); + } } return total_qty--; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java index 50560eec..1d5999e7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java @@ -2,8 +2,11 @@ package org.nl.wms.storage_manage.semimanage.service.shutFrame.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -24,8 +27,13 @@ import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.ext.acs.service.WmsToAcsService; 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.product_manage.sch.service.TaskService; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; @@ -46,6 +54,7 @@ import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.StIvtStructivt import org.nl.wms.storage_manage.semimanage.service.structIvt.dao.mapper.StIvtStructivtBcpMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.*; @@ -76,6 +85,8 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl().eq("task_id", task_id)); - String point_code = task.getPoint_code2(); + /* String point_code = task.getPoint_code2(); String vehicle_code = task.getVehicle_code(); pointService.update(new UpdateWrapper().lambda() .eq(SchBasePoint::getPoint_code, point_code) - .set(SchBasePoint::getVehicle_code, vehicle_code)); + .set(SchBasePoint::getVehicle_code, vehicle_code));*/ - List task_list = taskService.list(new QueryWrapper() - .eq("task_group_id", task.getTask_group_id()) - .ne("task_status", StatusEnum.TASK_FINISH) - .eq("is_delete", false)); - - if (task_list.size() <= 0) { - all_finish = true; - } - List list = shutframedtlBcpService.list(new QueryWrapper().eq("task_id", task.getTask_group_id())); StIvtShutframedtlBcp dtl = list.get(0); @@ -123,32 +125,170 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl() .eq("task_id", task.getTask_group_id()) .set("work_status", SHUTEnum.WORK_STATUS.code("移出中"))); - } - if (work_status.equals(SHUTEnum.WORK_STATUS.code("移出确认")) || work_status.equals(SHUTEnum.WORK_STATUS.code("移回中"))) { - shutframedtlBcpService.update(new UpdateWrapper() - .eq("task_id", task.getTask_group_id()) - .set("work_status", SHUTEnum.WORK_STATUS.code("移回中"))); + + // 更新任务为执行中 + taskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) + .eq(SchBaseTask::getTask_id, task_id) + ); + + // 更新主表为执行中 + this.update( + new UpdateWrapper().lambda() + .set(StIvtShutframeinvBcp::getBill_status, SHUTEnum.BILL_STATUS.code("执行中")) + .eq(StIvtShutframeinvBcp::getShutframeinv_id, dtl.getShutframeinv_id()) + ); } } - if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode()) && all_finish) { + + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { if (work_status.equals(SHUTEnum.WORK_STATUS.code("移出中"))) { - shutframedtlBcpService.update(new UpdateWrapper() - .eq("task_id", task.getTask_group_id()) - .set("work_status", SHUTEnum.WORK_STATUS.code("移出确认"))); - } - if (work_status.equals(SHUTEnum.WORK_STATUS.code("移回中"))) { - shutframedtlBcpService.update(new UpdateWrapper() - .eq("task_id", task.getTask_group_id()) - .set("work_status", SHUTEnum.WORK_STATUS.code("完成"))); - JSONObject jo = new JSONObject(); - jo.put("shutframeinv_id", dtl.getShutframeinv_id()); - this.confirm(jo); + // 更新任务为完成 + taskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getTask_id, task_id) + ); + + // 判断出库任务是否都为完成 都为完成才更新明细状态 + List taskList = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_group_id, task.getTask_group_id()) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + ); + + if (taskList.size() >= 2) { + shutframedtlBcpService.update(new UpdateWrapper() + .eq("task_id", task.getTask_group_id()) + .set("work_status", SHUTEnum.WORK_STATUS.code("移出确认"))); + } } } } @Override + @Transactional + public void taskOperate2(JSONObject form) { + String task_id = form.getString("task_id"); + String status = form.getString("status"); + + //根据任务号查询对应的任务组 + SchBaseTask task = taskService.getOne(new QueryWrapper().eq("task_id", task_id)); + +/* String point_code = task.getPoint_code2(); + String vehicle_code = task.getVehicle_code(); + pointService.update(new UpdateWrapper().lambda() + .eq(SchBasePoint::getPoint_code, point_code) + .set(SchBasePoint::getVehicle_code, vehicle_code));*/ + + + List list = shutframedtlBcpService.list(new QueryWrapper().eq("task_id", task.getTask_group_id())); + + StIvtShutframedtlBcp dtl = list.get(0); + + String work_status = dtl.getWork_status(); + + if (status.equals(AcsTaskEnum.STATUS_START.getCode())) { + if (work_status.equals(SHUTEnum.WORK_STATUS.code("移出确认")) || work_status.equals(SHUTEnum.WORK_STATUS.code("移回中"))) { + + // 更新任务为执行中 + taskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.EXECUTING.getCode()) + .eq(SchBaseTask::getTask_id, task_id) + ); + + shutframedtlBcpService.update(new UpdateWrapper() + .eq("task_id", task.getTask_group_id()) + .set("work_status", SHUTEnum.WORK_STATUS.code("移回中"))); + } + } + + if (status.equals(AcsTaskEnum.STATUS_FINISH.getCode())) { + if (work_status.equals(SHUTEnum.WORK_STATUS.code("移回中"))) { + // 更新任务为完成 + taskService.update( + new UpdateWrapper().lambda() + .set(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + .eq(SchBaseTask::getTask_id, task_id) + ); + + // 判断出库任务是否都为完成 都为完成才更新明细状态 + List taskList = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_group_id, task.getTask_group_id()) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + ); + + if (taskList.size() >= 2) { + shutframedtlBcpService.update(new UpdateWrapper() + .eq("task_id", task.getTask_group_id()) + .set("work_status", SHUTEnum.WORK_STATUS.code("完成"))); + JSONObject jo = new JSONObject(); + jo.put("shutframeinv_id", dtl.getShutframeinv_id()); + this.confirm(jo); + } + + } + } + + } + + @Override + @Transactional + public void confirmOne(JSONObject jo) { + StIvtShutframeinvBcp mstDao = this.getById(jo.getString("shutframeinv_id")); + + // 1.找明细表 + List dtlList = shutframedtlBcpService.list( + new QueryWrapper().lambda() + .eq(StIvtShutframedtlBcp::getShutframeinv_id, jo.getString("shutframeinv_id")) + ); + + // 2.找到移出时的两个完成的任务 + List taskList = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_group_id, dtlList.get(0).getTask_id()) + .eq(SchBaseTask::getTask_status, TaskStatusEnum.FINISHED.getCode()) + ); + + if (taskList.size() != 2) throw new BadRequestException("移出任务异常,请检查"); + + // 3.创建回库任务 + String task_group_id = IdUtil.getStringId(); + + for (SchBaseTask taskDao : taskList) { + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_SHUT_IN.getCode()) + .acs_task_type("7") + .point_code1(taskDao.getPoint_code2()) + .point_code2(taskDao.getPoint_code1()) + .task_group_id(task_group_id) + .vehicle_code(taskDao.getVehicle_code()) + .product_area(mstDao.getWorkshop_id()) + .build(); + BussEventMulticaster.Publish(event); + } + + // 4.更新明细任务id为此任务组 task_group_id + shutframedtlBcpService.update(new UpdateWrapper().lambda() + .set(StIvtShutframedtlBcp::getTask_id, task_group_id) + .eq(StIvtShutframedtlBcp::getShutframeinv_id, mstDao.getShutframeinv_id())); + + // 5.下发任务 + List taskListIn = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_group_id, task_group_id) + ); + + taskListIn.forEach(this::sendTask); + + } + + @Override + @Transactional public void issueTask(JSONObject form) { Assert.notNull(new Object[]{form, form.get("shutframeinv_id")}, "请求参数不能为空"); @@ -167,6 +307,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl().lambda() .set(StIvtShutframedtlBcp::getTask_id, task_group_id) + .set(StIvtShutframedtlBcp::getWork_status, SHUTEnum.WORK_STATUS.code("生成")) .eq(StIvtShutframedtlBcp::getShutframeinv_id, mst.getShutframeinv_id())); + + mst.setBill_status(SHUTEnum.BILL_STATUS.code("提交")); + this.updateById(mst); + + // 下发任务 + List taskList = taskService.list( + new QueryWrapper().lambda() + .eq(SchBaseTask::getTask_group_id, task_group_id) + ); + + taskList.forEach(this::sendTask); + + } + + private void sendTask(SchBaseTask taskDao) { + JSONArray param = new JSONArray(); + param.add(JSON.parseObject(JSONUtil.toJsonStr(taskDao))); + // 1.下发任务 + WmsToAcsService bean = SpringContextHolder.getBean(WmsToAcsService.class); + Map result = bean.issueTaskToAcs3(param); + + // 反馈失败报错 + if (!ObjectUtil.equal(MapUtil.getStr(result, "status"),"200")) { + throw new BadRequestException("下发失败:"+MapUtil.getStr(result, "message")); + } + + // 2.更新任务状态 + taskDao.setTask_status(TaskStatusEnum.ISSUE.getCode()); + taskService.updateById(taskDao); } @Override + @Transactional public void confirm(JSONObject form) { Assert.notNull(new Object[]{form, form.get("shutframeinv_id")}, "请求参数不能为空"); @@ -198,7 +372,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl().eq("struct_id", turnin_struct_id).eq("material_id", material_id)); + StIvtStructivtBcp in_ivt = structivtBcpService.getOne(new QueryWrapper().eq("struct_id", turnin_struct_id).eq("material_id", material_id)); if (ObjectUtil.isEmpty(in_ivt)) { throw new BadRequestException("库存不能为空!"); } @@ -208,6 +382,22 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle, true) + .eq(StIvtStructattr::getStruct_id, dtl.getTurnout_struct_id()) + ); + + // 解锁仓位 -- 有料 + iStIvtStructattrService.update( + new UpdateWrapper().lambda() + .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .eq(StIvtStructattr::getStruct_id, dtl.getTurnin_struct_id()) + ); + }); StIvtShutframeinvBcp mst = this.getById(form.getString("shutframeinv_id")); @@ -215,8 +405,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl().eq("shutframeinv_id", id)); @@ -239,6 +429,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl - - - + + +