From ce3324a8afb74436fb4a28ef84c3606e0a8f7dfd Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Tue, 4 Jun 2024 10:37:35 +0800 Subject: [PATCH] =?UTF-8?q?fix;=E8=A1=A8=E5=A4=84=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pdm/ivt/rest/StPointIvtController.java | 10 + .../pdm/ivt/service/StPointIvtService.java | 3 + .../service/impl/StPointIvtServiceImpl.java | 59 ++++++ .../b_lms/pdm/ivt/wql/ST_IVT_STPOINTIVT.wql | 61 ++++++ .../org/nl/b_lms/sch/tasks/SurfaceTask.java | 190 ++++++++++++++++++ .../slitter/auto/AutoSendAirShaftAgvTask.java | 2 +- .../slitter/auto/AutoSlitterDownAgvTask.java | 2 +- .../org/nl/wms/basedata/master/wql/mdpb.xls | Bin 164864 -> 166912 bytes .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 248832 -> 252416 bytes .../src/views/wms/st/inbill/DivDialog.vue | 5 +- 10 files changed, 329 insertions(+), 3 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/SurfaceTask.java diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/rest/StPointIvtController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/rest/StPointIvtController.java index 8355f0d0f..2f3b9de2c 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/rest/StPointIvtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/rest/StPointIvtController.java @@ -1,6 +1,8 @@ package org.nl.b_lms.pdm.ivt.rest; +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pdm.ivt.service.StPointIvtService; @@ -54,4 +56,12 @@ public class StPointIvtController { stpointivtService.deleteAll(ids); return new ResponseEntity<>(HttpStatus.OK); } + + @Log("表处下料") + @PostMapping("/rollDown") + @SaIgnore + public ResponseEntity rollDown(@RequestBody JSONObject param) { + stpointivtService.rollDown(param); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/StPointIvtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/StPointIvtService.java index 2d9fb7e77..fecb5472a 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/StPointIvtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/StPointIvtService.java @@ -1,5 +1,6 @@ package org.nl.b_lms.pdm.ivt.service; +import com.alibaba.fastjson.JSONObject; import org.nl.b_lms.pdm.ivt.service.dto.StPointIvtDto; import org.springframework.data.domain.Pageable; @@ -67,4 +68,6 @@ public interface StPointIvtService { * @param ids / */ void deleteAll(Long[] ids); + + void rollDown(JSONObject param); } \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/impl/StPointIvtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/impl/StPointIvtServiceImpl.java index aa459185c..5fca064db 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/impl/StPointIvtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/service/impl/StPointIvtServiceImpl.java @@ -4,6 +4,7 @@ package org.nl.b_lms.pdm.ivt.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -11,12 +12,14 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.pdm.ivt.service.StPointIvtService; import org.nl.b_lms.pdm.ivt.service.dto.StPointIvtDto; +import org.nl.b_lms.sch.tasks.SurfaceTask; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.basedata.st.service.impl.UserAreaServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,6 +37,9 @@ import java.util.Map; @Slf4j public class StPointIvtServiceImpl implements StPointIvtService { + @Autowired + private SurfaceTask surfaceTask; + @Override public Map queryAll(Map whereJson, Pageable page) { //获取人员对应的区域 @@ -142,4 +148,57 @@ public class StPointIvtServiceImpl implements StPointIvtService { wo.update(param); } } + + @Override + public void rollDown(JSONObject param) { + String device_code = param.getString("device_code"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + JSONObject device_jo = WQLObject.getWQLObject("st_ivt_stpointivt").query("point_code = '" + device_code + "'").uniqueResult(0); + if (device_jo == null) { + throw new BadRequestException("未查询到设备号为:【" + device_code + "】的设备!"); + } + String down_pcsn = device_jo.getString("down_pcsn"); + String sort_seq = device_jo.getString("sort_seq"); + if (StrUtil.isEmpty(down_pcsn)) { + throw new BadRequestException("当前表处机上的库存为空,请检测系统库存,并手动进行维护!"); + } + + JSONObject task_jo = new JSONObject(); + task_jo.put("material_code", down_pcsn); + task_jo.put("product_area", device_jo.getString("product_area")); + //查询可用的满轴点位 + JSONObject full_point = WQL.getWO("ST_IVT_STPOINTIVT") + .addParam("sql_str", " ORDER BY abs(" + sort_seq + "-sort_seq),point_code") + .addParam("product_area", device_jo.getString("product_area")) + .addParam("flag", "2").process().uniqueResult(0); + + if (ObjectUtil.isEmpty(full_point)) { + throw new BadRequestException("未查询到可用的满轴空点位!"); + } + //查询可用的空轴点位 + JSONObject empty_point = WQL.getWO("ST_IVT_STPOINTIVT") + .addParam("sql_str", " ORDER BY abs(" + sort_seq + "-sort_seq),point_code") + .addParam("product_area", device_jo.getString("product_area")) + .addParam("flag", "3").process().uniqueResult(0); + + task_jo.put("point_code1", device_jo.getString("down_point_code")); + task_jo.put("point_code2", full_point.getString("full_point_code")); + task_jo.put("truss_type", "1"); + task_jo.put("task_type", "010901"); + if (ObjectUtil.isNotEmpty(empty_point)) { + task_jo.put("truss_type", "2"); + int num = empty_point.getIntValue("num"); + //缓存架最大存放空轴数量 + int max_num = 3; + int layer_num = max_num - num; + task_jo.put("point_code3", empty_point.getString("empty_point_code") + "_" + layer_num); + task_jo.put("point_code4", device_jo.getString("down_point_code")); + task_jo.put("task_type", "010902"); + } + + //创建并下发行架任务 + surfaceTask.createTask(task_jo); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/wql/ST_IVT_STPOINTIVT.wql b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/wql/ST_IVT_STPOINTIVT.wql index a17dd5281..d8b404c86 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/wql/ST_IVT_STPOINTIVT.wql +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pdm/ivt/wql/ST_IVT_STPOINTIVT.wql @@ -19,6 +19,7 @@ 输入.is_used TYPEAS s_string 输入.mes_used TYPEAS s_string 输入.in_area_id TYPEAS f_string + 输入.sql_str TYPEAS f_string [临时表] @@ -61,4 +62,64 @@ ENDOPTION ENDSELECT ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + ivt.* + FROM + ST_IVT_StPointCacheIvt ivt + WHERE + full_point_status = '01' + AND ivt.is_used = '1' + AND NOT EXISTS + ( + SELECT + * + FROM + sch_base_task + WHERE + (point_code1 = ivt.full_point_code OR point_code2 = ivt.full_point_code) + AND + task_status < '07' + AND is_delete = '0' + ) + OPTION 输入.product_area <> "" + ivt.product_area = 输入.product_area + ENDOPTION + 输入.sql_str + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT + ivt.* + FROM + ST_IVT_StPointCacheIvt ivt + WHERE + (empty_point_status = '01' + OR + (empty_point_status = '02' AND num < 3)) + AND ivt.is_used = '1' + AND NOT EXISTS + ( + SELECT + * + FROM + sch_base_task + WHERE + (point_code1 = ivt.full_point_code OR point_code3 = ivt.full_point_code) + AND + task_status < '07' + AND is_delete = '0' + ) + OPTION 输入.product_area <> "" + ivt.product_area = 输入.product_area + ENDOPTION + 输入.sql_str + ENDSELECT + ENDPAGEQUERY ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/SurfaceTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/SurfaceTask.java new file mode 100644 index 000000000..082927402 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/SurfaceTask.java @@ -0,0 +1,190 @@ +package org.nl.b_lms.sch.tasks; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.WQL; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; +import org.nl.wms.pda.mps.service.mapper.HotMapper; +import org.nl.wms.sch.AcsTaskDto; +import org.nl.wms.sch.manage.AbstractAcsTask; +import org.nl.wms.sch.manage.TaskStatusEnum; +import org.nl.wms.sch.tasks.CutConveyorTask; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +@Service +@RequiredArgsConstructor +@Slf4j +public class SurfaceTask extends AbstractAcsTask { + private final String THIS_CLASS = SurfaceTask.class.getName(); + + @Override + public List addTask() { + /* + * 下发给ACS时需要特殊处理 + */ + JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); + + ArrayList resultList = new ArrayList<>(); + for (int i = 0; i < arr.size(); i++) { + JSONObject json = arr.getJSONObject(i); + + String product_area = json.getString("product_area"); + + AcsTaskDto dto = AcsTaskDto.builder() + .ext_task_id(json.getString("task_id")) + .task_code(json.getString("task_code")) + .task_type(json.getString("acs_task_type")) + .start_device_code(json.getString("point_code1")) + .next_device_code(json.getString("point_code2")) + .start_device_code2(json.getString("point_code3")) + .next_device_code2(json.getString("point_code4")) + .vehicle_code(json.getString("vehicle_code")) + .priority(json.getString("priority")) + .truss_type(json.getString("response_param")) + .remark(json.getString("remark")) + .product_area(product_area) + .build(); + + resultList.add(dto); + } + return resultList; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTaskStatus(JSONObject taskObj, String status) { + WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); // 任务表 + WQLObject pointIvtTab = WQLObject.getWQLObject("st_ivt_stpointivt"); // 表处库存表 + WQLObject cacheIvtTab = WQLObject.getWQLObject("ST_IVT_StPointCacheIvt"); // 表处缓存位表 + + String task_id = taskObj.getString("task_id"); + JSONObject jsonTask = taskTab.query("task_id = '" + task_id + "'").uniqueResult(0); + + if (StrUtil.equals(status, "0")) { + // 更新删除字段 + jsonTask.put("is_delete", "1"); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if (TaskStatusEnum.EXECUTING.getCode().equals(status)) { + // 更新任务状态为执行中 + jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + } + + if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { + jsonTask.put("task_status", TaskStatusEnum.FINISHED.getCode()); + jsonTask.put("update_time", DateUtil.now()); + taskTab.update(jsonTask); + String task_type = taskObj.getString("task_type"); + JSONObject stpoint_jo = pointIvtTab.query("down_point_code = '" + jsonTask.getString("point_code1") + "'").uniqueResult(0); + stpoint_jo.put("down_pcsn", ""); + pointIvtTab.update(stpoint_jo); + JSONObject cache_jo = cacheIvtTab.query("full_point_code = '" + jsonTask.getString("point_code2") + "'").uniqueResult(0); + cache_jo.put("container_name", jsonTask.getString("material_code")); + cache_jo.put("full_point_status", "02"); + cacheIvtTab.update(cache_jo); + if ("010902".equals(task_type)) { + String empty_point = jsonTask.getString("point_code3").substring(0, jsonTask.getString("point_code3").lastIndexOf("_")); + JSONObject empty_cache_jo = cacheIvtTab.query("empty_point_code = '" + empty_point + "'").uniqueResult(0); + int num = cache_jo.getIntValue("num"); + num = num - 1 > 0 ? num - 1 : 0; + empty_cache_jo.put("num", num); + if (num == 0) { + empty_cache_jo.put("empty_point_status", "01"); + } + empty_cache_jo.put("update_time", DateUtil.now()); + cacheIvtTab.update(empty_cache_jo); + } + } + } + + @Override + public void findStartPoint() { + + } + + @Override + public void findNextPoint() { + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public String createTask(JSONObject form) { + WQLObject tab = WQLObject.getWQLObject("SCH_BASE_Task"); + + CutConveyorTask cutConveyorTask = new CutConveyorTask(); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + + String task_id = ""; + + String point_code1 = form.getString("point_code1"); + String point_code2 = form.getString("point_code2"); + String point_code3 = form.getString("point_code3"); + if (cutConveyorTask.isSingleTask(point_code1)) { + throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); + } + if (cutConveyorTask.isSingleTask(point_code2)) { + throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!"); + } + if (cutConveyorTask.isSingleTask(point_code3) && StrUtil.isNotEmpty(point_code3)) { + throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!"); + } + JSONObject json = new JSONObject(); + json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); + json.put("task_type", form.getString("task_type")); + json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); + json.put("point_code1", form.getString("point_code1")); + json.put("point_code2", form.getString("point_code2")); + json.put("point_code3", form.getString("point_code3")); + json.put("point_code4", form.getString("point_code4")); + json.put("product_area", form.getString("product_area")); + json.put("handle_class", THIS_CLASS); + json.put("create_id", currentUserId); + json.put("material_code", form.getString("material_code")); + json.put("response_param", form.getString("truss_type")); + json.put("create_name", currentUsername); + json.put("create_time", DateUtil.now()); + json.put("acs_task_type", "6"); + tab.insert(json); + task_id = json.getString("task_id"); + immediateNotifyAcs(task_id); + return task_id; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, TaskStatusEnum.FINISHED.getCode()); + } + + + @Override + public void cancel(String task_id) { + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + this.updateTaskStatus(taskObj, "0"); + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java index aa845590c..777a87eb2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSendAirShaftAgvTask.java @@ -65,7 +65,7 @@ public class AutoSendAirShaftAgvTask { // 获取任意一条 PdmBiSlittingproductionplan demoPlan = plans.get(0); // 区域(B1, B2, B3, B4) - String area = demoPlan.getResource_name().substring(0, 2); + String area = demoPlan.getContainer_name().substring(0, 2); StIvtCutpointivt deviceCut = cutpointivtService.getOne(new LambdaQueryWrapper() .eq(StIvtCutpointivt::getExt_code, demoPlan.getResource_name())); // 校验是否为一组 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java index 2ff45af49..d17b243df 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java @@ -80,7 +80,7 @@ public class AutoSlitterDownAgvTask { } } else if ("3".equals(cut.getPoint_type())) { // 2、没有位置,就去分切缓存位 - areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("3", "1", "0","0"); + areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("2", "1", "0","0"); } if (areaEmptyNotTaskPoint.size() == 0) { log.warn(cut.getProduct_area() + "该区域暂无位置存放满轴"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls index 2a3d3b4e49e52c9455e736683e0ba7f8d58871e7..c692d72a24dd45b7b04f6c954a890a92e911f039 100644 GIT binary patch delta 20182 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 J{q>1m{|7D`78?Kn delta 18449 zcma)E31C&lxt??G&CSh1$OcJBAPEq{CJBUuO$fL=YptTMzEafIt+o1|ZK+C&h+N#N zEsDaZw`#3)Uo?uOm1nI87Q0~u1*=G{xYa(F5?g6&UGl!~pE+~Rx%b94$CGpanSZ`- z{{PJU^UvhUny;0vxu*1n&Iz+TWqvA^nu*T|Nbe604zh3oh+67wO&$hOf~A7RIR=PrR}&+FHY&+#7KR1@kD)mBCQ`l*;>>OrkZqD z@l?G8&(~1aSX`g%RX_9lGsP`MUX$KfUiWYQ-d%o7zGg!!dVFXQX8f3a$4_!*%K=rZ zn)JZ1I*}ymSxLSvcqbgSV5h0D~^HwCi%R(yg@%-G16<@P(zT) z;dKRw8fJwNv#OsGStl?o}t^qiZX^*O{t%*bWr0QLia$&~H|b zbY5<$>hN0hiB;Bv`i|-n{qeHlu6`40#^@8v=%NGAZPJz1gBy}2;JKVuMXdE&@>&(C=_rRj4d9POE5^t5-YBJ3R8=i(S=gdd&0-Hp zz$SH>=2qOA+NR&!>b)-WjLR=>0aFgq3CRzbExQb|b z)G||U2paPAO?ke)BhE1(osk{^D5s))2+NFz@`>|ZZ93{anq!zLFID>cBc^t(_aYsz zE;Jp8xI9)~rPtNh>Cq!cV*FI)dBL>}NRy^BW?ad8&w0HZSKwL|jGyQ@flqUslMcq= z;RVOf=)4XY_ZJ!uBu2R-j=tV}9Aj94@lz^2idtZRN~AnOU_D{V;fceo#n!vVvWR|a zD4fYMpi44=D*_9WrUJtUmbEC=5+^VgL|%aF- z86P0UW+#SBP7Bl1NF=aG#^mT^h|cm#{kc(f`mjbu2n}? zoT)k0Y<3HCfP&@uaEx?c!eFVo>StzGdRMwuo90$}>qP5%Xif2Mkl*WtZUcTdYG@Q`ILp^wPm?~O zr&2#Rr-`NBO?vy>PVZ*@$>~$PtR6FOiuW~#i@xb?b5pvjr&fB$zTRqUllql;W4+sA zy2sAz)VtgMVa7zkEMFS{HflZx?{l>F% zf*F}A4Cs{dW`A$LecD1 zBg4`jsFG=zs#D3JPdx%yA8O5n7TY$c234xpEgCtO9Uc`b5XN+)F)W;cLYg)VIjh5- z(SKWSM`Nb#D;(>-=bd&|_A2<}lns=V-qoKz``owIR-D7K>uxh;%Rc?NvoBe-b_vTi z++)gKJi%Mh`rj<8P&NH5OL*sAGxpLEr(dP2)tap=De~r>z_#a~G;#S=s$9KsfTg~7 z>GfaI$DZ2N_>p3y^8-f}votkuF883DJas;G^mC^j*Z;z)wTb@sKlyZ`Xg=yz^zT1w zbc;8s|Lw~smy8$$%g@v=PFKKH>ijP%wRxn{CqCR-O_&bcZNR;7ol;BI>-GIV(%ZIt zsDISD%e~BBQK!^ayo7}E)LS`M8a4IsmdYuoURu4UO5t8?Bhk`eU>re;Uj~C_#mgxn z=_Lp|eMtEhq6cK_HK{FzwUI^HYlZwZ92MBRceV@fHypVeCJ6%#Z;@HN*r&UO{65b88jv z3?&1MWy=DO7GS!UgrfzRn4=3~j>*By1cYpiy|4vs7EmT2rkuScXmdf(mK@M1W~;+& z6-@5ah}mj7It`$$1wpZ{bbW}9F# zbz~pg9A;Y-Gb3+-Z-@sOL%pGP2ih*69ODFSccAT2P=|@UPQ9)EDc3tHxXdI%ZikXg zP#8Q-*l zItL?HO8U$Y5-mN58OJU#EaaBc;sovi#BpF|L@a|ifOy14410wdC87By)<-47FsaHQ zvC{-hqV1cAKE{O%5xEFkp;ZJ|{smWwv?)T#E|p>b z+duB7K7XfDZ{F=@?w2>F5}7?%Z1`5p%-ySk>s8D?j%d!@Cl!|->Tu@%&Rwrr9nRdR zWCdaiA39H|7L*yuhs2e{NC`+>9*mUCKpf}9B1jDOrZNSI;eEBw$*$DXxCeS!$8=|( zL~tYd>KVjl(=LJ9sFaLJMKLL*GW!*SHYpe~NTC)I6j>%H7_^P#W70568z~W!k};_$ zCZ*JV#RyIYh7>ZSg`o%x`!fjD2DAu{+ocY35-CE76rn_lP$C6mHz^ooNKq*iOzD0v zDI~j{0>iVa(=w#sr)O0r6qB*aqL`Ed%ydh^xI>Csp(qxL85XoyD7u_Piclg$D3PHH zGe=xnjNbho+XrI>;}R+Ag#xP+>bk8a(l<2haS|y)i4>tkicliMEVQGa7`MofX%dPO zp_pw!ON3&MlSnbwNu&ttND)e;m8;f+3O=V}+s&6#G@Lr6>c%GisreI4c%8iL-)r8PbTE(|9*i46Z~qzoF8BCI4uD3Ri$P$dP|B~nZkib|n4*}$MKYD8ts zh)Q7yx?L$RJCHIwKiIGS%TiQXifKYo1&RaeW0s-{6uZ?DCnX?#+)2q;T~SO*0c9yP zX$0398qp~X)futk6bn-=R-Ec2I_fkh(NCXn68#iPG~$z}BSj6Kq?j%g+)W-(r`vWl zV#FCv%Fv24ok%OfN?LIi>X;JqpyYtSbM+?t41uo|1I~ub8Br?+e9B2Q;L}c`0bv~t z_*4-8c;vEQodZ=`z(jx)T|zNJC_ZChMhHb<`3QN_fsaPWn-1%uKH~Y!es!*87-<e~s|Upk3KWVjrXCD0sDOdTA} z2_qWS6kskwLsB&0Ns3uQ(Ey5lYPkh%0L3n6eFG?VIX^XkB3j2KJMdG3yoxW9f$@*I zIVolf#VDcplBF0W6f2xWii@2@im;9pp+rBegeHw(?oNg|!ocHqrqwq*x72QZ(U7in&73Box8mZi@M-De9+;9O#9vX~L_BN~Bn0DMnk0 zc|yUnlNZ%xDC0}x*~v@lawjF!%MmFVlZqlzW;EW#AJr9>f_W~jI9w>k2*s5abc|43 zqrqwQHEx;Aj5oNX#TKJTy0^Rh2k0~k>V>(B1Kq7ickWD?!D*v451eY zbc-ObwXItO`C2Ct`8p>NIjkdcD6#YFpvjlqiYFO*g@K1cFRJS;3J--|%BUNhNQ(7N zO5*i|bwx3W6dRyPim`Z-Vxdrs6$))p#)=U)Iw=8^o18?3%*{?DMJSOXi#k$_!xI#1 z3d4TBCyg)+Jo|b@eTy4W&ITTS{Yib>!tem>|I~M!l#EG5 z>UH&9SC>+6sP91{#RNQQ#1Ue|1flr8)tn#DcNkx!0J1GUJ-$})ge(a<)q@OscL_MJozi)49*UyxC=s|9` z`?qbWPQcJD&~;3RCd zx8m;%LBk?Q4?2m*23sNVwI}d=2zR*E-X<~$6Y$@5wGFjKN~nh+2knyTF=@v$o&*B< zV+iFb!Azn&Lr{Db56Kia*FP7CqyRpQ3IZn4>|xXxz$D}lFc||Zf)4T0g2%12!Q(D^ zyV_y#ih#F6JpyT~D$f9b`5iCQtCR()6cBEf4G1^N+tn{D2sg?*)GrMPTE;PoEk>uy)Su^?&b$WDuq&cP_L7)^q~ z4ecZ1Q*LIrt4D)Wt3*J4Ye7nKKuRr0i-2&?`U|+O60e3JJ7V4|v$|s!a!7OY`O7?= za;q~QI+<#07>&}yc(1(7YZzvgCI}Gse*}u_R9KyfqQf0rzRqx~Gg)-F1^ZPLCnF=V z(ke|A3%Q9h7IFiXOIl@hrwJf;L;0lK&u}1iiVjc6@^!c&d5E!jx+rl+lCQ*V1%YOW z4!0Gt-b?4XFQ87Bbe{VH(|PU*ay!oqpSm*z4+(xoNaOF2IXacPMTt2&I~LbrT&7Ns z=rGA<$KpE7lBqLGI>s#d*NWqY88QbjkDN0>Fkrq*<=Fzre0Qf)3UnH+&K%KU#!8(y zDN|13%oQD`ocTJ;8L2aG;nq_yN|`j~D>3V%(%}NctS`Sq%~of==$kt2nz2WzF$b`y{4=p8`9reF_M=HD@^lyFS3tr|fs}y6 z$-&s~Ar#$(B|VUeAUzR8Ef4;=OTl!jT8yQ5uanZKd(ufIkbdW+Qb_7f1>9CHa#NVSLzhx9m~4 z>iJlJt`m44=KNR^9{#=C$6svLLhl-68`s&ZB3O!j)u-?N)zXfiNW%pFs&X@q15Fx{ zz%gciBd)c5y64wR8-Ie0a(+FR&OZGkTYn#P;-p*^`}COKES*)jJy$$B!yL|X#k&A` zsWG3c-aY#6-^?F^n+si^PVJoJt<;@6>$+BoRcW|mr5t+D9cj4Z66^;w_R=@Xbrw$L z_!_vx_34#6yOv%n$tj&$0;k?5C?!C-Pn=5EmjET9!(zeZhv)YkZ|1hx5gbB3UA zk9M_(=sdGG=sZ3T(fLQVgg)cZ#=3kQ&Z<7WA%?>fR)bR(!zmM-*9+os?ZkWd?V@8g zi+$y2d5w69c9)~&7F(Xi-r|t8tsJ)HzjH3JefoP2Ygi0xn8O+dKi!V+3m88QE9fUK z#eI6(V?nf7PlK%yT}VJtIP&{>84Y z_El;&KGXMAu7~`hRoKHSqUo01b+5 z)~OG&hyk-tzq-2%-+vqPc-y$k&~j)#rWJkqoX4qs>*H;ip|!aKV}h{>TcCTfnY$OC zHeoyRQ}m59iV4M?s#N+o7Sg}77%;yG7X#!M8HmAZz(c@rHQ*UwxEk;)WZ`O12ZzgQ zARVcL)5FD}4o(jjgF19JTny^q$Z#>JgAvDst3e%d)^Ihb!;A`7gF5_CB3upX5P!^S zz$nCgs81*NES}USpBc02(TShn=rMohF*EAZtM*LtF#q4$^uZbu8dYx&_ zx7&!;Nv~SoZY`uV7Nh*0G3DyhF9E4fS3KD|JZ#^D_CJb?@6&}iVS){i~;L34=t8s5O~f;m0LA#hHQAp+vV&~u_$+OPRt*Gb`= zZg%}?c4+Kpv!KyK&G5-N`0kjQqs@iqs7^k0OQXrI#)Bm{yPCl4s(E~?|;46|H~ zgEPWqZycNvE~?|;kZ@5Q2Z!V@hIB%op16Ne#tgdgzzY|#@xU{S*mz)t3(xpGEWUsV zz`9e7kQXo((!Udc+R;V=koiL^zs?l~Aby=I3_$I%0Ms4}K<#iy7=YSgL>PeDVMG{! z+F?i-fZAOET1*Stafbn@Jr;o4V*#i=7J%Ag0cfK5^uFIm1JFctqHqA3B-+!S<&^#S zv(W%F32h1opvltaThC7FH34XHEC5Z0GfV)Q3`c|kXmUQDF8#yt?I!1);@&)i)fDKi zMNs=jcPA$;#FMsIGge?zqEf0&eJS@K@{L1&z0nR&B ziyc`V|JKOrM4NDF>*OCY!;#e)8(E#Pk<}R+S)H+w)rk&=BdZe~4o6mJY-Dx1kwpVK z)v?i$)fpREow1SC85>!hv5_@h-usFJ(UCPBohUrAW{CE{0gkLu&$rGuBZ2R32HM;& zo}GbCpRdM?XRA?OC^_vitj|w6-Hf)b*l6o=qpb_h2|2nPN0)H4S&puP95czW;f1b6 zYt(u8$WG1#@EYmlOaNc+_8&6=d;`wXBSX`!W8Koxi+~cY#@!C3JBHFdBubB<{ON^g z!0iEw3AjB#2?K5qP{M%Q14F}r+XF-M`#8(=@kQ=pf{bC7L!agPNDs^c`daY|_yt2dhF4oPjKGe9e2m>j&Sct0|Cd=vUt8os>~0 zOFzfLN@83(RBECZ|G77kj&S2?7`gEb8M*N^n;?D@GfYRg;VsmM=l*;oa*S~Y+oqU} zMj2X#8;!CdT3vXs7r8_K!M3^~whQ{8Xmkt=t?@qtz3?E{Y`*;pXAifF#vYCZZWmMf z@qxyI9vmE4(rrc%b-4j7_6C4xB#t8f-~Bv(<|Z&YM%KQ0Uh9>jR|$)6RYzF8O0oE} z=3qgO_{-7`Gm_XxZr?7EHdQi0kG5^9(8e7`=-Xp$s$Cmy;Wnrb**4t5g>BmY8s({R zZE9jXHL*5*fBj5b+B+V2w6+$Sx2Y2>dTq>#Id6TYt;G3d1T?>{PO_RKMDz33-bdbA zg!fu}sIAqE1|GI-aNGTnG5+HZeH(N9%|p>S&MiiKj_>^2Cn7O`n}~S*k$;cI0B#bD zhns{shyhJtj=sI${ylhmqoH@J`k1w5bjFOhT&vEqW-+uxq(zCP~#pqFiqg}rQZ zy=;?So@aa6meb2U@Ar0xYw-jyo3(fX(89HN0?=~SVtvdYL)zLwZkz5MtSbqp+2ey4 z-Z#~FZNnJ0T=`8$dn~^?ul#=RXp|3n^Fxg6(H;x4YdvpLr1U}0!)(Z&>3a_$U~tDx zTRYG@Gn_kO!?^>tI`-`1gva$L*rqe7y99rmkBs;1BMFZSQlP?=i_<8oGAHRRnH;Wq z%&^u2Wd-iws=z__L^T8Fm?wML*Gs&y#S8pubszral4&nZ#J{`2!&eWPH$J6rL4vwD z{W1;>64~=hy$0QR$J8zNmwLx|R}YqXTL#PgY)kRS(#xNow7qo8?Nj~VB(h)X^naDz zHPbKMvUIwCOmfS%ZohBV=*xRwKKT9)Zy~VPeD}bFdD9*?pZ8vV>?QYX`RZr=FDA3w z#(E2HzQDgR&3~7LJF@K8FYss1ro@{m%WT|pa8sUVpY!otfV&s>Lfou70?%yvLcde6 zPNcN(LVvbMXHZ&mp?{P}7gBmOsJntv`9)S!Q~Jn7{%N9l7o|->9sfk09SEdHDRnNl z?Rd(cT^2|@T+VI^q<5v=a=*5T{Y+rkCvg|yPT^)*8qaLY7ya4Z`}dxChqr!N`sNk> zMX4$jZ#z1>a)tlCzg1;dUhJ>-Ur1;Fd9nXbZ$kFaNDfbkT##M929L|L zhxpi#U49uJcV-Xq@j!O@<#_DO9^zwvcKH=xeGPQ4BqFS}SNdmo*JYPq37vPchxqWb z%df(tc*~)y{4&3s)?SVlf!D{^vSb}fuE%`??)A909CeNVt|wJIcdEf%i<=w#?8#sC jSG2JamxvzR{5%`aIk@NIo`?Hz-1D>ET7Pi;vdaGl%8M$w diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 1f6141c63b90620f94517e632390579ffc1dce02..1d4c3fdf2167c207ff3ebc61e30d6dbcc5a210ce 100644 GIT binary patch delta 9945 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 E0hS81bpQYW diff --git a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue index 53a4a205d..184ad3321 100644 --- a/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue +++ b/lms/nladmin-ui/src/views/wms/st/inbill/DivDialog.vue @@ -26,7 +26,7 @@ 全部分配 - 关闭 + 关闭 @@ -292,6 +292,7 @@ export default { this.form.dtl_row = null this.sectProp = null this.sects = [] + this.sect_id = null this.$emit('update:dialogShow', false) this.$emit('AddChanged') this.crud.refresh() @@ -387,6 +388,7 @@ export default { }) }, allDivStruct() { + debugger if (!this.sect_id) { this.crud.notify('请先选择虚拟库区区域!', CRUD.NOTIFICATION_TYPE.INFO) return @@ -399,6 +401,7 @@ export default { crudRawAssist.getIODtl({ 'bill_code': this.openParam[0].bill_code, 'open_flag': '1' }).then(res => { this.openParam = res }) + this.crud.notify('分配货位成功!', CRUD.NOTIFICATION_TYPE.SUCCESS) }).finally(() => { this.allDivBtn = false })