diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java index 9e95658..0cb9de0 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_out_kiln_truss/LnshOutKilnTrussDeviceDriver.java @@ -273,16 +273,14 @@ public class LnshOutKilnTrussDeviceDriver extends AbstractOpcDeviceDriver implem if (result.getStatus() == HttpStatus.OK.value()) { JSONObject jsonObject = JSONObject.parseObject(result.body()); if (ObjectUtil.isNotEmpty(jsonObject) && "200".equals(jsonObject.getString("status"))) { - Boolean isPackage = jsonObject.getBoolean("data"); - if (isPackage == null) { - this.writing(24); - } else { // this.writing(isPackage ? 22 : 23); //全部都是优先出窑 - this.writing(22); - } + this.writing(22); this.setRequireSucess(true); } + }else{ + this.writing(24); + this.setRequireSucess(true); } } return true; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java index e8bf666..03ca98c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/lnsh/lnsh_package_pallet_manipulator/ItemProtocol.java @@ -214,6 +214,7 @@ public class ItemProtocol { list.add(new ItemDto(item_putStation, "当前工位", "DB1.D4")); list.add(new ItemDto(item_material, "物料", "DB1.STRING8.50")); list.add(new ItemDto(item_qty, "拆/码垛数量", "DB1.D60")); + //砖块重量 list.add(new ItemDto(item_order_qty, "工单总数量", "DB1.D64")); list.add(new ItemDto(item_open_time, "开机时间", "DB1.STRING68.50")); list.add(new ItemDto(item_standby_time, "待机时间", "DB1.D120")); @@ -235,6 +236,7 @@ public class ItemProtocol { list.add(new ItemDto(item_to_error, "故障代码", "DB2.W2")); list.add(new ItemDto(item_to_material, "物料", "DB2.STRING4.50")); list.add(new ItemDto(item_to_order_No, "工单号", "DB2.STRING56.50")); + //下发重量 list.add(new ItemDto(item_to_order_qty, "工单数量", "DB2.D108")); list.add(new ItemDto(item_to_product_code, "产品编号", "DB2.W112")); list.add(new ItemDto(item_to_AlongSide, "A长边", "DB2.W114")); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index 0c9b435..6564ae7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -262,6 +262,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { JSONObject json = orders.getJSONObject(i); String producetask_code = json.getString("workorder_code"); + //分拣单重 + String to_order_qty2 = json.getString("dz"); + float floatValue = Float.parseFloat(to_order_qty2); + Float to_order_qty1=floatValue*1000; + String to_order_qty=to_order_qty1.toString(); String device_code = json.getString("device_code"); String material_code = json.getString("material_number"); String qty = json.getString("plan_qty"); @@ -339,7 +344,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { } HashMap map = new HashMap<>(); map.put("to_order_No", producetask_code); - map.put("to_order_qty", qty); + map.put("to_order_qty", to_order_qty); map.put("to_material", material_code); map.put("to_product_code", product_code); map.put("to_AlongSide", AlongSide); @@ -498,7 +503,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { status.put("weight", driver.getWeight()); status.put("material", driver.getMaterial()); status.put("barcode", driver.getBarcode()); - status.put("qty", driver.getEncoder_qty()-1); + status.put("qty", driver.getEncoder_qty()); if(driver.getAlongSide()!=0) { Integer dz=driver.getAlongSide(); double weight=dz/1000.00; @@ -549,7 +554,11 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { status.put("putStation", driver.getPut_station()); status.put("material", driver.getMaterial()); status.put("qty", driver.getQty()); - status.put("order_qty", driver.getOrder_qty()); + //单重 + Float dz= new Float(driver.getOrder_qty()/1000); + //总重 + Float weight=dz*driver.getQty(); + status.put("weight", weight); status.put("open_time", driver.getOpen_time()); status.put("standby_time", driver.getStandby_time()); status.put("production_time", driver.getProduction_time()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql index 5bb6faf..75aa554 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/wql/QMD_ME_MATERIAL.wql @@ -59,7 +59,7 @@ mb.material_number like '%' 输入.material_number '%' ENDOPTION OPTION 输入.material_name <> "" - mb.material_name = like '%' 输入.material_name '%' + mb.material_name like '%' 输入.material_name '%' ENDOPTION ENDSELECT ENDPAGEQUERY diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java index 12a8102..7fcfbe1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/dashboard/service/DashboardService.java @@ -631,7 +631,12 @@ public class DashboardService { rowDatum = new JSONObject(); rowDatum.put("key", "数量"); - rowDatum.put("value", datum.getIntValue("qty") + "块"); + if(datum.getIntValue("qty")==1){ + Integer number=datum.getIntValue("qty")-1; + rowDatum.put("value", number + "块"); + }else{ + rowDatum.put("value", datum.getIntValue("qty") + "块"); + } rowData.add(rowDatum); rowDatum = new JSONObject(); rowDatum.put("key", "单重"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java index 07b3a6e..c102239 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/service/impl/WorkorderServiceImpl.java @@ -2,15 +2,19 @@ package org.nl.wms.pdm.service.impl; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.io.IoUtil; 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 cn.hutool.poi.excel.BigExcelWriter; +import cn.hutool.poi.excel.ExcelUtil; 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.apache.poi.xssf.streaming.SXSSFSheet; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.FileUtil; import org.nl.modules.common.utils.SecurityUtils; @@ -34,7 +38,9 @@ import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.util.LinkedHashMap; import java.util.List; @@ -538,63 +544,104 @@ public class WorkorderServiceImpl implements WorkordeService { return WQLObject.getWQLObject("md_me_materialbase").query().getResultJSONArray(0); } - @Override +// @Override +// public void downloadExcel(Map params, HttpServletResponse response) { +// String produceorder_code = MapUtil.getStr(params, "produceorder_code"); +// String material = MapUtil.getStr(params, "material"); +// String begin_time = MapUtil.getStr(params, "begin_time"); +// String end_time = MapUtil.getStr(params, "end_time"); +// String order_status = MapUtil.getStr(params, "order_status"); +// JSONObject map = new JSONObject(); +// map.put("flag", "7"); +// if (StrUtil.isNotBlank(begin_time)) { +// map.put("begin_time", begin_time + " 00:00:00"); +// } +// if (StrUtil.isNotBlank(end_time)) { +// map.put("end_time", end_time + " 23:59:59"); +// } +// map.put("region_code", MapUtil.getStr(params, "region_code")); +// if (StrUtil.isNotEmpty(order_status)) { +// order_status = order_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); +// } +// map.put("order_status", order_status); +// //处理状态为未完成 +// if (StrUtil.isNotEmpty(order_status) && order_status.contains("-1")) { +// map.put("unFinish", "-1"); +// map.put("order_status", order_status.replace("-1", "")); +// } +// if (StrUtil.isNotEmpty(produceorder_code)) { +// map.put("produceorder_code", "%" + produceorder_code + "%"); +// } +// if (StrUtil.isNotEmpty(material)) { +// map.put("material", "%" + material + "%"); +// } +// JSONArray workorders = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); +// List> list = workorders.stream().map(o -> { +// JSONObject workorder = (JSONObject) o; +// Map workorder_map = new LinkedHashMap<>(); +// workorder_map.put("工单号", workorder.getString("workorder_code")); +// workorder_map.put("工单状态", workorder.getString("order_status")); +// workorder_map.put("设备", workorder.getString("device_name")); +// workorder_map.put("物料编码", workorder.getString("material_number")); +// workorder_map.put("载具类型", workorder.getString("vehicle_type")); +// workorder_map.put("计划数量", workorder.getString("plan_qty")); +// workorder_map.put("计划生产日期", workorder.getString("plan_date")); +// workorder_map.put("实际开始时间", workorder.getString("realproducestart_date")); +// workorder_map.put("实际结束时间", workorder.getString("realproduceend_date")); +// workorder_map.put("实际生产数量", workorder.getString("real_qty")); +// workorder_map.put("合格数量", workorder.getString("qualified_qty")); +// workorder_map.put("不合格数量", workorder.getString("unqualified_qty")); +// return workorder_map; +// }).collect(Collectors.toList()); +// +// try { +// FileUtil.downloadExcel(list, response); +// } catch (IOException e) { +// throw new RuntimeException(e); +// } +// } + @Override public void downloadExcel(Map params, HttpServletResponse response) { - String produceorder_code = MapUtil.getStr(params, "produceorder_code"); - String material = MapUtil.getStr(params, "material"); - String begin_time = MapUtil.getStr(params, "begin_time"); - String end_time = MapUtil.getStr(params, "end_time"); - String order_status = MapUtil.getStr(params, "order_status"); - JSONObject map = new JSONObject(); - map.put("flag", "7"); - if (StrUtil.isNotBlank(begin_time)) { - map.put("begin_time", begin_time + " 00:00:00"); - } - if (StrUtil.isNotBlank(end_time)) { - map.put("end_time", end_time + " 23:59:59"); - } - map.put("region_code", MapUtil.getStr(params, "region_code")); - if (StrUtil.isNotEmpty(order_status)) { - order_status = order_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); - } - map.put("order_status", order_status); - //处理状态为未完成 - if (StrUtil.isNotEmpty(order_status) && order_status.contains("-1")) { - map.put("unFinish", "-1"); - map.put("order_status", order_status.replace("-1", "")); - } - if (StrUtil.isNotEmpty(produceorder_code)) { - map.put("produceorder_code", "%" + produceorder_code + "%"); - } - if (StrUtil.isNotEmpty(material)) { - map.put("material", "%" + material + "%"); - } - JSONArray workorders = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); - List> list = workorders.stream().map(o -> { - JSONObject workorder = (JSONObject) o; - Map workorder_map = new LinkedHashMap<>(); - workorder_map.put("工单号", workorder.getString("workorder_code")); - workorder_map.put("工单状态", workorder.getString("order_status")); - workorder_map.put("设备", workorder.getString("device_name")); - workorder_map.put("物料编码", workorder.getString("material_number")); - workorder_map.put("载具类型", workorder.getString("vehicle_type")); - workorder_map.put("计划数量", workorder.getString("plan_qty")); - workorder_map.put("计划生产日期", workorder.getString("plan_date")); - workorder_map.put("实际开始时间", workorder.getString("realproducestart_date")); - workorder_map.put("实际结束时间", workorder.getString("realproduceend_date")); - workorder_map.put("实际生产数量", workorder.getString("real_qty")); - workorder_map.put("合格数量", workorder.getString("qualified_qty")); - workorder_map.put("不合格数量", workorder.getString("unqualified_qty")); - return workorder_map; - }).collect(Collectors.toList()); - try { - FileUtil.downloadExcel(list, response); - } catch (IOException e) { - throw new RuntimeException(e); } + /** + * 导出excel + */ + /** + * 系统临时目录 + *
+ * windows 包含路径分割符,但Linux 不包含, + * 在windows \\==\ 前提下, + * 为安全起见 同意拼装 路径分割符, + *
+     *       java.io.tmpdir
+     *       windows : C:\Users/xxx\AppData\Local\Temp\
+     *       linux: /temp
+     * 
+ */ + public static final String SYS_TEM_DIR = System.getProperty("java.io.tmpdir") + File.separator; + public static void downloadExcel(List> list, HttpServletResponse response) throws IOException { + String tempPath = SYS_TEM_DIR + IdUtil.fastSimpleUUID() + ".xlsx"; + File file = new File(tempPath); + BigExcelWriter writer = ExcelUtil.getBigWriter(file); + // 一次性写出内容,使用默认样式,强制输出标题 + writer.write(list, true); + SXSSFSheet sheet = (SXSSFSheet)writer.getSheet(); + //上面需要强转SXSSFSheet 不然没有trackAllColumnsForAutoSizing方法 + sheet.trackAllColumnsForAutoSizing(); + //列宽自适应 + writer.autoSizeColumnAll(); + //response为HttpServletResponse对象 + response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8"); + //test.xls是弹出下载对话框的文件名,不能为中文,中文请自行编码 + response.setHeader("Content-Disposition", "attachment;filename=file.xlsx"); + ServletOutputStream out = response.getOutputStream(); + // 终止后删除临时文件 + file.deleteOnExit(); + writer.flush(out, true); + //此处记得关闭输出Servlet流 + IoUtil.close(out); } - @Override public void reportWorkOrderDaily(long workOrderId, int qty, int qualifiedQty, int unqualifiedQty, double weight, double avgPieceWeight) { String today = DateUtil.today(); @@ -727,4 +774,5 @@ public class WorkorderServiceImpl implements WorkordeService { TaskUtils.addACSUpdateColum(workOrder); workOrderTable.update(workOrder); } + } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql index 57a9fcf..ef12192 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pdm/wql/MPS_PRODUCEDURE001.wql @@ -180,7 +180,8 @@ material.h, material.w, device.region_code, - workorder.vehicle_type + workorder.vehicle_type, + workorder.dz FROM pdm_bd_workorder workorder LEFT JOIN md_me_materialbase material ON workorder.material_id = material.material_id