From 7af4c8cc208c3af02cae150cbbd93ccf629b1042 Mon Sep 17 00:00:00 2001 From: liuxy Date: Fri, 1 Jul 2022 13:40:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rest/DevicerepairmstController.java | 16 ++ .../service/DevicerepairmstService.java | 9 + .../impl/DevicerepairmstServiceImpl.java | 185 ++++++++++++++++++ .../sb/repair/wql/EM_BI_DEVICEREPAIR001.wql | 24 +++ mes/qd/src/api/wms/sb/devicerepairmst.js | 10 +- .../repair/devicerepairpa/AddChangeDialog.vue | 25 ++- .../sb/repair/devicerepairpa/BomDialog.vue | 153 +++++++++++++++ .../repair/devicerepairpa/ReceiveDialog.vue | 14 +- 8 files changed, 431 insertions(+), 5 deletions(-) create mode 100644 mes/qd/src/views/wms/sb/repair/devicerepairpa/BomDialog.vue diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/rest/DevicerepairmstController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/rest/DevicerepairmstController.java index 7e9fa622..e815b9e2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/rest/DevicerepairmstController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/rest/DevicerepairmstController.java @@ -40,6 +40,14 @@ public class DevicerepairmstController { return new ResponseEntity<>(devicerepairmstService.queryAll(whereJson, page), HttpStatus.OK); } + @GetMapping("/queryBom") + @Log("查询备件bom") + @ApiOperation("查询备件bom") + //@PreAuthorize("@el.check('devicerepairmst:list')") + public ResponseEntity queryBom(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(devicerepairmstService.queryBom(whereJson, page), HttpStatus.OK); + } + @PostMapping @Log("新增维修单维护") @ApiOperation("新增维修单维护") @@ -166,4 +174,12 @@ public class DevicerepairmstController { public ResponseEntity getFileBom(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(devicerepairmstService.getFileBom(whereJson),HttpStatus.OK); } + + @Log("保存维修领用") + @ApiOperation("保存维修领用") + @PostMapping("/submitReceive") + public ResponseEntity submitReceive(@RequestBody JSONObject whereJson) { + devicerepairmstService.submitReceive(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/DevicerepairmstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/DevicerepairmstService.java index 9e1d6f6a..4133153e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/DevicerepairmstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/DevicerepairmstService.java @@ -163,4 +163,13 @@ public interface DevicerepairmstService { * @param whereJson / */ JSONArray getFileBom(JSONObject whereJson); + + /** + * 保存维修领用 + * + * @param whereJson / + */ + void submitReceive(JSONObject whereJson); + + Map queryBom(Map whereJson, Pageable page); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/impl/DevicerepairmstServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/impl/DevicerepairmstServiceImpl.java index b4b05b50..4945f886 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/impl/DevicerepairmstServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/service/impl/DevicerepairmstServiceImpl.java @@ -10,9 +10,13 @@ import org.nl.exception.BadRequestException; import org.nl.modules.security.service.dto.JwtUserDto; import org.nl.modules.system.util.CodeUtil; import org.nl.wms.basedata.master.service.ClassstandardService; +import org.nl.wms.basedata.st.service.StorattrService; +import org.nl.wms.basedata.st.service.dto.StorattrDto; +import org.nl.wms.sb.core.service.impl.SparePartInServiceImpl; import org.nl.wms.sb.repair.service.DevicerepairmstService; import org.nl.wms.sb.repair.service.dto.DevicerepairmstDto; import org.nl.wql.WQL; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -43,6 +47,8 @@ import cn.hutool.core.util.ObjectUtil; @Slf4j public class DevicerepairmstServiceImpl implements DevicerepairmstService { private final ClassstandardService classstandardService; + private final StorattrService storattrService; + private final SparePartInServiceImpl sparePartInService; @Override public Map queryAll(Map whereJson, Pageable page) { @@ -514,6 +520,7 @@ public class DevicerepairmstServiceImpl implements DevicerepairmstService { String material_id = whereJson.getString("material_id"); String device_id = whereJson.getString("device_id"); String device_code = whereJson.getString("device_code"); + String repair_dtl_id = whereJson.getString("repair_dtl_id"); int qty = whereJson.getIntValue("qty"); WQLObject itemTab = WQLObject.getWQLObject("EM_BI_DeviceRepairItems"); @@ -542,8 +549,186 @@ public class DevicerepairmstServiceImpl implements DevicerepairmstService { jsonObject.put("repair_item_code", jsonItem.getString("repair_item_code")); jsonObject.put("device_id", device_id); jsonObject.put("device_code", device_code); + jsonObject.put("repair_dtl_id", repair_dtl_id); } return resultArr; } + @Override + @Transactional(rollbackFor = Exception.class) + public void submitReceive(JSONObject whereJson) { + JSONObject jsonMst = whereJson.getJSONObject("mst"); // 维修单主表 + JSONArray tableData = whereJson.getJSONArray("tableData"); // 更换备件明细 + + WQLObject recoudTab = WQLObject.getWQLObject("EM_BI_DeviceRepairReplaceRecord"); // 设备维修单更换记录表 + WQLObject spareBOMTab = WQLObject.getWQLObject("EM_BI_EquipmentSpareBOM"); // 设备档案BOM备件表 + WQLObject mst_wql = WQLObject.getWQLObject("EM_BI_IOStorInv"); // 出入库主表 + WQLObject dtl_wql = WQLObject.getWQLObject("EM_BI_IOStorInvDtl"); // 出入库明细表 + WQLObject dis_wql = WQLObject.getWQLObject("EM_BI_IOStorInvDis"); // 出入库分配表 + + Long currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getNickName(); + String now = DateUtil.now(); + + JSONObject stor = WQLObject.getWQLObject("st_ivt_bsrealstorattr").query("is_attachment = '1'").uniqueResult(0); + String stor_id = stor.getString("stor_id"); + // 出库单主表标识 + String iostorinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + + for (int i = 0; i < tableData.size(); i++) { + JSONObject json = tableData.getJSONObject(i); + + // 插入设备维修单更换记录表 + JSONObject jsonRecord = new JSONObject(); + jsonRecord.put("repair_recode_id",IdUtil.getSnowflake(1,1).nextId()); + jsonRecord.put("repair_dtl_id", json.get("repair_dtl_id")); + jsonRecord.put("repair_id", jsonMst.get("repair_id")); + jsonRecord.put("repair_item_id", json.get("repair_item_id")); + jsonRecord.put("old_sparepart_only_id", json.get("sparepart_only_id")); + jsonRecord.put("new_sparepart_only_id", json.get("change_only_id")); + jsonRecord.put("material_id", json.get("material_id")); + jsonRecord.put("pcsn", json.getString("pcsn")); + jsonRecord.put("real_qty", json.get("qty")); + jsonRecord.put("qty_unit_id", json.get("qty_unit_id")); + jsonRecord.put("qty_unit_name", json.get("qty_unit_name")); + recoudTab.insert(jsonRecord); + + // 如果维修更换记录表中 ‘原备件唯一标识为空’ 则插入 ‘设备档案BOM备件表’ + String old_sparepart_only_id = jsonRecord.getString("old_sparepart_only_id"); + if (ObjectUtil.isEmpty(old_sparepart_only_id)) { + JSONObject jsonSpareBom = new JSONObject(); + jsonSpareBom.put("device_file_spare_id", IdUtil.getSnowflake(1,1).nextId()); + jsonSpareBom.put("devicerecord_id",jsonMst.get("devicerecord_id")); + jsonSpareBom.put("sparepart_only_id", json.get("change_only_id")); + jsonSpareBom.put("material_id", json.get("material_id")); + jsonSpareBom.put("pcsn", json.getString("pcsn")); + jsonSpareBom.put("qty", json.get("qty")); + jsonSpareBom.put("qty_unit_id", json.get("qty_unit_id")); + jsonSpareBom.put("qty_unit_name", json.getString("qty_unit_name")); + spareBOMTab.insert(jsonSpareBom); + } else { + JSONObject jsonSpareBom = spareBOMTab.query("sparepart_only_id = '" + old_sparepart_only_id + "'").uniqueResult(0); + jsonSpareBom.put("sparepart_only_id",json.get("change_only_id")); + jsonSpareBom.put("material_id", json.get("material_id")); + jsonSpareBom.put("pcsn", json.getString("pcsn")); + jsonSpareBom.put("qty", json.get("qty")); + jsonSpareBom.put("qty_unit_id", json.get("qty_unit_id")); + jsonSpareBom.put("qty_unit_name", json.getString("qty_unit_name")); + spareBOMTab.update(jsonSpareBom); + } + + // 插入备件出入库明细 + JSONObject dis_jo = new JSONObject(); + //判断该分配是否存在明细 + JSONObject dtl = dtl_wql.query("iostorinv_id = '"+iostorinv_id+"' AND material_id = '"+json.getString("material_id")+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(dtl)){ + //插入一条入库明细 + dtl = new JSONObject(); + dtl.put("iostorinvdtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + dtl.put("iostorinv_id", iostorinv_id); + JSONArray dtl_rows = dtl_wql.query("iostorinv_id = '"+iostorinv_id+"'").getResultJSONArray(0); + dtl.put("seq_no", (dtl_rows.size() + 1) + ""); + dtl.put("bill_status", "40"); + dtl.put("material_id",json.get("material_id")); + dtl.put("pcsn",json.getString("pcsn")); + dtl.put("qty_unit_id",json.get("qty_unit_id")); + dtl.put("qty_unit_name",json.getString("qty_unit_name")); + dtl.put("source_billdtl_id",jsonMst.getString("repair_id")); + dtl.put("base_billdtl_id",jsonMst.getString("repair_id")); + dtl.put("source_bill_type",jsonMst.getString("maintenancecycle")); + dtl.put("base_bill_type",jsonMst.getString("maintenancecycle")); + dtl.put("source_bill_code",jsonMst.getString("repair_code")); + dtl.put("base_bill_code",jsonMst.getString("repair_code")); + dtl.put("source_bill_table","EM_BI_DeviceRepairMst"); + dtl.put("base_bill_table","EM_BI_DeviceRepairMst"); + dtl.put("plan_qty","1"); + dtl.put("real_qty","1"); + WQLObject.getWQLObject("EM_BI_IOStorInvDtl").insert(dtl); + }else { + dtl.put("plan_qty",dtl.getDoubleValue("plan_qty")+1); + dtl.put("real_qty",dtl.getDoubleValue("real_qty")+1); + WQLObject.getWQLObject("EM_BI_IOStorInvDtl").update(dtl); + } + + dis_jo.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId()); + dis_jo.put("iostorinv_id", iostorinv_id); + dis_jo.put("iostorinvdtl_id", dtl.getString("iostorinvdtl_id")); + dis_jo.put("disseq_no", i + 1); + dis_jo.put("material_id", dtl.getString("material_id")); + dis_jo.put("pcsn", "999999"); + dis_jo.put("real_qty", json.get("qty")); + dis_jo.put("work_status", "99"); + dis_jo.put("qty_unit_id", dtl.getString("qty_unit_id")); + dis_jo.put("qty_unit_name", dtl.getString("qty_unit_name")); + JSONObject jsonIvt = WQLObject.getWQLObject("ST_IVT_StructIvt").query("stor_id = '"+stor.getString("stor_id")+"' and material_id = '"+json.getString("material_id")+"' and pcsn = '"+json.getString("pcsn")+"'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonIvt)) throw new BadRequestException("库存不足"); + JSONObject struct = WQLObject.getWQLObject("st_ivt_structattr").query("struct_id = '"+jsonIvt.getString("struct_id")+"'").uniqueResult(0); + dis_jo.put("sect_id", struct.getString("sect_id")); + dis_jo.put("sect_code", struct.getString("sect_code")); + dis_jo.put("sect_name", struct.getString("sect_name")); + dis_jo.put("struct_id", struct.getString("struct_id")); + dis_jo.put("struct_code", struct.getString("struct_code")); + dis_jo.put("struct_name", struct.getString("struct_name")); + dis_jo.put("sparepart_only_id", json.get("change_only_id")); + dis_jo.put("operate_optid", currentUserId); + dis_jo.put("operate_optname", nickName); + dis_jo.put("operate_time", now); + dis_wql.insert(dis_jo); + } + + //插入主表 + JSONObject io_mst = new JSONObject(); + String bill_code = CodeUtil.getNewCode("IO_CODE"); + io_mst.put("iostorinv_id", iostorinv_id); + io_mst.put("bill_code", bill_code); + io_mst.put("buss_type","0109"); + io_mst.put("io_type", "1"); + io_mst.put("bill_type", "010901"); + io_mst.put("biz_date", DateUtil.today()); + StorattrDto storattrDto = storattrService.findById(Long.parseLong(stor_id)); + String stor_code = storattrDto.getStor_code(); + String stor_name = storattrDto.getStor_name(); + io_mst.put("stor_id", stor_id); + io_mst.put("stor_code", stor_code); + io_mst.put("stor_name", stor_name); + JSONArray dis_num = dis_wql.query("iostorinv_id = '"+iostorinv_id+"'").getResultJSONArray(0); + io_mst.put("total_qty", dis_num.size()); + JSONArray dtl_num = dtl_wql.query("iostorinv_id = '"+iostorinv_id+"'").getResultJSONArray(0); + io_mst.put("detail_count", dtl_num.size()); + io_mst.put("bill_status", "40"); + io_mst.put("create_mode", "01"); + io_mst.put("input_optid", currentUserId + ""); + io_mst.put("input_optname", nickName); + io_mst.put("input_time", now); + io_mst.put("update_optid", currentUserId + ""); + io_mst.put("update_optname", nickName); + io_mst.put("update_time", now); + io_mst.put("device_id", jsonMst.get("device_id")); + io_mst.put("device_code", jsonMst.get("device_code")); + io_mst.put("device_name", jsonMst.get("device_name")); + io_mst.put("is_delete", "0"); + io_mst.put("is_upload", "0"); + JwtUserDto currentUser = (JwtUserDto) SecurityUtils.getCurrentUser(); + Long deptId = currentUser.getDeptId(); + io_mst.put("sysdeptid", deptId + ""); + io_mst.put("syscompanyid", deptId + ""); + io_mst.put("bizdeptid", deptId + ""); + + mst_wql.insert(io_mst); + sparePartInService.confirmMst(iostorinv_id); + + } + + @Override + public Map queryBom(Map whereJson, Pageable page) { + String sparepart_only_id = MapUtil.getStr(whereJson, "sparepart_only_id"); + HashMap map = new HashMap<>(); + map.put("flag", "5"); + if (ObjectUtil.isNotEmpty(sparepart_only_id)) map.put("sparepart_only_id", "%"+sparepart_only_id+"'%"); + + JSONObject jsonObject = WQL.getWO("EM_BI_DEVICEREPAIR001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), ""); + + return jsonObject; + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/wql/EM_BI_DEVICEREPAIR001.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/wql/EM_BI_DEVICEREPAIR001.wql index 865bce63..9365e9b0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/wql/EM_BI_DEVICEREPAIR001.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sb/repair/wql/EM_BI_DEVICEREPAIR001.wql @@ -24,6 +24,7 @@ 输入.end_time TYPEAS s_string 输入.device_bom_id TYPEAS s_string 输入.material_id TYPEAS s_string + 输入.sparepart_only_id TYPEAS s_string [临时表] @@ -162,6 +163,29 @@ ENDQUERY ENDIF + IF 输入.flag = "5" + PAGEQUERY + SELECT + mst.*, + file.device_code, + file.device_name, + mater.material_code, + mater.material_name + FROM + EM_BI_EquipmentSpareBOM mst + LEFT JOIN EM_BI_EquipmentFile file ON file.devicerecord_id = mst.devicerecord_id + LEFT JOIN md_me_materialbase mater ON mater.material_id = mst.material_id + WHERE + 1=1 + + OPTION 输入.sparepart_only_id <> "" + mst.sparepart_only_id like 输入.sparepart_only_id + ENDOPTION + + ENDSELECT + ENDPAGEQUERY + ENDIF + diff --git a/mes/qd/src/api/wms/sb/devicerepairmst.js b/mes/qd/src/api/wms/sb/devicerepairmst.js index 1decc551..b7050f2f 100644 --- a/mes/qd/src/api/wms/sb/devicerepairmst.js +++ b/mes/qd/src/api/wms/sb/devicerepairmst.js @@ -128,4 +128,12 @@ export function getFileBom(data) { }) } -export default { add, edit, del, getDtl, submit, startRepair, endRepair, submitRepair, confirmRepair, submitResuft, getResult, outRepair, checkRepair, uditRepair, getNormBom, getFileBom } +export function submitReceive(data) { + return request({ + url: 'api/devicerepairmst/submitReceive', + method: 'post', + data + }) +} + +export default { add, edit, del, getDtl, submit, startRepair, endRepair, submitRepair, confirmRepair, submitResuft, getResult, outRepair, checkRepair, uditRepair, getNormBom, getFileBom, submitReceive } diff --git a/mes/qd/src/views/wms/sb/repair/devicerepairpa/AddChangeDialog.vue b/mes/qd/src/views/wms/sb/repair/devicerepairpa/AddChangeDialog.vue index eceac88e..ad12c6a8 100644 --- a/mes/qd/src/views/wms/sb/repair/devicerepairpa/AddChangeDialog.vue +++ b/mes/qd/src/views/wms/sb/repair/devicerepairpa/AddChangeDialog.vue @@ -96,7 +96,7 @@ + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + + + + + + diff --git a/mes/qd/src/views/wms/sb/repair/devicerepairpa/ReceiveDialog.vue b/mes/qd/src/views/wms/sb/repair/devicerepairpa/ReceiveDialog.vue index 20a19747..6be163c4 100644 --- a/mes/qd/src/views/wms/sb/repair/devicerepairpa/ReceiveDialog.vue +++ b/mes/qd/src/views/wms/sb/repair/devicerepairpa/ReceiveDialog.vue @@ -234,18 +234,28 @@ export default { this.form3.repair_item_code = row.repair_item_code this.form3.repair_item_id = row.repair_item_id this.form3.repair_item_name = row.repair_item_name + this.form3.repair_dtl_id = row.repair_dtl_id + this.form3.device_id = row.device_id }, tableChanged(rows) { + debugger const arr = rows arr.forEach((item) => { this.tableData.push(item) }) }, submitReceive() { - const _selectData = this.$refs.table.selection - if (_selectData.length === 0) { + const data = { + 'tableData': this.tableData, + 'mst': this.form3 + } + if (this.tableData.length === 0) { return this.crud.notify('设备bom不能为空', CRUD.NOTIFICATION_TYPE.INFO) } + crudDevicerepairmst.submitReceive(data).then(res => { + this.crud.notify('操作成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }) } } }