diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructivtController.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructivtController.java index a9854df95..c85117957 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructivtController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/rest/StructivtController.java @@ -16,6 +16,8 @@ import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.Map; /** @@ -90,4 +92,11 @@ public class StructivtController { return new ResponseEntity<>(structivtService.getUnits(),HttpStatus.OK); } + @Log("导出数据") + @ApiOperation("导出数据") + @GetMapping(value = "/download") + public void download(@RequestParam Map map, HttpServletResponse response) throws IOException { + structivtService.download(map, response); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructivtService.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructivtService.java index 70a5989dd..7664d7622 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/StructivtService.java @@ -6,6 +6,8 @@ import com.alibaba.fastjson.JSONObject; import org.nl.wms.basedata.st.service.dto.StructivtDto; import org.springframework.data.domain.Pageable; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.util.List; import java.util.Map; @@ -69,4 +71,6 @@ public interface StructivtService { JSONObject getStructById(JSONObject param); JSONArray getUnits(); + + void download(Map map, HttpServletResponse response) throws IOException; } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java index 714f07831..3380583c4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/service/impl/StructivtServiceImpl.java @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.common.utils.FileUtil; import org.nl.modules.common.utils.SecurityUtils; import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.basedata.st.service.StructivtService; @@ -24,6 +25,10 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -168,4 +173,68 @@ public class StructivtServiceImpl implements StructivtService { return resultJSONArray; } + @Override + public void download(Map whereJson, HttpServletResponse response) throws IOException { + String material = MapUtil.getStr(whereJson, "material"); + String struct = MapUtil.getStr(whereJson, "struct"); + String stor_id = MapUtil.getStr(whereJson, "stor_id"); + String pcsn = MapUtil.getStr(whereJson, "pcsn"); + String sap_pcsn = MapUtil.getStr(whereJson, "sap_pcsn"); + String package_box_sn = MapUtil.getStr(whereJson, "package_box_sn"); + String sale_order_name = MapUtil.getStr(whereJson, "sale_order_name"); + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("stor_id", stor_id); + if (StrUtil.isNotEmpty(material)) { + map.put("material", "%" + material + "%"); + } + if (StrUtil.isNotEmpty(struct)) { + map.put("struct", "%" + struct + "%"); + } + if (StrUtil.isNotEmpty(pcsn)) { + map.put("pcsn", "%" + pcsn + "%"); + } + if (StrUtil.isNotEmpty(sap_pcsn)) { + map.put("sap_pcsn", "%" + sap_pcsn + "%"); + } + if (StrUtil.isNotEmpty(package_box_sn)) { + map.put("package_box_sn", "%" + package_box_sn + "%"); + } + if (StrUtil.isNotEmpty(sale_order_name)) { + map.put("sale_order_name", "%" + sale_order_name + "%"); + } + + //获取人员对应的仓库 + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + if (ObjectUtil.isNotEmpty(in_stor_id)) map.put("in_stor_id",in_stor_id); + + JSONArray resultJSONArray = WQL.getWO("QST_STRUCTIVT001").addParamMap(map).process().getResultJSONArray(0); + + List> list = new ArrayList<>(); + for (int i = 0; i < resultJSONArray.size(); i++) { + JSONObject json = resultJSONArray.getJSONObject(i); + Map mp = new LinkedHashMap<>(); + + mp.put("仓位编码", json.getString("struct_code")); + mp.put("仓位名称", json.getString("struct_name")); + mp.put("仓库", json.getString("stor_name")); + mp.put("库区", json.getString("sect_name")); + mp.put("物料编码", json.getString("material_code")); + mp.put("物料名称", json.getString("material_name")); + mp.put("木箱码", json.getString("package_box_sn")); + mp.put("子卷号", json.getString("pcsn")); + mp.put("sap批次", json.getString("sap_pcsn")); + mp.put("可用数", json.getString("canuse_qty")); + mp.put("冻结数", json.getString("frozen_qty")); + mp.put("库存数", json.getString("ivt_qty")); + mp.put("待入数", json.getString("warehousing_qty")); + mp.put("计量单位", json.getString("unit_name")); + mp.put("入库时间", json.getString("instorage_time")); + list.add(mp); + } + FileUtil.downloadExcel(list, response); + } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java index fac709719..0c0b488ec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/rest/LmsToMesController.java @@ -84,4 +84,11 @@ public class LmsToMesController { public ResponseEntity childRollFGOutboundComplete(@RequestBody JSONObject jo) { return new ResponseEntity<>(lmsToMesService.childRollFGOutboundComplete(jo), HttpStatus.OK); } + + @PostMapping("/LMSUnPackakge") + @Log("拆箱入库回传mes箱号、子卷号") + @ApiOperation("拆箱入库回传mes箱号、子卷号") + public ResponseEntity LmsSunPackage(@RequestBody JSONObject jo) { + return new ResponseEntity<>(lmsToMesService.LmsSunPackage(jo), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java index 6dd002cb2..87620c376 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/LmsToMesService.java @@ -87,4 +87,15 @@ public interface LmsToMesService { */ JSONObject childRollFGOutboundComplete(JSONObject param); + /** + * 拆箱入库:回传mes箱号、子卷号 + * 参数: + * { + * PackageBoxSN: 箱号 + * Details: [ + * {ContainerName: 子卷号} + * ] + * } + */ + JSONObject LmsSunPackage(JSONObject jo); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java index 2e672fe3e..93a172923 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/LmsToMesServiceImpl.java @@ -466,6 +466,50 @@ public class LmsToMesServiceImpl implements LmsToMesService { } + } catch (Exception e) { + throw new BadRequestException("MES提示错误:"+e.getMessage()); + } + return result; + } + + /** + * 拆箱入库:回传mes箱号、子卷号 + * + * @return + */ + @LokiLog(type = LokiLogType.LMS_TO_MES) + @Override + public JSONObject LmsSunPackage(JSONObject param) { + log.info("LMSUnPackakge接口输入参数为:-------------------" + param.toString()); + + JSONObject result = new JSONObject(); + if (StrUtil.equals("0", is_connect_mes)) { + result.put("status", HttpStatus.OK.value()); + result.put("message", "下发成功,但未连接MES!"); + result.put("data", new JSONObject()); + return result; + } + + JSONArray list = new JSONArray(); + + // String url = acsUrl + api; + String url = SpringContextHolder.getBean(ParamServiceImpl.class).findByCode("MES_URL").getValue(); + String api = "CamstarApi/LMSUnPackakge"; + url = url + api; + try { + String resultMsg = HttpRequest.post(url) + .body(String.valueOf(param)) + .execute().body(); + result = JSONObject.parseObject(resultMsg); + log.info("LMSUnPackakge接口输出参数为:-------------------" + result.toString()); + + + String RTYPE = result.getString("RTYPE"); + if (RTYPE.equals("E")){ + throw new BadRequestException(result.getString("RTMSG")); + } + + } catch (Exception e) { throw new BadRequestException("MES提示错误:"+e.getMessage()); } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java index 9e682078e..108617d35 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/PrintServiceImpl.java @@ -96,7 +96,7 @@ public class PrintServiceImpl implements PrintService { //保质期 String quality_guaran_period = box_jo.getString("quality_guaran_period"); //检验员 - String nspector = ""; + String nspector = "1"; //储存条件 String storage_conditions = ""; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_ST_01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_ST_01.wql index 23859b627..4242e9316 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_ST_01.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/wql/PDA_ST_01.wql @@ -160,7 +160,7 @@ FROM st_ivt_iostorinvdis dis LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dis.iostorinv_id - LEFT JOIN pdm_bi_subpackagerelation sub ON sub.package_box_SN = dis.box_no AND sub.container_name = dis.pcsn + LEFT JOIN pdm_bi_subpackagerelation sub ON sub.container_name = dis.pcsn LEFT JOIN sch_base_task task ON task.vehicle_code = dis.storagevehicle_code WHERE mst.bill_type = '1005' diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 2b2693e8b..bc0c6f415 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -1569,20 +1569,20 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { jsonAllBlockPoint = WQL.getWO("ST_OUTIVT03").addParamMap(map).process().getResultJSONArray(0); } - JSONObject mapParam = new JSONObject();// 生成移库单传入参数 - JSONArray table = new JSONArray(); // 明细参数 - mapParam.put("bill_status", "10"); - mapParam.put("bill_type", "21"); - mapParam.put("buss_type", "21"); - mapParam.put("biz_date", DateUtil.today()); - mapParam.put("stor_code", "CP01"); - mapParam.put("stor_id", "1582991156504039424"); - mapParam.put("stor_name", "成品仓库"); - mapParam.put("is_task", "1"); - for (int i = 0; i < jsonAllBlockPoint.size(); i++) { JSONObject json = jsonAllBlockPoint.getJSONObject(i); + JSONObject mapParam = new JSONObject();// 生成移库单传入参数 + JSONArray table = new JSONArray(); // 明细参数 + mapParam.put("bill_status", "10"); + mapParam.put("bill_type", "21"); + mapParam.put("buss_type", "21"); + mapParam.put("biz_date", DateUtil.today()); + mapParam.put("stor_code", "CP01"); + mapParam.put("stor_id", "1582991156504039424"); + mapParam.put("stor_name", "成品仓库"); + mapParam.put("is_task", "1"); + // 查询移入货位 JSONObject moveParam = new JSONObject(); moveParam.put("box_no", json.getString("storagevehicle_code")); @@ -1636,12 +1636,14 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONObject jsonTaskMove = wo_Task.query("task_id = '" + move_task_id + "'").uniqueResult(0); jsonTaskMove.put("handle_class", HandMoveStorAcsTask.class.getName()); wo_Task.update(jsonTaskMove); + + mapParam.put("tableData", table); + // 调用移库单新增方法 + if (ObjectUtil.isNotEmpty(jsonAllBlockPoint)) { + handMoveStorService.insertDtl2(mapParam); + } } - mapParam.put("tableData", table); - // 调用移库单新增方法 - if (ObjectUtil.isNotEmpty(jsonAllBlockPoint)) { - handMoveStorService.insertDtl2(mapParam); - } + } } else { JSONObject map = new JSONObject(); @@ -1686,20 +1688,20 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { } } - JSONObject mapParam = new JSONObject();// 生成移库单传入参数 - JSONArray table = new JSONArray(); // 明细参数 - mapParam.put("bill_status", "10"); - mapParam.put("bill_type", "21"); - mapParam.put("buss_type", "21"); - mapParam.put("biz_date", DateUtil.today()); - mapParam.put("stor_code", "CP01"); - mapParam.put("stor_id", "1582991156504039424"); - mapParam.put("stor_name", "成品仓库"); - mapParam.put("is_task", "1"); - for (int i = 0; i < jsonAllBlockPoint.size(); i++) { JSONObject json = jsonAllBlockPoint.getJSONObject(i); + JSONObject mapParam = new JSONObject();// 生成移库单传入参数 + JSONArray table = new JSONArray(); // 明细参数 + mapParam.put("bill_status", "10"); + mapParam.put("bill_type", "21"); + mapParam.put("buss_type", "21"); + mapParam.put("biz_date", DateUtil.today()); + mapParam.put("stor_code", "CP01"); + mapParam.put("stor_id", "1582991156504039424"); + mapParam.put("stor_name", "成品仓库"); + mapParam.put("is_task", "1"); + // 查询移入货位 JSONObject moveParam = new JSONObject(); moveParam.put("box_no", json.getString("storagevehicle_code")); @@ -1753,11 +1755,12 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { JSONObject jsonTaskMove = wo_Task.query("task_id = '" + move_task_id + "'").uniqueResult(0); jsonTaskMove.put("handle_class", HandMoveStorAcsTask.class.getName()); wo_Task.update(jsonTaskMove); - } - mapParam.put("tableData", table); - // 调用移库单新增方法 - if (ObjectUtil.isNotEmpty(jsonAllBlockPoint)) { - handMoveStorService.insertDtl2(mapParam); + + mapParam.put("tableData", table); + // 调用移库单新增方法 + if (ObjectUtil.isNotEmpty(jsonAllBlockPoint)) { + handMoveStorService.insertDtl2(mapParam); + } } } // 下发 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql index d038bfa7a..eaa958ccb 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/wql/QST_IVT_CHECKOUTBILL.wql @@ -374,6 +374,8 @@ OPTION 输入.bill_status <> "" dis.work_status <= 输入.bill_status ENDOPTION + + order by dis.struct_code ASC ENDSELECT ENDQUERY ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index 7811cfbcb..78947b600 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -124,6 +124,26 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { } } + // 拆分入库:回传mes + if (StrUtil.equals(bill_type, "0005")) { + JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0); + + JSONObject param = new JSONObject(); + JSONArray details = new JSONArray(); + + for (int j = 0; j < disArr.size(); j++) { + JSONObject json = disArr.getJSONObject(j); + param.put("PackageBoxSN", json.getString("box_no")); + + JSONObject jsonParamDtl = new JSONObject(); + jsonParamDtl.put("ContainerName", json.getString("pcsn")); + + details.add(jsonParamDtl); + } + param.put("Details", details); + new LmsToMesServiceImpl().LmsSunPackage(param); + } + // 销售出库 if (StrUtil.equals(bill_type, "1001") && is_productstore.equals("1")) { // 2.回传mes @@ -580,7 +600,28 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { jo_mst.put("upload_time", DateUtil.now()); WQLObject.getWQLObject("ST_IVT_IOStorInv").update(jo_mst); } - // 销售出库 + + // 拆分入库:回传mes + if (StrUtil.equals(bill_type, "0005")) { + JSONArray disArr = wo_dis.query("iostorinv_id = '" + jo_mst.getString("iostorinv_id") + "'").getResultJSONArray(0); + + JSONObject param = new JSONObject(); + JSONArray details = new JSONArray(); + + for (int j = 0; j < disArr.size(); j++) { + JSONObject json = disArr.getJSONObject(j); + param.put("PackageBoxSN", json.getString("box_no")); + + JSONObject jsonParamDtl = new JSONObject(); + jsonParamDtl.put("ContainerName", json.getString("pcsn")); + + details.add(jsonParamDtl); + } + param.put("Details", details); + new LmsToMesServiceImpl().LmsSunPackage(param); + } + + // 销售出库 if (StrUtil.equals(bill_type, "1001")) { // 1.回传sap JSONArray paramSapMstArr = new JSONArray(); diff --git a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue index 5f9e1f902..cdd2e7f7b 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/st/ivt/index.vue @@ -92,7 +92,18 @@ - + + + 导出Excel + + @@ -134,6 +145,8 @@ import pagination from '@crud/Pagination' import crudPoint from '@/views/wms/sch/point/point' import crudStorattr from '@/views/wms/basedata/st/stor/storattr' import crudUserStor from '@/views/wms/basedata/st/userStor/userStor' +import { download } from '@/api/data' +import { downloadFile } from '@/utils' const defaultForm = { stockrecord_id: null, cascader: null, struct_id: null, struct_code: null, struct_name: null, workprocedure_id: null, material_id: null, material_code: null, quality_scode: null, pcsn: null, canuse_qty: null, frozen_qty: null, ivt_qty: null, warehousing_qty: null, qty_unit_id: null, instorage_time: null, sale_id: null } export default { @@ -177,6 +190,18 @@ export default { }, hand(value) { this.crud.toQuery() + }, + downdtl() { + if (this.currentRow !== null) { + crud.downloadLoading = true + download('/api/structivt/download', this.crud.query).then(result => { + debugger + downloadFile(result, '成品库存', 'xlsx') + crud.downloadLoading = false + }).catch(() => { + crud.downloadLoading = false + }) + } } } }