From a20cdd38f96d2b286dc45a5713f7ead5c74e5be5 Mon Sep 17 00:00:00 2001 From: 18188916393 <2562295436@qq.com> Date: Thu, 14 Jul 2022 16:34:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E5=87=BA=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pdm/rest/WorkProcedureController.java | 8 + .../pdm/service/WorkProcedureService.java | 7 + .../impl/WorkProcedureServiceImpl.java | 11 +- .../java/org/nl/wms/basedata/st/wql/stivt.xls | Bin 249344 -> 257024 bytes .../src/main/java/org/nl/wms/sch/AcsUtil.java | 2 +- .../org/nl/wms/sch/rest/PointController.java | 7 + .../org/nl/wms/sch/service/PointService.java | 5 + .../sch/service/impl/PointServiceImpl.java | 64 +- .../wms/sch/service/impl/TaskServiceImpl.java | 10 +- .../nl/wms/sch/service/wql/QSCH_TASK_01.wql | 2 +- .../nl/wms/sch/service/wql/SCH_Point_01.wql | 124 +++ .../nl/wms/sch/tasks/CallMaterialTask.java | 1 + .../nl/wms/sch/tasks/SendMaterialTask.java | 4 + .../main/java/org/nl/wms/st/in/AreaEnum.java | 35 + .../java/org/nl/wms/st/in/BussConstant.java | 15 + .../org/nl/wms/st/in/WorkProcedureEnum.java | 66 ++ .../in/rest/WorkprocedureiosController.java | 117 +++ .../in/service/WorkprocedureiosService.java | 103 +++ .../in/service/dto/WorkprocedureiosDto.java | 116 +++ .../impl/WorkprocedureiosServiceImpl.java | 326 ++++++++ .../in/service/wql/ST_Workprocedureios_01.wql | 67 ++ .../rest/WorkprocedureiosOutController.java | 145 ++++ .../service/WorkprocedureiosOutService.java | 126 +++ .../st/out/service/dto/WorkprocedureDto.java | 55 ++ .../impl/WorkprocedureiosServiceOutImpl.java | 362 +++++++++ .../service/wql/ST_WorkprocedureiosOut_01.wql | 101 +++ .../src/test/java/org/nl/Test3.java | 324 +++++++- mes/qd/.env.development | 4 +- mes/qd/src/api/wms/pdm/producetask.js | 110 +++ mes/qd/src/api/wms/pdm/workprocedure.js | 42 + mes/qd/src/api/wms/st/in/workprocedureios.js | 73 ++ .../src/api/wms/st/out/workprocedureiosOut.js | 89 ++ mes/qd/src/views/wms/st/in/EndPointDialog.vue | 187 +++++ mes/qd/src/views/wms/st/in/MaterDialog.vue | 155 ++++ mes/qd/src/views/wms/st/in/index.vue | 768 ++++++++++++++++++ mes/qd/src/views/wms/st/out/MaterDialog.vue | 154 ++++ .../src/views/wms/st/out/StartPointDialog.vue | 200 +++++ mes/qd/src/views/wms/st/out/index.vue | 611 ++++++++++++++ 38 files changed, 4576 insertions(+), 20 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/SCH_Point_01.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/AreaEnum.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/BussConstant.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/WorkProcedureEnum.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/WorkprocedureiosController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/WorkprocedureiosService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/dto/WorkprocedureiosDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/WorkprocedureiosServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/wql/ST_Workprocedureios_01.wql create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/rest/WorkprocedureiosOutController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/WorkprocedureiosOutService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/dto/WorkprocedureDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/impl/WorkprocedureiosServiceOutImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/wql/ST_WorkprocedureiosOut_01.wql create mode 100644 mes/qd/src/api/wms/pdm/producetask.js create mode 100644 mes/qd/src/api/wms/pdm/workprocedure.js create mode 100644 mes/qd/src/api/wms/st/in/workprocedureios.js create mode 100644 mes/qd/src/api/wms/st/out/workprocedureiosOut.js create mode 100644 mes/qd/src/views/wms/st/in/EndPointDialog.vue create mode 100644 mes/qd/src/views/wms/st/in/MaterDialog.vue create mode 100644 mes/qd/src/views/wms/st/in/index.vue create mode 100644 mes/qd/src/views/wms/st/out/MaterDialog.vue create mode 100644 mes/qd/src/views/wms/st/out/StartPointDialog.vue create mode 100644 mes/qd/src/views/wms/st/out/index.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WorkProcedureController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WorkProcedureController.java index 1875657e..57afc61c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WorkProcedureController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/rest/WorkProcedureController.java @@ -76,4 +76,12 @@ public class WorkProcedureController { public ResponseEntity downSelect() { return new ResponseEntity<>(workProcedureService.downSelect(), HttpStatus.OK); } + @GetMapping("/queryWorkprocedure") + @Log("查询生产工序") + @ApiOperation("查询生产工序") + //@PreAuthorize("@el.check('workprocedure:list')") + public ResponseEntity queryWorkprocedure() { + return new ResponseEntity<>(workProcedureService.queryWorkprocedure(), HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WorkProcedureService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WorkProcedureService.java index f353abc8..980caf5a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WorkProcedureService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/WorkProcedureService.java @@ -3,6 +3,7 @@ package org.nl.wms.basedata.pdm.service; import com.alibaba.fastjson.JSONArray; import org.nl.wms.basedata.pdm.service.dto.WorkProcedureDto; +import org.nl.wms.st.out.service.dto.WorkprocedureDto; import org.springframework.data.domain.Pageable; import java.util.List; @@ -77,5 +78,11 @@ public interface WorkProcedureService { * @return */ JSONArray downSelect(); + /** + * 查询所有数据不分页 + * @param whereJson 条件参数 + * @return List + */ + List queryWorkprocedure(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WorkProcedureServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WorkProcedureServiceImpl.java index 42b92d96..a05ee95c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WorkProcedureServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/pdm/service/impl/WorkProcedureServiceImpl.java @@ -16,6 +16,7 @@ import org.nl.modules.security.service.dto.JwtUserDto; import org.nl.utils.SecurityUtils; import org.nl.wms.basedata.pdm.service.WorkProcedureService; import org.nl.wms.basedata.pdm.service.dto.WorkProcedureDto; +import org.nl.wms.st.out.service.dto.WorkprocedureDto; import org.nl.wql.core.bean.ResultBean; import org.nl.wql.core.bean.WQLObject; import org.nl.wql.util.WqlUtil; @@ -39,7 +40,7 @@ public class WorkProcedureServiceImpl implements WorkProcedureService { @Override public Map queryAll(Map whereJson, Pageable page) { String where = ""; - WQLObject wo = WQLObject.getWQLObject("PDM_BI_WorkProcedure"); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_workprocedure"); String search = (String) whereJson.get("search"); if (!StrUtil.isEmpty(search)) { where = " AND (workprocedure_code like '%" + search + "%' OR workprocedure_name like '%" + search + "%' ) "; @@ -154,4 +155,12 @@ public class WorkProcedureServiceImpl implements WorkProcedureService { JSONArray resultJSONArray = workProcedureTab.query("is_delete = '0' and is_used ='1'", "workprocedure_code").getResultJSONArray(0); return resultJSONArray; } + @Override + public List queryWorkprocedure() { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_workprocedure"); + //只查清洗 跟仓储 + JSONArray arr = wo.query(" is_delete = '0' and workprocedure_code in ('12','08')").getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WorkprocedureDto.class); + return null; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index d73392a37c6e0cacb5207a2304693e4890fbe109..5c4cf0183b088617e988c33f9377d0142a2475ef 100644 GIT binary patch delta 46448 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 z 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 delta 40653 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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java index 026ad099..3930d30d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/AcsUtil.java @@ -25,7 +25,7 @@ public class AcsUtil { } //ACS地址:127.0.0.1:8010 - String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("wcs_url").getValue(); + String acsUrl = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("ACS_URL").getValue(); String url = acsUrl + api; try { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java index 0ffba6ab..252d590b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/rest/PointController.java @@ -90,4 +90,11 @@ public class PointController { pointService.syncStruct(); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } + @GetMapping("/getEndPoint") + @Log("查询点位管理") + @ApiOperation("查询点位管理") + //@PreAuthorize("@el.check('Point:list')") + public ResponseEntity getEndPoint(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(pointService.getEndPoint(whereJson,page),HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java index 1cd49747..10e37638 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/PointService.java @@ -74,4 +74,9 @@ public interface PointService { JSONArray getPoint(Map wherJson); void syncStruct(); + /** + * + * 获取终点点位 + */ + Map getEndPoint(Map whereJson, Pageable page); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index a9e2ebe6..e826886c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -1,12 +1,14 @@ package org.nl.wms.sch.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; 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; +import com.mchange.lang.DoubleUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.exception.BadRequestException; @@ -60,8 +62,8 @@ public class PointServiceImpl implements PointService { public PointDto findById(Long point_id) { WQLObject wo = WQLObject.getWQLObject("sch_base_point"); JSONObject json = wo.query("point_id =" + point_id + "").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)){ - return json.toJavaObject(PointDto.class); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(PointDto.class); } final PointDto obj = json.toJavaObject(PointDto.class); return obj; @@ -72,8 +74,8 @@ public class PointServiceImpl implements PointService { public PointDto findByCode(String code) { WQLObject wo = WQLObject.getWQLObject("sch_base_point"); JSONObject json = wo.query("point_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)){ - return json.toJavaObject(PointDto.class); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(PointDto.class); } return null; } @@ -151,12 +153,12 @@ public class PointServiceImpl implements PointService { //如果是仓位点位,更新状态前,先去查询仓位点位所对应的库区是否启用,如果禁用抛出异常 String struct_id = json.getString("point_id"); String point_type = json.getString("point_type"); - if (point_type.equals("01")){ + if (point_type.equals("01")) { JSONObject st_ivt_bsRealStorAttr = WQLObject.getWQLObject("ST_IVT_StructAttr").query(" struct_id = '" + struct_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(st_ivt_bsRealStorAttr)){ + if (ObjectUtil.isNotEmpty(st_ivt_bsRealStorAttr)) { String sect_id = st_ivt_bsRealStorAttr.getString("sect_id"); JSONObject st_ivt_sectAttr = WQLObject.getWQLObject("ST_IVT_SectAttr").query(" sect_id = '" + sect_id + "' and is_used = '1'").uniqueResult(0); - if (ObjectUtil.isEmpty(st_ivt_sectAttr)){ + if (ObjectUtil.isEmpty(st_ivt_sectAttr)) { throw new BadRequestException("启用失败,请检查仓位点位所属库区是否启用!"); } } @@ -223,4 +225,52 @@ public class PointServiceImpl implements PointService { wo.insert(structMap); } } + + @Override + public Map getEndPoint(Map whereJson, Pageable page) { + String search = MapUtil.getStr(whereJson, "search"); + //String material_id = MapUtil.getStr(whereJson, "material_id"); + String area_type = MapUtil.getStr(whereJson, "area_type"); + String vehicle_code = MapUtil.getStr(whereJson, "vehicle_code"); + String qty = MapUtil.getStr(whereJson, "qty"); + String loadSeries = "4"; + //根据重量去找最小的级数在哪个范围 + if (StrUtil.isNotEmpty(qty) && Double.valueOf(qty) > 0) { + loadSeries = this.getLoadSeriesByqty(Double.valueOf(qty)); + } + + + WQLObject wo_vehicle = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); + String vehicle_type = ""; + if (StrUtil.isNotEmpty(vehicle_code)) { + JSONObject jsonObject = wo_vehicle.query("is_delete = '0' and storagevehicle_code = '" + vehicle_code + "'").uniqueResult(0); + vehicle_type = jsonObject.getString("storagevehicle_type"); + } + JSONObject map = new JSONObject(); + map.put("flag", "3"); + map.put("area_type", area_type); + map.put("vehicle_type", vehicle_type); + map.put("loadSeries", loadSeries); + //map.put("material_id",material_id); + if (ObjectUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = WQL.getWO("SCH_Point_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "struct_code"); + return json; + } + + //根据重量返回最大的 级数 + public String getLoadSeriesByqty(Double qty) { + JSONArray dictArr = WQLObject.getWQLObject("sys_dict_detail").query("dict_id ='108'", "label").getResultJSONArray(0); + String load_series = "4"; + for (int i = 0; i < dictArr.size(); i++) { + JSONObject dictObj = dictArr.getJSONObject(i); + double flag = dictObj.getDouble("label"); + if (flag >= qty) { + load_series = dictObj.getString("value"); + break; + } + } + return load_series; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java index c94a6709..be1694a6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/TaskServiceImpl.java @@ -107,7 +107,7 @@ public class TaskServiceImpl implements TaskService { @Override public TaskDto findByDtlId(String taskdtl_id) { WQLObject wo = WQLObject.getWQLObject("sch_base_task"); - JSONObject json = wo.query("taskdtl_id = '" + taskdtl_id + "'").uniqueResult(0); + JSONObject json = wo.query("task_id = '" + taskdtl_id + "'").uniqueResult(0); final TaskDto obj = json.toJavaObject(TaskDto.class); return obj; } @@ -173,9 +173,9 @@ public class TaskServiceImpl implements TaskService { @Override public void operation(Map map) { - String taskdtl_id = MapUtil.getStr(map, "taskdtl_id"); + String task_id = MapUtil.getStr(map, "task_id"); String method_name = MapUtil.getStr(map, "method_name"); - TaskDto dto = this.findByDtlId(taskdtl_id); + TaskDto dto = this.findByDtlId(task_id); // 任务处理类 String processing_class = dto.getHandle_class(); String message = ""; @@ -185,7 +185,7 @@ public class TaskServiceImpl implements TaskService { Object obj = clz.newInstance(); // 调用每个任务类的method_name()强制结束方法 Method m = obj.getClass().getMethod(method_name, String.class); - JSONObject result = (JSONObject) m.invoke(obj, taskdtl_id); + JSONObject result = (JSONObject) m.invoke(obj, task_id); if (ObjectUtil.isEmpty(result)) return; JSONArray arr = result.getJSONArray("errArr"); WQLObject wo = WQLObject.getWQLObject("sch_base_task"); @@ -200,7 +200,7 @@ public class TaskServiceImpl implements TaskService { throw new BadRequestException("任务操作失败!"); } else { JSONObject param = new JSONObject(); - param.put("taskdtl_id", taskdtl_id); + param.put("task_id", task_id); param.put("remark", "操作成功"); wo.update(param); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql index 055a0118..217c78ec 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/QSCH_TASK_01.wql @@ -84,7 +84,7 @@ task.create_time <= 输入.end_time ENDOPTION OPTION 输入.unFinish <> "" - task.task_status <> '99' + task.task_status <> '07' ENDOPTION OPTION 输入.task_status <> "" find_in_set( task.task_status, 输入.task_status) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/SCH_Point_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/SCH_Point_01.wql new file mode 100644 index 00000000..f6a9cba5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/wql/SCH_Point_01.wql @@ -0,0 +1,124 @@ +[交易说明] + 交易名: 点位管理查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.search TYPEAS s_string + 输入.point_type TYPEAS s_string + 输入.area_type TYPEAS s_string + 输入.point_status TYPEAS s_string + 输入.lock_type TYPEAS s_string + 输入.is_used TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.vehicle_type TYPEAS s_string + 输入.loadSeries TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + a.*,b.device_name + FROM + sch_base_point a + left join + pdm_base_device b on a.device_id = b.device_id + WHERE + a.is_delete = '0' + OPTION 输入.search <> "" + (a.point_code like 输入.search or + a.point_name like 输入.search) + ENDOPTION + OPTION 输入.point_type <> "" + a.point_type = 输入.point_type + ENDOPTION + OPTION 输入.area_type <> "" + a.area_type = 输入.area_type + ENDOPTION + OPTION 输入.point_status <> "" + a.point_status = 输入.point_status + ENDOPTION + OPTION 输入.lock_type <> "" + a.lock_type = 输入.lock_type + ENDOPTION + OPTION 输入.is_used <> "" + a.is_used = 输入.is_used + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + PAGEQUERY + SELECT + a.*,b.sect_code + FROM + ST_IVT_StructAttr a + left join + ST_IVT_SectAttr b on a.sect_id = b.sect_id + WHERE + a.is_delete = '0' + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "3" + PAGEQUERY + SELECT DISTINCT + structattr.struct_id, + structattr.struct_code, + structattr.struct_name, + point.area_type, + point.point_type + FROM + st_ivt_structattr structattr + LEFT JOIN sch_base_point point ON point.point_id = structattr.struct_id + LEFT JOIN ST_IVT_StructRelaVehicleType rulevehicle ON rulevehicle.struct_id = structattr.struct_id + LEFT JOIN ST_IVT_StructAttributeRules ruledis ON ruledis.struct_id = structattr.struct_id + WHERE + point.lock_type = '00' + AND (point.vehicle_code = '' or point.vehicle_code is null) + AND point.point_status = '00' + AND point.area_type = 输入.area_type + AND rulevehicle.vehicle_type = 输入.vehicle_type + OPTION 输入.search <> "" + (structattr.struct_code like 输入.search or + structattr.struct_name like 输入.search) + ENDOPTION + OPTION 输入.loadSeries <> "" + ruledis.load_series >= 输入.loadSeries + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java index 713bc092..9279d4b8 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallMaterialTask.java @@ -17,6 +17,7 @@ import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.impl.PointServiceImpl; +import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java index 57469891..5fc5504b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SendMaterialTask.java @@ -12,14 +12,18 @@ import org.nl.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; import org.nl.utils.SecurityUtils; import org.nl.utils.SpringContextHolder; + import org.nl.wms.basedata.st.IvtChangeTypeEnum; import org.nl.wms.basedata.st.StoreIvtServiceImpl; import org.nl.wms.common.StructFindUtil; import org.nl.wms.sch.manage.AbstractAcsTask; + import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.PointService; import org.nl.wms.sch.service.dto.PointDto; import org.nl.wms.sch.service.impl.PointServiceImpl; + +import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/AreaEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/AreaEnum.java new file mode 100644 index 00000000..c30edf8d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/AreaEnum.java @@ -0,0 +1,35 @@ +package org.nl.wms.st.in; + +/** + * 区域字典表(sch_area_type): + * 01困料货架 ,02:出窑货架(预定),03、出窑暂存区,04、包装暂存区,21:混碾区域,22、压制区域 23、液压机料盅架 + * 24 窑区域 25 空钢托堆叠区 26 自动柴垛线 + */ +public enum AreaEnum { + CPHJ("KQ001", "成品库区"), + BCPHJ("KQ002", "半成品库区"), + BCPSLKKZCQ("KQ003", "半成品上料空框暂存区"), + BCPSXLZCQ("KQ004", "半成品上下料暂存区"), + BCPKKYJQ("KQ005", "半成品空框应急区"), + CPCKZCQ("KQ006", "成品出库暂存区"), + BCPLXQ("KQ007", "半成品料箱区"), + ULQ("RCK001", "原材料区"); + + + private final String name; + private final String code; + + AreaEnum(String code, String name) { + this.code = code; + this.name = name; + } + + public String getName() { + return name; + } + + public String getCode() { + return code; + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/BussConstant.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/BussConstant.java new file mode 100644 index 00000000..0b17a4f0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/BussConstant.java @@ -0,0 +1,15 @@ +package org.nl.wms.st.in; + +/** + * 业务常量配置类 + */ +public class BussConstant { + // 混碾入库数量单位 + public static final String HN_IN_QTY_UNIT_ID = "1"; + // 压制入库数量单位 + public static final String YZ_IN_QTY_UNIT_ID = "1"; + // 压制出库数量单位 + public static final String YZ_OUT_QTY_UNIT_ID = "1"; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/WorkProcedureEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/WorkProcedureEnum.java new file mode 100644 index 00000000..2c841d40 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/WorkProcedureEnum.java @@ -0,0 +1,66 @@ +package org.nl.wms.st.in; + +import cn.hutool.core.util.StrUtil; + +/** + * 工序类型类型,对应工序表:生产工序表【PDM_BASE_workProcedure】 + */ +public enum WorkProcedureEnum { + + BZGX(1, "1535144822984282112", "01", "包装工序", ""), + QXGX(2, "1535144552481034240", "02", "清洗工序", ""), + CCGX(2, "1535144934791843840", "02", "仓储工序", ""); + //顺序号 + private int index; + //工序标识 + private String id; + // 工序编码 + private String code; + //名字 + private String name; + //描述 + private String desc; + + WorkProcedureEnum(int index, String id, String code, String name, String desc) { + this.index = index; + this.id = id; + this.code = code; + this.name = name; + this.desc = desc; + } + + + public String getName() { + return name; + } + + public String getCode() { + return code; + } + + public String getId() { + return id; + } + + public String getDesc() { + return desc; + } + + public static WorkProcedureEnum get(String workprocedure_id) { + for (WorkProcedureEnum workProcedureEnum : WorkProcedureEnum.values()) { + if (StrUtil.equals(workProcedureEnum.id, workprocedure_id)) { + return workProcedureEnum; + } + } + return null; + } + + public static void main(String[] args) { + System.out.println("测试完成1"); + for (WorkProcedureEnum workProcedureEnum : WorkProcedureEnum.values()) { + if (StrUtil.equals(workProcedureEnum.id, "1514444198529601536")) { + System.out.println("测试完成2"); + } + } + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/WorkprocedureiosController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/WorkprocedureiosController.java new file mode 100644 index 00000000..550daaf6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/WorkprocedureiosController.java @@ -0,0 +1,117 @@ + +package org.nl.wms.st.in.rest; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.st.in.service.WorkprocedureiosService; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.springframework.data.domain.Pageable; +import lombok.RequiredArgsConstructor; +import org.nl.annotation.Log; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import io.swagger.annotations.*; +import java.util.Map; +import lombok.extern.slf4j.Slf4j; + +/** +* @author geng by +* @date 2022-04-21 +**/ +@RestController +@RequiredArgsConstructor +@Api(tags = "工序入库管理") +@RequestMapping("/api/workprocedureiosIn") +@Slf4j +public class WorkprocedureiosController { + + private final WorkprocedureiosService workprocedureiosService; + + @GetMapping + @Log("查询工序入库") + @ApiOperation("查询工序入库") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(workprocedureiosService.queryAll(whereJson,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增工序入库") + @ApiOperation("新增工序入库") + //@PreAuthorize("@el.check('workprocedureios:add')") + public ResponseEntity create(@Validated @RequestBody WorkprocedureiosDto dto){ + workprocedureiosService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改工序入库") + @ApiOperation("修改工序入库") + //@PreAuthorize("@el.check('workprocedureios:edit')") + public ResponseEntity update(@Validated @RequestBody WorkprocedureiosDto dto){ + workprocedureiosService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除工序入库") + @ApiOperation("删除工序入库") + //@PreAuthorize("@el.check('workprocedureios:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + workprocedureiosService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getBillTypes") + @Log("查询工序入库单据类型") + @ApiOperation("查询工序入库单据类型") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getBillTypes(){ + return new ResponseEntity<>(workprocedureiosService.getBillTypes(),HttpStatus.OK); + } + + + @PostMapping("/selectStartPoint") + @Log("根据工序查找起始点位") + @ApiOperation("根据工序查找起始点位") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity selectStartPoint(@RequestBody JSONObject json){ + return new ResponseEntity<>(workprocedureiosService.selectStartPoint(json.getString("workprocedureid")),HttpStatus.OK); + } + + @PostMapping("/getStartArea") + @Log("根据起始点位编码查询点位区域") + @ApiOperation("根据起始点位编码查询点位区域") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getStartArea(@RequestBody JSONObject json){ + return new ResponseEntity<>(workprocedureiosService.getStartArea(json.getString("start_point_code")),HttpStatus.OK); + } + + @GetMapping("/getMaterial") + @Log("选择物料") + @ApiOperation("选择物料") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getMaterial(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(workprocedureiosService.getMaterial(whereJson,page),HttpStatus.OK); + } + + @PostMapping("/genTask") + @Log("生成任务") + @ApiOperation("生成任务") + //@PreAuthorize("@el.check('workprocedureios:add')") + public ResponseEntity genTask(@RequestBody JSONObject taskJson){ + workprocedureiosService.genTask(taskJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/getEndAareaByworkprocedureId") + @Log("根据工序查询终点区域") + @ApiOperation("根据工序查询终点区域") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getEndAareaByworkprocedureId(@RequestBody JSONObject param){ + return new ResponseEntity<>(workprocedureiosService.getEndAareaByworkprocedureId(param.getString("workprocedure_id")),HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/WorkprocedureiosService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/WorkprocedureiosService.java new file mode 100644 index 00000000..787a408f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/WorkprocedureiosService.java @@ -0,0 +1,103 @@ + +package org.nl.wms.st.in.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.springframework.data.domain.Pageable; +import java.util.Map; +import java.util.List; + +/** +* @description 服务接口 +* @author geng by +* @date 2022-04-21 +**/ +public interface WorkprocedureiosService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * @param weight_unit_id ID + * @return Workprocedureios + */ + WorkprocedureiosDto findById(Long weight_unit_id); + + /** + * 根据编码查询 + * @param code code + * @return Workprocedureios + */ + WorkprocedureiosDto findByCode(String code); + + + /** + * 创建 + * @param dto / + */ + void create(WorkprocedureiosDto dto); + + /** + * 编辑 + * @param dto / + */ + void update(WorkprocedureiosDto dto); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 查询入库单据类型 + * @return + */ + JSONArray getBillTypes(); + + /** + * 根据工序查询开始点位 + * @return + */ + JSONArray selectStartPoint(String workprocedureid); + + /** + *根据起始点位编码获取起始区域 + * @param start_point_code + * @return + */ + JSONObject getStartArea(String start_point_code); + + /** + * 工序入库选择物料查询 + * @param whereJson + * @param page + * @return + */ + Map getMaterial(Map whereJson, Pageable page); + + /** + * 生成任务 + * @param taskJson + */ + void genTask(JSONObject taskJson); + + /** + * 根据工序获取终点区域 + */ + Map getEndAareaByworkprocedureId(String workprocedure_id); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/dto/WorkprocedureiosDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/dto/WorkprocedureiosDto.java new file mode 100644 index 00000000..9912c163 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/dto/WorkprocedureiosDto.java @@ -0,0 +1,116 @@ +package org.nl.wms.st.in.service.dto; + +import lombok.Data; +import java.math.BigDecimal; +import java.io.Serializable; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +/** + * @description / + * @author geng by + * @date 2022-04-29 + **/ +@Data +public class WorkprocedureiosDto implements Serializable { + + /** 出入单标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long iostorinv_id; + + /** 单据编号 */ + private String bill_code; + + /** 出入类型 */ + private String io_type; + + /** 单据类型 */ + private String bill_type; + + /** 工序标识 */ + private Long workprocedure_id; + + /** 物料标识 */ + private Long material_id; + + /** 载具编码 */ + private String vehicle_code; + + /** 数量 */ + private BigDecimal qty; + + /** 数量单位标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long qty_unit_id; + + /** 单据状态 */ + private String bill_status; + + /** 起始点位编码 */ + private String start_point_code; + + /** 终点点位编码 */ + private String end_point_code; + + /** 起始区域 */ + private String start_area; + + /** 终点区域 */ + private String end_area; + + /** 客户标识 */ + private Long cust_id; + + /** 生成方式 */ + private String create_mode; + + /** 任务标识 */ + private Long task_id; + + /** 备注 */ + private String remark; + + /** 创建人 */ + private Long create_id; + + /** 创建人 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private Long update_optid; + + /** 修改人 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 确认人 */ + private Long confirm_optid; + + /** 确认人 */ + private String confirm_optname; + + /** 确认时间 */ + private String confirm_time; + + /** 是否删除 */ + private String is_delete; + + /** 批次 */ + private String pcsn; + + /** 物料工序标识 */ + private Long ivt_workprocedure_id; + + /** 是否满拖 */ + private String is_full; + + /** 黏次 */ + private String mix_seq; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/WorkprocedureiosServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/WorkprocedureiosServiceImpl.java new file mode 100644 index 00000000..96d93db8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/WorkprocedureiosServiceImpl.java @@ -0,0 +1,326 @@ + +package org.nl.wms.st.in.service.impl; + + +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import lombok.RequiredArgsConstructor; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.wms.sch.tasks.SendMaterialTask; +import org.nl.wms.st.in.AreaEnum; +import org.nl.wms.st.in.BussConstant; +import org.nl.wms.st.in.WorkProcedureEnum; +import org.nl.wms.st.in.service.WorkprocedureiosService; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.nl.wql.WQL; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.utils.SecurityUtils; +import org.nl.wql.core.bean.ResultBean; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import lombok.extern.slf4j.Slf4j; +import cn.hutool.core.util.ObjectUtil; + +/** + * @author geng by + * @description 服务实现 + * @date 2022-04-21 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class WorkprocedureiosServiceImpl implements WorkprocedureiosService { + /*private final String THIS_CLASS = SendMaterialTask.class.getName();*/ + + @Override + public Map queryAll(Map whereJson, Pageable page) { + + String search = MapUtil.getStr(whereJson, "search"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + + if (ObjectUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = WQL.getWO("ST_Workprocedureios_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "a.create_time desc"); + return json; + } + + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WorkprocedureiosDto.class); + return null; + } + + @Override + public WorkprocedureiosDto findById(Long iostorinv_id) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = wo.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(WorkprocedureiosDto.class); + } + return null; + } + + @Override + public WorkprocedureiosDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(WorkprocedureiosDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(WorkprocedureiosDto dto) { + String bill_code = CodeUtil.getNewCode("IN_STORE_CODE"); + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + dto.setIostorinv_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setBill_code(bill_code); + dto.setIo_type("0"); + dto.setBill_status("10"); + + Map endMap = this.getEndAareaByworkprocedureId(dto.getWorkprocedure_id().toString()); + String end_area = dto.getEnd_area(); + if (StrUtil.isEmpty(end_area)) { + String endArea = MapUtil.getStr(endMap, "end_area"); + if (StrUtil.isEmpty(endArea)) { + throw new BadRequestException("终点区域为空,枚举中未查到工序对应区域!"); + } + dto.setEnd_area(endArea); + } + Long qty_unit_id = dto.getQty_unit_id(); + if (ObjectUtil.isNull(qty_unit_id)) { + String unit_id = MapUtil.getStr(endMap, "qty_unit_id"); + if (StrUtil.isEmpty(unit_id)) { + throw new BadRequestException("数量单位为空,枚举中未查到工序对应区域!"); + } + qty_unit_id = Long.valueOf(unit_id); + dto.setQty_unit_id(qty_unit_id); + } + dto.setCreate_mode("01"); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(WorkprocedureiosDto dto) { + WorkprocedureiosDto entity = this.findById(dto.getIostorinv_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + dto.setBill_status("10"); + + Map endMap = this.getEndAareaByworkprocedureId(dto.getWorkprocedure_id().toString()); + String end_area = dto.getEnd_area(); + if (StrUtil.isEmpty(end_area)) { + String endArea = MapUtil.getStr(endMap, "end_area"); + if (StrUtil.isEmpty(endArea)) { + throw new BadRequestException("终点区域为空,枚举中未查到工序对应区域!"); + } + dto.setEnd_area(endArea); + } + Long qty_unit_id = dto.getQty_unit_id(); + if (ObjectUtil.isNull(qty_unit_id)) { + String unit_id = MapUtil.getStr(endMap, "qty_unit_id"); + if (StrUtil.isEmpty(unit_id)) { + throw new BadRequestException("数量单位为空,枚举中未查到工序对应区域!"); + } + qty_unit_id = Long.valueOf(unit_id); + dto.setQty_unit_id(qty_unit_id); + } + + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + for (Long iostorinv_id : ids) { + JSONObject param = new JSONObject(); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(param, "iostorinv_id = '" + iostorinv_id + "'"); + } + } + + @Override + public JSONArray getBillTypes() { + WQLObject wo = WQLObject.getWQLObject("sys_dict_detail"); + JSONArray arr = wo.query(" name = 'ST_INV_TYPE' and value like '00%'").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray selectStartPoint(String workprocedureid) { + /* WQLObject woDevice = WQLObject.getWQLObject("pdm_base_device");*/ + JSONArray arrPoint = new JSONArray(); + WQLObject woPoint = WQLObject.getWQLObject("sch_base_point"); + //包装工序 + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.CCGX.getId())) { + arrPoint = woPoint.query("is_used='1' and is_delete='0' and point_code like 'CPRKW%'").getResultJSONArray(0); + return arrPoint; + } + //包装工序 + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.BZGX.getId())) { + arrPoint = woPoint.query("is_used='1' and is_delete='0' and point_code like 'CPRKW%'").getResultJSONArray(0); + return arrPoint; + } + //清洗工序 + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.QXGX.getId())) { + + } + +/* + JSONArray arrDevice = woDevice.query("is_delete = '0' and workprocedure_id = '" + workprocedureid + "'", "device_code").getResultJSONArray(0); + JSONArray arrPoint = new JSONArray(); + for (int i = 0; i < arrDevice.size(); i++) { + JSONObject jsonDevice = arrDevice.getJSONObject(i); + JSONArray arrPoints = woPoint.query("is_delete = '0' and device_point_type = '02' and device_id = '" + jsonDevice.getString("device_id") + "'", "point_code").getResultJSONArray(0); + for (int j = 0; j < arrPoints.size(); j++) { + JSONObject jsonPoint = arrPoints.getJSONObject(j); + arrPoint.add(jsonPoint); + } + }*/ + return arrPoint; + } + + @Override + public JSONObject getStartArea(String start_point_code) { + WQLObject woPoint = WQLObject.getWQLObject("sch_base_point"); + JSONObject arrDevice = woPoint.query("is_delete = '0' and point_code = '" + start_point_code + "'").uniqueResult(0); + return arrDevice; + } + + @Override + public Map getMaterial(Map whereJson, Pageable page) { + String where = ""; + WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); + String search = MapUtil.getStr(whereJson, "search"); + if (!StrUtil.isEmpty(search)) { + where = " AND (material_code like '%" + search + "%' OR material_name like '%" + search + "%' ) "; + } + ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "is_delete= '0'" + where, "update_time desc"); + final JSONObject json = rb.pageResult(); + return json; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void genTask(JSONObject taskJson) { + + String iostorinv_id = taskJson.getString("iostorinv_id"); + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject jsonObject = wo.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); + //请求参数 载具、起点 物料,数量,客户,批次,创建方式不能为空! 终点可以不为空时,入库单据编号不能为空 + JSONObject form = new JSONObject(); + String next_point_code = jsonObject.getString("end_point_code"); + String start_point_code = jsonObject.getString("start_point_code"); + String vehicle_code = jsonObject.getString("vehicle_code"); + String material_id = jsonObject.getString("material_id"); + String cust_id = jsonObject.getString("cust_id"); + String qty = jsonObject.getString("qty"); + String pcsn = jsonObject.getString("pcsn"); + String create_mode = jsonObject.getString("create_mode"); + String is_full = jsonObject.getString("is_full"); + String ivt_workprocedure_id = jsonObject.getString("ivt_workprocedure_id"); + form.put("vehicle_code", vehicle_code); + form.put("start_point_code", start_point_code); + form.put("next_point_code", next_point_code); + form.put("material_id", material_id); + form.put("qty", qty); + form.put("cust_id", cust_id); + form.put("create_mode", create_mode); + form.put("pcsn", pcsn); + form.put("is_full", is_full); + form.put("ivt_workprocedure_id", ivt_workprocedure_id); + form.put("iostorinv_id", iostorinv_id); + SendMaterialTask sendMaterialTask = new SendMaterialTask(); + String task_id = sendMaterialTask.createTask(form); + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("update_optid", SecurityUtils.getCurrentUserId()); + json.put("update_optname", SecurityUtils.getNickName()); + json.put("update_time", DateUtil.now()); + json.put("bill_status", "20"); + wo.update(json, "iostorinv_id = '" + iostorinv_id + "'"); + } + + @Override + public Map getEndAareaByworkprocedureId(String workprocedure_id) { + String endArea = ""; + String qty_unit_id = ""; + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + // TODO + switch (workProcedureEnum) { + //包装工序 + case CCGX: + endArea = AreaEnum.CPHJ.getCode(); + qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; + break; + + //包装工序 + case BZGX: + endArea = AreaEnum.CPHJ.getCode(); + qty_unit_id = BussConstant.HN_IN_QTY_UNIT_ID; + break; + // 清洗工序 + case QXGX: + endArea = AreaEnum.BCPHJ.getCode(); + qty_unit_id = BussConstant.YZ_IN_QTY_UNIT_ID; + break; + default: + endArea = null; + qty_unit_id = null; + break; + } + JSONObject map = new JSONObject(); + map.put("end_area", endArea); + map.put("qty_unit_id", qty_unit_id); + return map; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/wql/ST_Workprocedureios_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/wql/ST_Workprocedureios_01.wql new file mode 100644 index 00000000..0bec87c8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/wql/ST_Workprocedureios_01.wql @@ -0,0 +1,67 @@ +[交易说明] + 交易名: 工序入库单分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.search TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + a.*, + b.workprocedure_name, + c.material_name, + p1.point_name AS start_point_name, + p2.point_name AS end_point_name, + unit.unit_name, + cust.cust_name + FROM + ST_IVT_workProcedureIOS a + LEFT JOIN pdm_bi_workprocedure b ON a.workprocedure_id = b.workprocedure_id + LEFT JOIN md_me_materialbase c ON c.material_id = a.material_id + LEFT JOIN sch_base_point p1 ON a.start_point_code = p1.point_code + LEFT JOIN sch_base_point p2 ON a.end_point_code = p2.point_code + LEFT JOIN md_pb_measureunit unit ON a.qty_unit_id = unit.measure_unit_id + LEFT JOIN md_cs_customerbase cust ON a.cust_id = cust.cust_id + WHERE + a.is_delete = '0' + AND a.io_type = '0' + OPTION 输入.search <> "" + a.bill_code like 输入.search + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/rest/WorkprocedureiosOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/rest/WorkprocedureiosOutController.java new file mode 100644 index 00000000..9167e94a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/rest/WorkprocedureiosOutController.java @@ -0,0 +1,145 @@ + +package org.nl.wms.st.out.rest; + + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.annotation.Log; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.nl.wms.st.out.service.WorkprocedureiosOutService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +/** +* @author geng by +* @date 2022-04-21 +**/ +@RestController +@RequiredArgsConstructor +@Api(tags = "工序出库管理") +@RequestMapping("/api/workprocedureiosOut") +@Slf4j +public class WorkprocedureiosOutController { + + @Autowired + private final WorkprocedureiosOutService workprocedureiosOutService; + + @GetMapping + @Log("查询工序出库") + @ApiOperation("查询工序出库") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(workprocedureiosOutService.queryAll(whereJson,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增工序出库") + @ApiOperation("新增工序出库") + //@PreAuthorize("@el.check('workprocedureios:add')") + public ResponseEntity create(@Validated @RequestBody WorkprocedureiosDto dto){ + workprocedureiosOutService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改工序出库") + @ApiOperation("修改工序出库") + //@PreAuthorize("@el.check('workprocedureios:edit')") + public ResponseEntity update(@Validated @RequestBody WorkprocedureiosDto dto){ + workprocedureiosOutService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除工序出库") + @ApiOperation("删除工序出库") + //@PreAuthorize("@el.check('workprocedureios:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + workprocedureiosOutService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getBillTypes") + @Log("查询工序出库单据类型") + @ApiOperation("查询工序出库单据类型") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getBillTypes(){ + return new ResponseEntity<>(workprocedureiosOutService.getBillTypes(),HttpStatus.OK); + } + + + @PostMapping("/selectEndPoint") + @Log("根据工序查找终点点位") + @ApiOperation("根据工序查找终点点位") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity selectEndPoint(@RequestBody JSONObject json){ + return new ResponseEntity<>(workprocedureiosOutService.selectEndPoint(json.getString("workprocedureid")),HttpStatus.OK); + } + + @PostMapping("/getEndArea") + @Log("根据终点点位编码查询点位区域") + @ApiOperation("根据起始点位编码查询点位区域") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getStartArea(@RequestBody JSONObject json){ + return new ResponseEntity<>(workprocedureiosOutService.getStartArea(json.getString("start_point_code")),HttpStatus.OK); + } + + @GetMapping("/getMaterial") + @Log("选择物料") + @ApiOperation("选择物料") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getMaterial(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(workprocedureiosOutService.getMaterial(whereJson,page),HttpStatus.OK); + } + + @PostMapping("/genTask") + @Log("生成任务") + @ApiOperation("生成任务") + //@PreAuthorize("@el.check('workprocedureios:add')") + public ResponseEntity genTask(@RequestBody JSONObject taskJson){ + workprocedureiosOutService.genTask(taskJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @GetMapping("/getStartPoint") + @Log("查询起点点位") + @ApiOperation("查询起点点位") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getStartPoint(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(workprocedureiosOutService.getStartPoint(whereJson,page),HttpStatus.OK); + } + + @PostMapping("/getEndAareaByworkprocedureId") + @Log("根据工序查询起点区域") + @ApiOperation("根据工序查询起点区域") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getEndAareaByworkprocedureId(@RequestBody JSONObject param){ + return new ResponseEntity<>(workprocedureiosOutService.getEndAareaByworkprocedureId(param.getString("workprocedure_id")),HttpStatus.OK); + } + + @GetMapping("/queryWorkprocedure") + @Log("出库工序下拉") + @ApiOperation("出库工序下拉") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity queryWorkprocedure(){ + return new ResponseEntity<>(workprocedureiosOutService.queryWorkprocedure(),HttpStatus.OK); + } + + @PostMapping("/getIvtWorkprocedureId") + @Log("根据选择工序查询上一工序") + @ApiOperation("根据选择工序查询上一工序") + //@PreAuthorize("@el.check('workprocedureios:list')") + public ResponseEntity getIvtWorkprocedureId(@RequestBody JSONObject param){ + return new ResponseEntity<>(workprocedureiosOutService.getIvtWorkprocedureId(param),HttpStatus.OK); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/WorkprocedureiosOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/WorkprocedureiosOutService.java new file mode 100644 index 00000000..54cc2e4f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/WorkprocedureiosOutService.java @@ -0,0 +1,126 @@ + +package org.nl.wms.st.out.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.nl.wms.st.out.service.dto.WorkprocedureDto; +import org.springframework.data.domain.Pageable; + +import java.util.List; +import java.util.Map; + +/** +* @description 服务接口 +* @author geng by +* @date 2022-04-21 +**/ +public interface WorkprocedureiosOutService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); + + /** + * 查询所有数据不分页 + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); + + /** + * 根据ID查询 + * @param weight_unit_id ID + * @return Workprocedureios + */ + WorkprocedureiosDto findById(Long weight_unit_id); + + /** + * 根据编码查询 + * @param code code + * @return Workprocedureios + */ + WorkprocedureiosDto findByCode(String code); + + + /** + * 创建 + * @param dto / + */ + void create(WorkprocedureiosDto dto); + + /** + * 编辑 + * @param dto / + */ + void update(WorkprocedureiosDto dto); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + + /** + * 查询入库单据类型 + * @return + */ + JSONArray getBillTypes(); + + /** + * 根据工序查找终点点位 + * @return + */ + JSONArray selectEndPoint(String workprocedureid); + + /** + *根据起始点位编码获取起始区域 + * @param start_point_code + * @return + */ + JSONObject getStartArea(String start_point_code); + + /** + * 工序入库选择物料查询 + * @param whereJson + * @param page + * @return + */ + Map getMaterial(Map whereJson, Pageable page); + + /** + * 生产任务 + * @param taskJson + */ + void genTask(JSONObject taskJson); + + /** + * 获得起始点位 + * @param whereJson + * @param page + * @return + */ + Map getStartPoint(Map whereJson, Pageable page); + + /** + * 根据工序获取终点区域 + */ + Map getEndAareaByworkprocedureId(String workprocedure_id); + + /** + * 出库工序下拉 + * @return + */ + List queryWorkprocedure(); + + /** + * 根据选择工序查询上一工序 + * @param param + * @return + */ + Map getIvtWorkprocedureId(JSONObject param); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/dto/WorkprocedureDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/dto/WorkprocedureDto.java new file mode 100644 index 00000000..13ced846 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/dto/WorkprocedureDto.java @@ -0,0 +1,55 @@ +package org.nl.wms.st.out.service.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** +* @description / +* @author geng by +* @date 2022-04-12 +**/ +@Data +public class WorkprocedureDto implements Serializable { + + /** 工序标识 */ + /** 防止精度丢失 */ + @JsonSerialize(using= ToStringSerializer.class) + private Long workprocedure_id; + + /** 工序编码 */ + private String workprocedure_code; + + /** 工序名称 */ + private String workprocedure_name; + + /** 工序顺序 */ + private BigDecimal seq_no; + + /** 是否启用 */ + private String is_used; + + /** 创建人 */ + private Long create_id; + + /** 创建人姓名 */ + private String create_name; + + /** 创建时间 */ + private String create_time; + + /** 修改人 */ + private Long update_optid; + + /** 修改人姓名 */ + private String update_optname; + + /** 修改时间 */ + private String update_time; + + /** 是否删除 */ + private String is_delete; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/impl/WorkprocedureiosServiceOutImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/impl/WorkprocedureiosServiceOutImpl.java new file mode 100644 index 00000000..a7d9df3a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/impl/WorkprocedureiosServiceOutImpl.java @@ -0,0 +1,362 @@ + +package org.nl.wms.st.out.service.impl; + + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +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; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.utils.SecurityUtils; +import org.nl.wms.sch.tasks.CallMaterialTask; +import org.nl.wms.st.in.AreaEnum; +import org.nl.wms.st.in.BussConstant; +import org.nl.wms.st.in.WorkProcedureEnum; +import org.nl.wms.st.in.service.dto.WorkprocedureiosDto; +import org.nl.wms.st.out.service.WorkprocedureiosOutService; +import org.nl.wms.st.out.service.dto.WorkprocedureDto; +import org.nl.wql.WQL; +import org.nl.wql.core.bean.ResultBean; +import org.nl.wql.core.bean.WQLObject; +import org.nl.wql.util.WqlUtil; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + * @author geng by + * @description 服务实现 + * @date 2022-04-21 + **/ +@Service +@RequiredArgsConstructor +@Slf4j +public class WorkprocedureiosServiceOutImpl implements WorkprocedureiosOutService { + + @Override + public Map queryAll(Map whereJson, Pageable page) { + + String search = MapUtil.getStr(whereJson, "search"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + + if (ObjectUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = WQL.getWO("ST_WorkprocedureiosOut_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "a.create_time desc"); + return json; + } + + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONArray arr = wo.query().getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WorkprocedureiosDto.class); + return null; + } + + @Override + public WorkprocedureiosDto findById(Long iostorinv_id) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = wo.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(WorkprocedureiosDto.class); + } + return null; + } + + @Override + public WorkprocedureiosDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); + if (ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(WorkprocedureiosDto.class); + } + return null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(WorkprocedureiosDto dto) { + String bill_code = CodeUtil.getNewCode("OUT_STORE_CODE"); + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + dto.setIostorinv_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setBill_code(bill_code); + dto.setIo_type("1"); + dto.setBill_status("10"); + + Map endMap = this.getEndAareaByworkprocedureId(dto.getWorkprocedure_id().toString()); + String start_area = dto.getEnd_point_code(); + if (StrUtil.isEmpty(start_area)) { + String startArea = MapUtil.getStr(endMap, "start_area"); + if (StrUtil.isEmpty(startArea)) { + throw new BadRequestException("起始区域为空,枚举中未查到工序对应区域!"); + } + dto.setStart_area(startArea); + } + Long qty_unit_id = dto.getQty_unit_id(); + if (ObjectUtil.isNull(qty_unit_id)) { + String unit_id = MapUtil.getStr(endMap, "qty_unit_id"); + if (StrUtil.isEmpty(unit_id)) { + throw new BadRequestException("数量单位为空,枚举中未查到工序对应区域!"); + } + qty_unit_id = Long.valueOf(unit_id); + dto.setQty_unit_id(qty_unit_id); + } + dto.setCreate_mode("01"); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + dto.setUpdate_time(now); + dto.setCreate_time(now); + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(WorkprocedureiosDto dto) { + WorkprocedureiosDto entity = this.findById(dto.getIostorinv_id()); + if (entity == null) throw new BadRequestException("被删除或无权限,操作失败!"); + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + dto.setBill_status("10"); + + + Map endMap = this.getEndAareaByworkprocedureId(dto.getWorkprocedure_id().toString()); + String start_area = dto.getEnd_point_code(); + if (StrUtil.isEmpty(start_area)) { + String startArea = MapUtil.getStr(endMap, "start_area"); + if (StrUtil.isEmpty(startArea)) { + throw new BadRequestException("起始区域为空,枚举中未查到工序对应区域!"); + } + dto.setStart_area(startArea); + } + Long qty_unit_id = dto.getQty_unit_id(); + if (ObjectUtil.isNull(qty_unit_id)) { + String unit_id = MapUtil.getStr(endMap, "qty_unit_id"); + if (StrUtil.isEmpty(unit_id)) { + throw new BadRequestException("数量单位为空,枚举中未查到工序对应区域!"); + } + qty_unit_id = Long.valueOf(unit_id); + dto.setQty_unit_id(qty_unit_id); + } + + dto.setUpdate_time(now); + dto.setUpdate_optid(currentUserId); + dto.setUpdate_optname(nickName); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + for (Long iostorinv_id : ids) { + JSONObject param = new JSONObject(); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", now); + wo.update(param, "iostorinv_id = '" + iostorinv_id + "'"); + } + } + + @Override + public JSONArray getBillTypes() { + WQLObject wo = WQLObject.getWQLObject("sys_dict_detail"); + JSONArray arr = wo.query(" name = 'ST_INV_TYPE' and value like '01%'").getResultJSONArray(0); + return arr; + } + + @Override + public JSONArray selectEndPoint(String workprocedureid) { + /*WQLObject woDevice = WQLObject.getWQLObject("pdm_base_device");*/ + JSONArray arrPoint = new JSONArray(); + WQLObject woPoint = WQLObject.getWQLObject("sch_base_point"); + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.CCGX.getId())) { + arrPoint = woPoint.query("is_used='1' and is_delete='0' and area_type ='KQ006'").getResultJSONArray(0); + return arrPoint; + } + //包装工序 + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.BZGX.getId())) { + arrPoint = woPoint.query("is_used='1' and is_delete='0' and area_type ='KQ006'").getResultJSONArray(0); + return arrPoint; + } + //清洗工序 + if (StrUtil.equals(workprocedureid, WorkProcedureEnum.QXGX.getId())) { + + } + /* for (int i = 0; i < arrDevice.size(); i++) { + JSONObject jsonDevice = arrDevice.getJSONObject(i); + JSONArray arrPoints = woPoint.query("is_delete = '0' and device_point_type = '01' and device_id = '" + jsonDevice.getString("device_id") + "'").getResultJSONArray(0); + for (int j = 0; j < arrPoints.size(); j++) { + JSONObject jsonPoint = arrPoints.getJSONObject(j); + arrPoint.add(jsonPoint); + } + }*/ + return arrPoint; + } + + @Override + public JSONObject getStartArea(String start_point_code) { + WQLObject woPoint = WQLObject.getWQLObject("sch_base_point"); + JSONObject arrDevice = woPoint.query("is_delete = '0' and point_code = '" + start_point_code + "'").uniqueResult(0); + return arrDevice; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public Map getMaterial(Map whereJson, Pageable page) { + String where = ""; + WQLObject wo = WQLObject.getWQLObject("MD_ME_Material"); + String search = MapUtil.getStr(whereJson, "search"); + if (!StrUtil.isEmpty(search)) { + where = " AND (material_code like '%" + search + "%' OR material_name like '%" + search + "%' ) "; + } + ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), "is_delete= '0'" + where, "update_time desc"); + final JSONObject json = rb.pageResult(); + return json; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void genTask(JSONObject taskJson) { + String iostorinv_id = taskJson.getString("iostorinv_id"); + WQLObject wo = WQLObject.getWQLObject("st_ivt_workprocedureios"); + JSONObject jsonObject = wo.query("iostorinv_id = '" + iostorinv_id + "'").uniqueResult(0); + + //请求参数 载具、起点 物料,数量,客户,批次,创建方式不能为空! 终点可以不为空时,入库单据编号不能为空 + JSONObject form = new JSONObject(); + String next_point_code = jsonObject.getString("end_point_code"); + String start_point_code = jsonObject.getString("start_point_code"); + String vehicle_code = jsonObject.getString("vehicle_code"); + String material_id = jsonObject.getString("material_id"); + String cust_id = jsonObject.getString("cust_id"); + String pcsn = jsonObject.getString("pcsn"); + String is_full = jsonObject.getString("is_full"); + String ivt_workprocedure_id = jsonObject.getString("ivt_workprocedure_id"); + String create_mode = jsonObject.getString("create_mode"); + form.put("start_point_code", start_point_code); + form.put("next_point_code", next_point_code); + form.put("vehicle_code", vehicle_code); + form.put("material_id", material_id); + form.put("cust_id", cust_id); + form.put("create_mode", create_mode); + form.put("pcsn", pcsn); + form.put("is_full", is_full); + form.put("ivt_workprocedure_id", ivt_workprocedure_id); + form.put("iostorinv_id", iostorinv_id); + CallMaterialTask callMaterialTask = new CallMaterialTask(); + String task_id = callMaterialTask.createTask(form); + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("update_optid", SecurityUtils.getCurrentUserId()); + json.put("update_optname", SecurityUtils.getNickName()); + json.put("update_time", DateUtil.now()); + json.put("bill_status", "20"); + wo.update(json, "iostorinv_id = '" + iostorinv_id + "'"); + + + } + + @Override + public Map getStartPoint(Map whereJson, Pageable page) { + String material_id = MapUtil.getStr(whereJson, "material_id"); + // String is_full = MapUtil.getStr(whereJson, "is_full"); + String ivt_workprocedure_id = MapUtil.getStr(whereJson, "ivt_workprocedure_id"); + JSONObject map = new JSONObject(); + map.put("flag", "2"); + map.put("material_id", material_id); + // map.put("is_full",is_full); + map.put("ivt_workprocedure_id", ivt_workprocedure_id); + JSONObject json = WQL.getWO("ST_WorkprocedureiosOut_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "structivt.pcsn desc"); + return json; + } + + @Override + public Map getEndAareaByworkprocedureId(String workprocedure_id) { + String startArea = ""; + String qty_unit_id = ""; + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(workprocedure_id); + // TODO + switch (workProcedureEnum) { + //包装工序 + case CCGX: + startArea = AreaEnum.CPHJ.getCode(); + qty_unit_id = BussConstant.YZ_OUT_QTY_UNIT_ID; + break; + //包装工序 + case BZGX: + startArea = AreaEnum.CPHJ.getCode(); + qty_unit_id = null; + break; + // 清洗工序 + case QXGX: + startArea = AreaEnum.BCPHJ.getCode(); + qty_unit_id = BussConstant.YZ_OUT_QTY_UNIT_ID; + break; + default: + startArea = null; + qty_unit_id = null; + break; + } + JSONObject map = new JSONObject(); + map.put("start_area", startArea); + map.put("qty_unit_id", qty_unit_id); + return map; + } + + @Override + public List queryWorkprocedure() { + WQLObject wo = WQLObject.getWQLObject("pdm_base_workprocedure"); + JSONArray arr = wo.query(" is_delete = '0' and workprocedure_id != '1514444198529601536'").getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(WorkprocedureDto.class); + return null; + } + + @Override + public Map getIvtWorkprocedureId(JSONObject param) { + + String ivt_workprocedure_id = ""; + WorkProcedureEnum workProcedureEnum = WorkProcedureEnum.get(param.getString("workprocedureid")); + // TODO + switch (workProcedureEnum) { + case BZGX: + ivt_workprocedure_id = WorkProcedureEnum.BZGX.getId(); + break; + case QXGX: + ivt_workprocedure_id = WorkProcedureEnum.QXGX.getId(); + break; + } + JSONObject map = new JSONObject(); + map.put("ivt_workprocedure_id", ivt_workprocedure_id); + return map; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/wql/ST_WorkprocedureiosOut_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/wql/ST_WorkprocedureiosOut_01.wql new file mode 100644 index 00000000..39898087 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/out/service/wql/ST_WorkprocedureiosOut_01.wql @@ -0,0 +1,101 @@ +[交易说明] + 交易名: 工序出库单分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.search TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.is_full TYPEAS s_string + 输入.ivt_workprocedure_id TYPEAS s_string + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + a.*, + b.workprocedure_name, + c.material_name, + p1.point_name AS start_point_name, + p2.point_name AS end_point_name, + unit.unit_name + FROM + ST_IVT_workProcedureIOS a + LEFT JOIN pdm_bi_workprocedure b ON a.workprocedure_id = b.workprocedure_id + LEFT JOIN md_me_materialbase c ON c.material_id = a.material_id + LEFT JOIN sch_base_point p1 ON a.start_point_code = p1.point_code + LEFT JOIN sch_base_point p2 ON a.end_point_code = p2.point_code + LEFT JOIN md_pb_measureunit unit ON a.qty_unit_id = unit.measure_unit_id + + WHERE + a.is_delete = '0' + AND a.io_type = '1' + OPTION 输入.search <> "" + a.bill_code like 输入.search + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + PAGEQUERY + SELECT + point.*, + material.material_id, + material.material_name, + point.vehicle_code AS vehicle_code111, + structivt.pcsn, + structivt.canuse_qty, + structivt.frozen_qty, + structivt.ivt_qty, + structivt.warehousing_qty, + structivt.qty_unit_id, + structivt.instorage_time, + unit.unit_name + FROM + st_ivt_structivt structivt + LEFT JOIN sch_base_point point ON point.point_id = structivt.struct_id + LEFT JOIN md_me_materialbase material ON structivt.material_id = material.material_id + LEFT JOIN md_pb_measureunit unit ON structivt.qty_unit_id = unit.measure_unit_id + WHERE + point.is_delete = '0' + AND point.lock_type = '00' + AND structivt.canuse_qty > 0 + AND point.is_used = '1' + and structivt.workprocedure_id = 输入.ivt_workprocedure_id + and structivt.material_id = 输入.material_id + ENDSELECT + ENDPAGEQUERY + ENDIF + diff --git a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java index 3adaa588..35f90c6e 100644 --- a/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java +++ b/mes/hd/nladmin-system/src/test/java/org/nl/Test3.java @@ -7,13 +7,16 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import org.junit.Test; +import org.nl.exception.BadRequestException; import org.nl.wql.WQL; import org.nl.wql.core.bean.WQLObject; -public class Test3 extends BaseTest { - @org.junit.Test - public void test() { +import java.util.Calendar; +public class Test3 extends BaseTest { + @Test + public void test() { + Calendar calendar = Calendar.getInstance(); JSONArray array = WQLObject.getWQLObject("acs_route_line").query("device_code='A11'").getResultJSONArray(0); WQLObject tab = WQLObject.getWQLObject("acs_route_line"); for (int i = 1; i < 5; i++) { @@ -641,6 +644,10 @@ public class Test3 extends BaseTest { return WQLObject.getWQLObject("md_me_materialbase").query("material_code ='" + material_code + "'").uniqueResult(0); } + public JSONObject finduntiByid(String code) { + return WQLObject.getWQLObject("md_pb_measureunit").query("unit_name ='" + code + "'").uniqueResult(0); + } + //设置物料系列 @Test public void set() { @@ -741,4 +748,315 @@ public class Test3 extends BaseTest { } } + //发货单 + @Test + public void SAP_OD_Delivery() { + //// 销售TDEL接口交货单【SAP_OD_Delivery】 + WQLObject caTable = WQLObject.getWQLObject("SAP_OD_Delivery"); + JSONArray ja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("flag", "15").process().getResultJSONArray(0); + JSONObject pcsjo = new JSONObject(); + for (int i = 0; i < ja.size(); i++) { + JSONObject jo = ja.getJSONObject(i); + long sale_id = IdUtil.getSnowflake(1, 1).nextId(); + String sale_code = jo.getString("Vbeln"); + String seq_no = jo.getString("Posnr"); + String sale_type = jo.getString("VtextLf"); + //物料编码 + JSONObject matrOBj = findMaterialByid(jo.getString("Matnr")); + String material_id = matrOBj.getString("material_id"); + String status = "10"; + String sale_qty = jo.getString("Lfimg"); + String produce_seq = "1"; + String cust_code = jo.getString("Kunag"); + String cust_name = jo.getString("Name"); + //计量单位 + String Vrkme = jo.getString("Vrkme"); + JSONObject unitObj = finduntiByid(Vrkme); + String qty_unit_id = unitObj.getString("measure_unit_id"); + String plandeliver_date = jo.getString("WadatIst"); + String create_id = "1"; + String create_name = "qinx"; + String create_time = "2021-12-9 14:15"; + pcsjo.put("sale_id", sale_id); + pcsjo.put("sale_code", sale_code); + pcsjo.put("seq_no", seq_no); + pcsjo.put("sale_type", sale_type); + pcsjo.put("material_id", material_id); + pcsjo.put("status", status); + pcsjo.put("sale_qty", sale_qty); + pcsjo.put("produce_seq", produce_seq); + pcsjo.put("status", status); + pcsjo.put("cust_code", cust_code); + pcsjo.put("cust_name", cust_name); + pcsjo.put("qty_unit_id", qty_unit_id); + pcsjo.put("plandeliver_date", plandeliver_date); + pcsjo.put("create_id", create_id); + pcsjo.put("create_name", create_name); + pcsjo.put("create_time", create_time); + caTable.insert(pcsjo); + } + } + + //同步SAP销售订单表【PCS_sale_order】 + @Test + public void PCS_sale_order() { + //SAP销售订单表【PCS_sale_order】 + WQLObject caTable = WQLObject.getWQLObject("PCS_sale_order"); + JSONArray ja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("flag", "16").process().getResultJSONArray(0); + JSONObject pcsjo = new JSONObject(); + for (int i = 0; i < 10; i++) { + JSONObject jo = ja.getJSONObject(i); + long sale_id = IdUtil.getSnowflake(1, 1).nextId(); + String sale_code = jo.getString("vbeln"); + String seq_no = jo.getString("posnr"); + String sale_type = jo.getString("bezeiau"); + //物料编码 + JSONObject matrOBj = findMaterialByid(jo.getString("matnr")); + String material_id = matrOBj.getString("material_id"); + String status = "10"; + String sale_qty = jo.getString("kwmeng"); + String produce_seq = "1"; + String cust_code = jo.getString("kunnr"); + String cust_name = jo.getString("name"); + //计量单位 + String qty_unit_id = "16"; + String Vrkme = jo.getString("vrkme"); + if (StrUtil.equals("KG", Vrkme)) { + qty_unit_id = "1"; + } + String plandeliver_date = jo.getString("edatu"); + String create_id = "1"; + String create_name = "qinx"; + String create_time = "2021-12-9 14:15"; + pcsjo.put("sale_id", sale_id); + pcsjo.put("sale_code", sale_code); + pcsjo.put("seq_no", seq_no); + pcsjo.put("sale_type", sale_type); + pcsjo.put("material_id", material_id); + pcsjo.put("status", status); + pcsjo.put("sale_qty", sale_qty); + pcsjo.put("produce_seq", produce_seq); + pcsjo.put("cust_code", cust_code); + pcsjo.put("cust_name", cust_name); + pcsjo.put("qty_unit_id", qty_unit_id); + pcsjo.put("plandeliver_date", plandeliver_date); + pcsjo.put("create_id", create_id); + pcsjo.put("create_name", create_name); + pcsjo.put("create_time", create_time); + caTable.insert(pcsjo); + } + System.out.println("测试完成"); + } + + // 初始化成品分配规则表 + @Test + public void ST_IVT_StructAttributeRules() { + WQLObject st_ivt_structAttributeRules = WQLObject.getWQLObject("ST_IVT_StructAttributeRules"); + WQLObject struct_arr = WQLObject.getWQLObject("st_ivt_structattr"); + JSONArray ja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("flag", "17").process().getResultJSONArray(0); + for (int i = 0; i < ja.size(); i++) { + JSONObject ruleObj = ja.getJSONObject(i); + String structatt_id = IdUtil.getSnowflake(1, 1).nextIdStr(); + String struct_code = ruleObj.getString("struct_code"); + String struct_name = ruleObj.getString("struct_name"); + String row_code = ruleObj.getString("row_code"); + String column_code = ruleObj.getString("column_code"); + String layer_code = ruleObj.getString("layer_code"); + int in_seq_no = i * 10; + int out_seq_no = i * 10; + String load_series = "1"; + String sect_id = "1528631043496742912"; + String stor_id = "1528627995269533696"; + String struct_id = this.findStructIdByCode(struct_code); + String set_date = "2020-08-06"; + JSONObject jo = new JSONObject(); + jo.put("structatt_id", structatt_id); + jo.put("struct_code", struct_code); + jo.put("struct_name", struct_name); + jo.put("row_code", row_code); + jo.put("column_code", column_code); + jo.put("layer_code", layer_code); + jo.put("in_seq_no", in_seq_no); + jo.put("out_seq_no", out_seq_no); + jo.put("load_series", load_series); + jo.put("sect_id", sect_id); + jo.put("stor_id", stor_id); + jo.put("set_date", set_date); + jo.put("set_id", "1"); + jo.put("struct_id", struct_id); + st_ivt_structAttributeRules.insert(jo); + } + + } + + public String findStructIdByCode(String code) { + WQLObject struct_arr = WQLObject.getWQLObject("st_ivt_structattr"); + JSONObject jsonObject = struct_arr.query("struct_code ='" + code + "' and sect_code='KQ001'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonObject)) { + throw new BadRequestException("未找到编码未'" + code + "'的仓位!"); + } + return jsonObject.getString("struct_id"); + } + + + @Test + //初始化 仓位托盘表 + public void initStructVehicle() { + WQLObject ruleTable = WQLObject.getWQLObject("ST_IVT_StructRelaVehicleType"); + WQLObject struct_arr = WQLObject.getWQLObject("st_ivt_structattr"); + JSONArray ja = struct_arr.query("sect_code='KQ001'").getResultJSONArray(0); + String create_id = "1"; + String create_name = "qinx"; + String create_time = DateUtil.now(); + String is_delete = "0"; + for (int i = 0; i < ja.size(); i++) { + JSONObject jo = ja.getJSONObject(i); + String struct_id = jo.getString("struct_id"); + for (int j = 0; j < 5; j++) { + JSONObject row = new JSONObject(); + String relation_id = IdUtil.getSnowflake(1, 1).nextIdStr(); + String vehicle_type = "0" + j; + row.put("relation_id", relation_id); + row.put("struct_id", struct_id); + row.put("vehicle_type", vehicle_type); + row.put("create_id", create_id); + row.put("create_name", create_name); + row.put("create_time", create_time); + row.put("is_delete", is_delete); + ruleTable.insert(row); + } + + } + + } + + //初始化仓位对应仓位表 + @Test + public void ST_IVT_StructRelaStruct() { + WQLObject relaTable = WQLObject.getWQLObject("ST_IVT_StructRelaStruct"); + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONArray ja = WQL.getWO("QLK01").setDbname("dataSource2").addParam("flag", "18").process().getResultJSONArray(0); + for (int i = 0; i < ja.size(); i++) { + JSONObject jo = ja.getJSONObject(i); + String struct_code = jo.getString("struct_code"); + String bindstruct_code = jo.getString("bindstruct_code"); + JSONObject struObj = pointTable.query("point_code ='" + struct_code + "'").uniqueResult(0); + JSONObject bindstruObj = pointTable.query("point_code ='" + bindstruct_code + "'").uniqueResult(0); + JSONObject relaObj = new JSONObject(); + relaObj.put("struct_id", struObj.getString("point_id")); + relaObj.put("bindstruct_id", bindstruObj.getString("point_id")); + relaObj.put("overstruct_mode", "02"); + relaObj.put("set_date", "2022-6-16"); + relaObj.put("set_id", "1"); + relaTable.insert(relaObj); + } + } + + //初始化仓位code KQ001 成品 KQ004 半成品 + @Test + public void StructCode() { + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONArray resultArr = pointTable.query("(area_type='KQ001' or area_type='KQ004') and point_code not like'%CPRK%'").getResultJSONArray(0); + for (int i = 0; i < resultArr.size(); i++) { + JSONObject jo = resultArr.getJSONObject(i); + String point_code = jo.getString("point_code"); + String a = point_code.substring(0, 2); + String b = point_code.substring(2, 4); + String c = point_code.substring(4, 6); + String new_point_code ="L"+ a + "-" + c + "-" + b; + String new_point_code_name = a+"排"+c +"列"+b+"层"; + jo.put("point_code", new_point_code); + jo.put("point_name",new_point_code_name); + pointTable.update(jo); + } + } + //初始化成品出库位 + @Test + public void StructCKWCode() { + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + JSONArray resultArr = pointTable.query("(area_type='KQ006') and point_code not like'%CPRK%'").getResultJSONArray(0); + for (int i = 0; i < resultArr.size(); i++) { + JSONObject jo = resultArr.getJSONObject(i); + String point_code = jo.getString("point_code"); + String new_point_code ="CPCKW"+point_code; + jo.put("point_code", new_point_code); + pointTable.update(jo); + } + } + + @Test + public void StructCKWCode123() { + WQLObject pointTable = WQLObject.getWQLObject("sch_base_point"); + WQLObject structtable = WQLObject.getWQLObject("st_ivt_structattr"); + JSONArray resultArr = pointTable.query("1=1").getResultJSONArray(0); + for (int i = 0; i < resultArr.size(); i++) { + JSONObject jo = resultArr.getJSONObject(i); + JSONObject joo = new JSONObject(); + joo.put("struct_id", jo.getString("point_id")); + joo.put("struct_code", jo.getString("point_code")); + joo.put("struct_name", jo.getString("point_name")); + joo.put("simple_name", jo.getString("point_name")); + String area_type = jo.getString("area_type"); + String sect_id = ""; + String sect_name = ""; + if (area_type.equals("KQ001")) { + sect_id = "1528631043496742912"; + sect_name="成品库区"; + } + if (area_type.equals("KQ002")) { + sect_id = "1528631044482404352"; + sect_name="半成品库区"; + } + if (area_type.equals("KQ003")) { + sect_id = "1528631044243329024"; + sect_name="半成品上料空框暂存区"; + } + if (area_type.equals("KQ004")) { + sect_id = "1528631042318143488"; + sect_name="半成品上下料暂存区"; + } + if (area_type.equals("KQ005")) { + sect_id = "1528631044369158144"; + sect_name="半成品空框应急区"; + } + if (area_type.equals("KQ006")) { + sect_id = "1528631043685486592"; + sect_name="成品出库暂存区"; + } + if (area_type.equals("KQ007")) { + sect_id = "1528631044054585344"; + sect_name="半成品料箱区"; + } + + + joo.put("sect_id", sect_id); + joo.put("sect_code", area_type); + joo.put("sect_name", sect_name); + + joo.put("stor_id", "1528627995269533696"); + joo.put("stor_code", "F102"); + joo.put("stor_name", "紫铜成品仓库"); + joo.put("stor_type", "01"); + joo.put("capacity", "100000.00"); + joo.put("width", "1"); + joo.put("height", "2"); + joo.put("zdepth", "1"); + joo.put("is_tempstruct","1"); + joo.put("create_id","1"); + joo.put("create_name","管理员"); + joo.put("create_time","2022-05-23 15:19:14"); + joo.put("is_delete","0"); + joo.put("back_ground_color","01"); + joo.put("front_ground_color","01"); + joo.put("font_direction_scode","01"); + joo.put("is_used","1"); + joo.put("is_emptyvehicle","0"); + joo.put("storagevehicle_qty","0"); + joo.put("lock_type","00"); + joo.put("material_height_type","1"); + structtable.insert(joo); + + } + } + } diff --git a/mes/qd/.env.development b/mes/qd/.env.development index e37a9a4f..809e77ff 100644 --- a/mes/qd/.env.development +++ b/mes/qd/.env.development @@ -1,8 +1,8 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8011' -VUE_APP_WS_API = 'ws://localhost:8011' +VUE_APP_BASE_API = 'http://localhost:8010' +VUE_APP_WS_API = 'ws://localhost:8010' # 是否启用 babel-plugin-dynamic-import-node插件 VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/mes/qd/src/api/wms/pdm/producetask.js b/mes/qd/src/api/wms/pdm/producetask.js new file mode 100644 index 00000000..fd3121b5 --- /dev/null +++ b/mes/qd/src/api/wms/pdm/producetask.js @@ -0,0 +1,110 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/producetask', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/producetask/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/producetask', + method: 'put', + data + }) +} + +export function getMaterial() { + return request({ + url: 'api/producetask/getMaterial', + method: 'get' + }) +} + +export function getDevice(data) { + return request({ + url: 'api/producetask/getDevice', + method: 'post', + data + }) +} + +export function getDevice1() { + return request({ + url: 'api/producetask/getDevice1', + method: 'get' + }) +} + +export function getProduceline() { + return request({ + url: 'api/producetask/getProduceline', + method: 'get' + }) +} + +export function getCust() { + return request({ + url: 'api/producetask/getCust', + method: 'get' + }) +} + +export function getWorkprocedure() { + return request({ + url: 'api/producetask/getWorkprocedure', + method: 'get' + }) +} + +export function excelImport(data) { + return request({ + url: 'api/producetask/excelImport', + method: 'post', + data + }) +} + +export function copyAdd(data) { + return request({ + url: 'api/producetask/copyAdd', + method: 'post', + data + }) +} + +export function sortUpdate(data) { + return request({ + url: 'api/producetask/sortUpdate', + method: 'put', + data + }) +} + +export function mandFinish(data) { + return request({ + url: 'api/producetask/mandFinish', + method: 'put', + data + }) +} + +export function issued(data) { + return request({ + url: 'api/producetask/issued', + method: 'put', + data + }) +} + +export default { add, edit, del, getMaterial, getDevice, getProduceline, getCust, getWorkprocedure, excelImport, getDevice1, copyAdd, sortUpdate, mandFinish, issued } diff --git a/mes/qd/src/api/wms/pdm/workprocedure.js b/mes/qd/src/api/wms/pdm/workprocedure.js new file mode 100644 index 00000000..335b828d --- /dev/null +++ b/mes/qd/src/api/wms/pdm/workprocedure.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/workprocedure', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/workprocedure/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/workprocedure', + method: 'put', + data + }) +} + +export function changeActive(data) { + return request({ + url: 'api/workprocedure/changeActive', + method: 'put', + data + }) +} + +export function queryWorkprocedure() { + return request({ + url: '/api/workProcedure/queryWorkprocedure', + method: 'get' + }) +} + +export default { add, edit, del, changeActive, queryWorkprocedure } diff --git a/mes/qd/src/api/wms/st/in/workprocedureios.js b/mes/qd/src/api/wms/st/in/workprocedureios.js new file mode 100644 index 00000000..649e5aab --- /dev/null +++ b/mes/qd/src/api/wms/st/in/workprocedureios.js @@ -0,0 +1,73 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/workprocedureiosIn', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/workprocedureiosIn/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/workprocedureiosIn', + method: 'put', + data + }) +} + +export function getBillTypes() { + return request({ + url: 'api/workprocedureiosIn/getBillTypes', + method: 'get' + }) +} + +export function selectStartPoint(data) { + return request({ + url: 'api/workprocedureiosIn/selectStartPoint', + method: 'post', + data + }) +} + +export function getStartArea(data) { + return request({ + url: 'api/workprocedureiosIn/getStartArea', + method: 'post', + data + }) +} + +export function getEndArea(data) { + return request({ + url: 'api/workprocedureiosIn/getEndArea', + method: 'post', + data + }) +} + +export function genTask(data) { + return request({ + url: 'api/workprocedureiosIn/genTask', + method: 'post', + data + }) +} + +export function getEndAareaByworkprocedureId(data) { + return request({ + url: 'api/workprocedureiosIn/getEndAareaByworkprocedureId', + method: 'post', + data + }) +} +export default { add, edit, del, getBillTypes, selectStartPoint, getStartArea, getEndArea, genTask, getEndAareaByworkprocedureId } diff --git a/mes/qd/src/api/wms/st/out/workprocedureiosOut.js b/mes/qd/src/api/wms/st/out/workprocedureiosOut.js new file mode 100644 index 00000000..41666207 --- /dev/null +++ b/mes/qd/src/api/wms/st/out/workprocedureiosOut.js @@ -0,0 +1,89 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/workprocedureiosOut', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/workprocedureiosOut/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/workprocedureiosOut', + method: 'put', + data + }) +} + +export function getBillTypes() { + return request({ + url: 'api/workprocedureiosOut/getBillTypes', + method: 'get' + }) +} + +export function selectStartPoint(data) { + return request({ + url: 'api/workprocedureiosOut/selectStartPoint', + method: 'post', + data + }) +} + +export function getEndArea(data) { + return request({ + url: 'api/workprocedureiosOut/getEndArea', + method: 'post', + data + }) +} + +export function genTask(data) { + return request({ + url: 'api/workprocedureiosOut/genTask', + method: 'post', + data + }) +} + +export function selectEndPoint(data) { + return request({ + url: 'api/workprocedureiosOut/selectEndPoint', + method: 'post', + data + }) +} + +export function getEndAareaByworkprocedureId(data) { + return request({ + url: 'api/workprocedureiosOut/getEndAareaByworkprocedureId', + method: 'post', + data + }) +} + +export function queryWorkprocedure() { + return request({ + url: 'api/workProcedure/queryWorkprocedure', + method: 'get' + }) +} + +export function getIvtWorkprocedureId(data) { + return request({ + url: 'api/workprocedureiosOut/getIvtWorkprocedureId', + method: 'post', + data + }) +} + +export default { add, edit, del, getBillTypes, selectStartPoint, getEndArea, genTask, selectEndPoint, getEndAareaByworkprocedureId, queryWorkprocedure, getIvtWorkprocedureId } diff --git a/mes/qd/src/views/wms/st/in/EndPointDialog.vue b/mes/qd/src/views/wms/st/in/EndPointDialog.vue new file mode 100644 index 00000000..75fd7b72 --- /dev/null +++ b/mes/qd/src/views/wms/st/in/EndPointDialog.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/in/MaterDialog.vue b/mes/qd/src/views/wms/st/in/MaterDialog.vue new file mode 100644 index 00000000..5928dd03 --- /dev/null +++ b/mes/qd/src/views/wms/st/in/MaterDialog.vue @@ -0,0 +1,155 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/in/index.vue b/mes/qd/src/views/wms/st/in/index.vue new file mode 100644 index 00000000..57418fd6 --- /dev/null +++ b/mes/qd/src/views/wms/st/in/index.vue @@ -0,0 +1,768 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/out/MaterDialog.vue b/mes/qd/src/views/wms/st/out/MaterDialog.vue new file mode 100644 index 00000000..0c9c0c58 --- /dev/null +++ b/mes/qd/src/views/wms/st/out/MaterDialog.vue @@ -0,0 +1,154 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/out/StartPointDialog.vue b/mes/qd/src/views/wms/st/out/StartPointDialog.vue new file mode 100644 index 00000000..fdf0fe58 --- /dev/null +++ b/mes/qd/src/views/wms/st/out/StartPointDialog.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/mes/qd/src/views/wms/st/out/index.vue b/mes/qd/src/views/wms/st/out/index.vue new file mode 100644 index 00000000..ad8a4344 --- /dev/null +++ b/mes/qd/src/views/wms/st/out/index.vue @@ -0,0 +1,611 @@ + + + + +