From f7acb147766229b660e38b8a6e4bab803a66ae7c Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Mon, 10 Apr 2023 16:00:41 +0800 Subject: [PATCH] =?UTF-8?q?add:=E5=A2=9E=E5=8A=A0=E4=B8=80=E4=BD=93?= =?UTF-8?q?=E6=9C=BA=E8=AE=BE=E5=A4=87=EF=BC=8C=E5=B7=A5=E5=8D=95=EF=BC=8C?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=8E=A5=E5=8F=A3;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/nl/common/enums/AcsTaskEnum.java | 4 +- .../mps/rest/ProduceshiftorderController.java | 156 +- .../mps/service/ProduceshiftorderService.java | 254 +-- .../org/nl/wms/mps/service/dto/DeviceDto.java | 58 + .../impl/ProduceshiftorderServiceImpl.java | 1400 +++++++++-------- .../java/org/nl/wms/mps/wql/ONEPART_QUERY.wql | 126 ++ .../impl/CacheLineHandServiceImpl.java | 4 +- .../src/main/java/org/nl/wms/pdm/wql/pdm.xls | Bin 210944 -> 217088 bytes .../org/nl/wms/sch/rest/TaskController.java | 2 +- 9 files changed, 1161 insertions(+), 843 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/DeviceDto.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index 4bd686fc..d13be8a5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -76,8 +76,8 @@ public enum AcsTaskEnum { JSONArray res = new JSONArray(); task.forEach(t -> { JSONObject taskEnum = new JSONObject(); - taskEnum.put("name", t.getDesc()); - taskEnum.put("code", t.getCode()); + taskEnum.put("text", t.getDesc()); + taskEnum.put("value", t.getCode()); res.add(taskEnum); }); return res; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java index 9b96dc7c..fb4ead4a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceshiftorderController.java @@ -1,24 +1,21 @@ package org.nl.wms.mps.rest; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; - import lombok.RequiredArgsConstructor; +import lombok.RequiredArgsConstructor; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; +import org.nl.common.utils.api.ResultCode; +import org.nl.modules.common.exception.BizCoreException; import org.nl.wms.mps.service.ProduceshiftorderService; -import org.nl.wms.mps.service.dto.ProduceshiftorderDto; +import org.nl.wms.mps.service.dto.DeviceDto; 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 org.springframework.web.multipart.MultipartFile; -import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -30,81 +27,94 @@ import java.util.Map; @RequiredArgsConstructor @Api(tags = "一体机工单管理") @RequestMapping("/api/produceshiftorder") +@SaIgnore @Slf4j -public class ProduceshiftorderController { +public class ProduceshiftorderController{ + private final ProduceshiftorderService produceshiftorderService; - private final ProduceshiftorderService produceshiftorderService; + @PostMapping("/getDevice") + @Log("根据登录用户设备下拉") + @ApiOperation("根据登录用户设备下拉") + public ResponseEntity getDevice(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getDevice(param), HttpStatus.OK); + } + @PostMapping("/getTable") + @Log("获取工单生产记录") + @ApiOperation("获取工单生产记录") + //@PreAuthorize("@el.check('produceshiftorder:list')") + public ResponseEntity getTable(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getTable(param), HttpStatus.OK); + } - @PostMapping("/getDevice") - @Log("根据登录用户设备下拉") - @ApiOperation("根据登录用户设备下拉") - //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getDevice(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceshiftorderService.getDevice(param), HttpStatus.OK); - } + @PostMapping("/getDeviceList") + @Log("一体机-根据登录人信息获取设备列表") + @ApiOperation("一体机-根据登录人信息获取设备列表") + public ResponseEntity> getDeviceList(@RequestBody JSONObject form) { + log.info("海亮一体机服务 [根据登录人信息获取设备列表] 接口被请求"); + return new ResponseEntity<>(produceshiftorderService.getDeviceList(form.getString("search_bar")), HttpStatus.OK); + } - @PostMapping("/getTable") - @Log("获取工单生产记录") - @ApiOperation("获取工单生产记录") - //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getTable(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceshiftorderService.getTable(param), HttpStatus.OK); - } + @PostMapping("/getOrderList") + @Log("一体机-工单管理列表") + @ApiOperation("一体机-工单管理列表") + public ResponseEntity getOrderList(@RequestBody Map param, Pageable page) { + log.info("海亮一体机服务 [工单管理列表] 接口被请求, 请求参数-{}", param); + if(null == param) { + throw new BizCoreException(ResultCode.VALIDATE_FAILED); + } + return new ResponseEntity<>(produceshiftorderService.getOrderList(param, page), HttpStatus.OK); + } - @PostMapping("/openStart") - @Log("看板开工") - @ApiOperation("看板开工") - //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity openStart(@RequestBody JSONObject param) { - produceshiftorderService.openStart(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/openStart") + @Log("看板开工") + @ApiOperation("看板开工") + public ResponseEntity openStart(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.openStart(param), HttpStatus.OK); + } - @PostMapping("/saveReport") - @Log("看板报工") - @ApiOperation("看板报工") - public ResponseEntity saveReport(@RequestBody JSONObject param) { - produceshiftorderService.saveReport(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/saveReport") + @Log("看板报工") + @ApiOperation("看板报工") + public ResponseEntity saveReport(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.saveReport(param), HttpStatus.OK); + } - @PostMapping("/finish") - @Log("看板强制完成") - @ApiOperation("看板强制完成") - public ResponseEntity finish(@RequestBody JSONObject param) { - produceshiftorderService.finish(param); - return new ResponseEntity<>(HttpStatus.OK); - } + @PostMapping("/finish") + @Log("看板强制完成") + @ApiOperation("看板强制完成") + public ResponseEntity finish(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.finish(param), HttpStatus.OK); + } - @PostMapping("/getReportWork") - @Log("获取当前报工记录") - @ApiOperation("获取当前报工记录") - //@PreAuthorize("@el.check('produceshiftorder:list')") - public ResponseEntity getReportWork(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceshiftorderService.getReportWork(param), HttpStatus.OK); - } + @PostMapping("/getReportWork") + @Log("获取当前报工记录") + @ApiOperation("获取当前报工记录") + //@PreAuthorize("@el.check('produceshiftorder:list')") + public ResponseEntity getReportWork(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getReportWork(param), HttpStatus.OK); + } - @PostMapping("/getNotWorkDeviceByWorkproceduceId") - @Log("根据工序查询没有工单的设备") - @ApiOperation("根据工序查询没有工单的设备") - //@PreAuthorize("@el.check('WorkProcedure:add')") - public ResponseEntity getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceshiftorderService.getNotWorkDeviceByWorkproceduceId(param),HttpStatus.CREATED); - } + @PostMapping("/getNotWorkDeviceByWorkproceduceId") + @Log("根据工序查询没有工单的设备") + @ApiOperation("根据工序查询没有工单的设备") + //@PreAuthorize("@el.check('WorkProcedure:add')") + public ResponseEntity getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) { + return new ResponseEntity<>(produceshiftorderService.getNotWorkDeviceByWorkproceduceId(param), HttpStatus.CREATED); + } - @PostMapping("/replaceDevice") - @Log("更换工单设备") - @ApiOperation("更换工单设备") - public ResponseEntity replaceDevice(@RequestBody JSONObject param) { - produceshiftorderService.replaceDevice(param); - return new ResponseEntity<>( HttpStatus.OK); - } + @PostMapping("/replaceDevice") + @Log("更换工单设备") + @ApiOperation("更换工单设备") + public ResponseEntity replaceDevice(@RequestBody JSONObject param) { + produceshiftorderService.replaceDevice(param); + return new ResponseEntity<>(HttpStatus.OK); + } - @GetMapping("/getUser") - @Log("查询操作人员") - @ApiOperation("查询操作人员") - public ResponseEntity getUser() { - return new ResponseEntity<>(produceshiftorderService.getUser(), HttpStatus.OK); - } + @GetMapping("/getUser") + @Log("查询操作人员") + @ApiOperation("查询操作人员") + public ResponseEntity getUser() { + return new ResponseEntity<>(produceshiftorderService.getUser(), HttpStatus.OK); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceshiftorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceshiftorderService.java index 5ccecca3..a0a482ae 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceshiftorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceshiftorderService.java @@ -2,7 +2,9 @@ package org.nl.wms.mps.service; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import org.nl.common.utils.api.CommonResult; import org.nl.system.service.user.dao.SysUser; +import org.nl.wms.mps.service.dto.DeviceDto; import org.nl.wms.mps.service.dto.ProduceshiftorderDto; import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; @@ -12,133 +14,167 @@ import java.util.List; import java.util.Map; /** -* @description 服务接口 -* @author qinx -* @date 2022-05-24 -**/ -public interface ProduceshiftorderService { + * @author qinx + * @description 服务接口 + * @date 2022-05-24 + **/ +public interface ProduceshiftorderService{ + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map queryAll(Map whereJson, Pageable page); - /** - * 查询数据分页 - * @param whereJson 条件 - * @param page 分页参数 - * @return Map - */ - Map queryAll(Map whereJson, Pageable page); + /** + * 查询所有数据不分页 + * + * @param whereJson 条件参数 + * @return List + */ + List queryAll(Map whereJson); - /** - * 查询所有数据不分页 - * @param whereJson 条件参数 - * @return List - */ - List queryAll(Map whereJson); + /** + * 根据ID查询 + * + * @param produceorder_id ID + * @return Produceshiftorder + */ + ProduceshiftorderDto findById(Long produceorder_id); - /** - * 根据ID查询 - * @param produceorder_id ID - * @return Produceshiftorder - */ - ProduceshiftorderDto findById(Long produceorder_id); + /** + * 根据编码查询 + * + * @param code code + * @return Produceshiftorder + */ + ProduceshiftorderDto findByCode(String code); - /** - * 根据编码查询 - * @param code code - * @return Produceshiftorder - */ - ProduceshiftorderDto findByCode(String code); + /** + * 创建 + * + * @param dto / + */ + void create(ProduceshiftorderDto dto); + /** + * 编辑 + * + * @param dto / + */ + void update(ProduceshiftorderDto dto); - /** - * 创建 - * @param dto / - */ - void create(ProduceshiftorderDto dto); + /** + * 多选删除 + * + * @param ids / + */ + void deleteAll(Long[] ids); - /** - * 编辑 - * @param dto / - */ - void update(ProduceshiftorderDto dto); + /** + * 根据当前登录用户下拉 + * + * @param param + * @return + */ + JSONArray getDevice(JSONObject param); - /** - * 多选删除 - * @param ids / - */ - void deleteAll(Long[] ids); + /** + * 一体机获取设备列表 + * + * @Param: form 请求参数 + * @return: 设备列表 + * @author gbx + * @date 2023/4/7 + */ + List getDeviceList(String param); + /** + * 一体机-工单管理列表 + * + * @return 工单列表 + * @Param form 请求参数 + * @author gbx + * @date 2023/04/7 + */ + Map getOrderList(Map param, Pageable page); - /** - * 根据当前登录用户下拉 - * @param param - * @return - */ - JSONArray getDevice(JSONObject param); + /** + * 获取工单生产记录 + * + * @param param + * @return + */ + JSONArray getTable(JSONObject param); - /** - * 获取工单生产记录 - * @param param - * @return - */ - JSONArray getTable(JSONObject param); + /** + * 开工操作 + * + * @param param 请求参数 + */ + CommonResult> openStart(JSONObject param); - /** - * 看板开工 - * @param param - */ - void openStart(JSONObject param); + /** + * 报工操作 + * + * @param param 请求参数 + */ + CommonResult> saveReport(JSONObject param); - /** - * 看板报工 - * @param param - */ - void saveReport(JSONObject param); + /** + * 完工操作 + * + * @param param 请求参数 + */ + CommonResult> finish(JSONObject param); - /** - * 看板强制完成 - * @param param - */ - void finish(JSONObject param); + /** + * 获取当前报工记录 + * + * @param param + * @return + */ + JSONObject getReportWork(JSONObject param); - /** - * 获取当前报工记录 - * @param param - * @return - */ - JSONObject getReportWork(JSONObject param); + /** + * 工单强制完成 + * + * @param param + */ + void forceFinish(JSONObject param); + /** + * 获取当前工单下的工单生产记录 + * + * @param param + * @return + */ + JSONArray getDtl(JSONObject param); - /** - * 工单强制完成 - * @param param - */ - void forceFinish(JSONObject param); + /** + * excel工单批量导入 + * + * @param file + * @param request + */ + void excelImport(MultipartFile file, HttpServletRequest request); - /** - * 获取当前工单下的工单生产记录 - * @param param - * @return - */ - JSONArray getDtl(JSONObject param); + /** + * 更换设备时根据工单所属工序 查询所有工单中没有生产的设备 + * + * @param param + * @return + */ + JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param); - /** - * excel工单批量导入 - * @param file - * @param request - */ - void excelImport(MultipartFile file, HttpServletRequest request); + /** + * 更换设备 + * + * @param param + */ + void replaceDevice(JSONObject param); - /** - * 更换设备时根据工单所属工序 查询所有工单中没有生产的设备 - * @param param - * @return - */ - JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param); - - /** - * 更换设备 - * @param param - */ - void replaceDevice(JSONObject param); - - List getUser(); + List getUser(); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/DeviceDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/DeviceDto.java new file mode 100644 index 00000000..e7f5e06f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/DeviceDto.java @@ -0,0 +1,58 @@ +package org.nl.wms.mps.service.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 设备信息 + * + * @author gbx + * @since 2023-04-10 + */ +@Data +@SuppressWarnings("serial") +public class DeviceDto{ + /** + * 设备编码 + */ + @ApiModelProperty(value = "/**设备编码*/") + private String deviceCode; + /** + * 设备名称 + */ + @ApiModelProperty(value = "/**设备名称*/") + private String deviceName; + /** + * 设备名称 + */ + @ApiModelProperty(value = "/**设备名称*/") + private String device_status_name; + /** + * 工单编号 + */ + @ApiModelProperty(value = "/**工单编号*/") + private String workorderCode; + /** + * 工单数 + */ + @ApiModelProperty(value = "/**工单数*/") + private String job_count; + /** + * 设备状态 + */ + @ApiModelProperty(value = "/**设备状态*/") + private String device_status; + /** + * 设备图标路径 + */ + @ApiModelProperty(value = "/**设备图标路径*/") + private String device_icon; + /** + * 运行状态 + */ + @ApiModelProperty(value = "/**运行状态*/") + private String is_run; + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java index 343563c3..60b16410 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java @@ -1,7 +1,5 @@ package org.nl.wms.mps.service.impl; - -import cn.hutool.core.date.DateField; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; @@ -15,14 +13,14 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; -import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.MapOf; +import org.nl.common.utils.api.CommonResult; +import org.nl.common.utils.api.RestBusinessTemplate; import org.nl.modules.common.exception.BadRequestException; - import org.nl.modules.system.util.CodeUtil; - import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; @@ -33,8 +31,8 @@ import org.nl.wms.basedata.master.service.ClassstandardService; import org.nl.wms.ext.acs.service.WmsToAcsService; import org.nl.wms.mps.service.ProduceshiftorderService; import org.nl.wms.mps.service.WorkOrderImportEnum; +import org.nl.wms.mps.service.dto.DeviceDto; import org.nl.wms.mps.service.dto.ProduceshiftorderDto; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; @@ -53,673 +51,763 @@ import java.util.*; @Service @RequiredArgsConstructor @Slf4j -public class ProduceshiftorderServiceImpl implements ProduceshiftorderService { +public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ + private final ClassstandardService classstandardService; + private final WmsToAcsService wmsToAcsService; + @Autowired + ISysUserService userService; - private final ClassstandardService classstandardService; - private final WmsToAcsService wmsToAcsService; + @Override + public Map queryAll(Map whereJson, Pageable page) { + String produceorder_code = MapUtil.getStr(whereJson, "produceorder_code"); + String material = MapUtil.getStr(whereJson, "material"); + String begin_time = MapUtil.getStr(whereJson, "begin_time"); + String end_time = MapUtil.getStr(whereJson, "end_time"); + String order_type_scode = MapUtil.getStr(whereJson, "order_type_scode"); + String order_status = MapUtil.getStr(whereJson, "order_status"); + String shift_type_scode = MapUtil.getStr(whereJson, "shift_type_scode"); + String parent_id = MapUtil.getStr(whereJson, "product_series"); + String sale_id = MapUtil.getStr(whereJson, "sale_id"); + String is_error = MapUtil.getStr(whereJson, "is_error"); + String product_series = ""; + JSONObject map = new JSONObject(); + map.put("flag", "1"); + map.put("order_type_scode", order_type_scode); + //map.put("order_status", order_status); + map.put("shift_type_scode", shift_type_scode); + map.put("begin_time", begin_time); + map.put("end_time", end_time); + if(StrUtil.isNotEmpty(order_status)) { + order_status = order_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); + } + map.put("order_status", order_status); + map.put("is_error", is_error); + //处理状态为未完成 + if(StrUtil.isNotEmpty(order_status) && order_status.contains("-1")) { + map.put("unFinish", "-1"); + map.put("order_status", order_status.replace("-1", "")); + } + if(StrUtil.isNotEmpty(parent_id)) { + product_series = classstandardService.getChildIdStr(parent_id); + map.put("product_series", product_series); + } + if(StrUtil.isNotEmpty(produceorder_code)) { + map.put("produceorder_code", "%" + produceorder_code + "%"); + } + if(StrUtil.isNotEmpty(material)) { + map.put("material", "%" + material + "%"); + } + if(StrUtil.isNotEmpty(sale_id)) { + map.put("sale_id", "%" + sale_id + "%"); + } + WQLObject wo = WQLObject.getWQLObject("mps_bd_macoperaterecord"); + JSONObject jsonObject = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ShiftOrder.update_time desc"); + return jsonObject; + } - @Autowired - ISysUserService userService; + @Override + public List queryAll(Map whereJson) { + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONArray arr = wo.query().getResultJSONArray(0); + if(ObjectUtil.isNotEmpty(arr)) { + return arr.toJavaList(ProduceshiftorderDto.class); + } + return null; + } + @Override + public ProduceshiftorderDto findById(Long produceorder_id) { + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject json = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0); + if(ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProduceshiftorderDto.class); + } + return null; + } + @Override + public ProduceshiftorderDto findByCode(String code) { + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject json = wo.query("produceorder_code ='" + code + "'").uniqueResult(0); + if(ObjectUtil.isNotEmpty(json)) { + return json.toJavaObject(ProduceshiftorderDto.class); + } + return null; + } - @Override - public Map queryAll(Map whereJson, Pageable page) { - String produceorder_code = MapUtil.getStr(whereJson, "produceorder_code"); - String material = MapUtil.getStr(whereJson, "material"); - String begin_time = MapUtil.getStr(whereJson, "begin_time"); - String end_time = MapUtil.getStr(whereJson, "end_time"); - String order_type_scode = MapUtil.getStr(whereJson, "order_type_scode"); - String order_status = MapUtil.getStr(whereJson, "order_status"); - String shift_type_scode = MapUtil.getStr(whereJson, "shift_type_scode"); - String parent_id = MapUtil.getStr(whereJson, "product_series"); - String sale_id = MapUtil.getStr(whereJson, "sale_id"); - String is_error = MapUtil.getStr(whereJson, "is_error"); - String product_series = ""; - JSONObject map = new JSONObject(); - map.put("flag", "1"); - map.put("order_type_scode", order_type_scode); - //map.put("order_status", order_status); - map.put("shift_type_scode", shift_type_scode); - map.put("begin_time", begin_time); - map.put("end_time", end_time); - if (StrUtil.isNotEmpty(order_status)) { - order_status = order_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); - } - map.put("order_status", order_status); - map.put("is_error", is_error); - //处理状态为未完成 - if (StrUtil.isNotEmpty(order_status) && order_status.contains("-1")) { - map.put("unFinish", "-1"); - map.put("order_status", order_status.replace("-1", "")); - } - if (StrUtil.isNotEmpty(parent_id)) { - product_series = classstandardService.getChildIdStr(parent_id); - map.put("product_series", product_series); - } - if (StrUtil.isNotEmpty(produceorder_code)) { - map.put("produceorder_code", "%" + produceorder_code + "%"); - } - if (StrUtil.isNotEmpty(material)) { - map.put("material", "%" + material + "%"); - } - if (StrUtil.isNotEmpty(sale_id)) { - map.put("sale_id", "%" + sale_id + "%"); - } - WQLObject wo = WQLObject.getWQLObject("mps_bd_macoperaterecord"); - JSONObject jsonObject = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ShiftOrder.update_time desc"); - return jsonObject; - } + @Override + @Transactional(rollbackFor = Exception.class) + public void create(ProduceshiftorderDto dto) { + Integer orderNum = dto.getOrderNum(); + for(Integer i = 0; i < orderNum; i++) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + CurrentUser currentUser = SecurityUtils.getCurrentUser(); + String newCode = CodeUtil.getNewCode("PDM_SHIFTORDER"); + dto.setProduce_date(dto.getProduce_date().substring(0, 10)); + dto.setProduceorder_id(IdUtil.getSnowflake(1, 1).nextId()); + dto.setProduceorder_code(newCode); + dto.setProducedeviceorder_code(newCode); + dto.setOrder_status("00"); + dto.setCreate_id(currentUserId); + dto.setCreate_name(nickName); + dto.setUpdate_id(currentUserId); + dto.setUpdate_name(nickName); + dto.setUpdate_time(DateUtil.now()); + dto.setCreate_time(DateUtil.now()); + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.insert(json); + } + } - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) { - return arr.toJavaList(ProduceshiftorderDto.class); - } - return null; - } + @Override + @Transactional(rollbackFor = Exception.class) + public void update(ProduceshiftorderDto dto) { + ProduceshiftorderDto entity = this.findById(dto.getProduceorder_id()); + if(entity == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + dto.setUpdate_time(DateUtil.now()); + dto.setUpdate_id(currentUserId); + dto.setUpdate_name(nickName); + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); + wo.update(json); + } - @Override - public ProduceshiftorderDto findById(Long produceorder_id) { - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONObject json = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceshiftorderDto.class); - } - return null; - } + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); + for(Long produceorder_id : ids) { + JSONObject param = new JSONObject(); + param.put("produceorder_id", String.valueOf(produceorder_id)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", DateUtil.now()); + wo.update(param); + } + } - @Override - public ProduceshiftorderDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONObject json = wo.query("produceorder_code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceshiftorderDto.class); - } - return null; - } + @Override + public JSONArray getDevice(JSONObject param) { + final String workprocedure_id = param.getString("workprocedure_id"); + String currentUserId = SecurityUtils.getCurrentUserId(); + JSONObject map = new JSONObject(); + map.put("flag", "4"); + map.put("jockey_id", currentUserId + ""); + map.put("workprocedure_id", workprocedure_id); + final JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); + return resultJSONArray; + } - @Override - @Transactional(rollbackFor = Exception.class) - public void create(ProduceshiftorderDto dto) { - Integer orderNum = dto.getOrderNum(); - for (Integer i = 0; i < orderNum; i++) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - CurrentUser currentUser = SecurityUtils.getCurrentUser(); - String newCode = CodeUtil.getNewCode("PDM_SHIFTORDER"); - dto.setProduce_date(dto.getProduce_date().substring(0, 10)); - dto.setProduceorder_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setProduceorder_code(newCode); - dto.setProducedeviceorder_code(newCode); - dto.setOrder_status("00"); - dto.setCreate_id(currentUserId); - dto.setCreate_name(nickName); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - dto.setUpdate_time(DateUtil.now()); - dto.setCreate_time(DateUtil.now()); - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ProduceshiftorderDto dto) { - ProduceshiftorderDto entity = this.findById(dto.getProduceorder_id()); - if (entity == null) { - throw new BadRequestException("被删除或无权限,操作失败!"); - } - - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - dto.setUpdate_time(DateUtil.now()); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); - - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(Long[] ids) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - WQLObject wo = WQLObject.getWQLObject("mps_bd_produceshiftorder"); - for (Long produceorder_id : ids) { - JSONObject param = new JSONObject(); - param.put("produceorder_id", String.valueOf(produceorder_id)); - param.put("is_delete", "1"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", DateUtil.now()); - wo.update(param); - } - } - - - @Override - public JSONArray getDevice(JSONObject param) { - final String workprocedure_id = param.getString("workprocedure_id"); - String currentUserId = SecurityUtils.getCurrentUserId(); - JSONObject map = new JSONObject(); - map.put("flag", "4"); - map.put("jockey_id", currentUserId + ""); - map.put("workprocedure_id", workprocedure_id); - final JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - public JSONArray getTable(JSONObject param) { - //获取当前登录用户下的所有设备 - String currentUserId = SecurityUtils.getCurrentUserId(); - SysUser userDto = userService.getById(currentUserId); - Boolean isAdmin = userDto.getIsAdmin(); - String jockey_id = String.valueOf(currentUserId); - if (isAdmin) { - jockey_id = ""; - } - JSONObject map = new JSONObject(); - map.put("flag", "3"); - map.put("jockey_id", jockey_id); - //根据当前用户的设备所属的工序查询属于自己的工单表 - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void openStart(JSONObject param) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - //获取前台传入的开工的工单信息 - String workorder_id = param.getString("workorder_id"); - String device_code = param.getString("device_code"); - - JSONObject result = wo.query("current_device_code = '" + device_code + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(result)) { - throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); - } - - //TODO:开工时修改生产班次工单表 生产设备、以及工单状态 - - wo.update(MapOf.of("workorder_id",workorder_id,"workorder_status",WorkerOrderEnum.SEND.getCode(),"update_id", currentUserId,"update_name", nickName,"update_time", DateUtil.now())); - - JSONArray array = new JSONArray(); - JSONObject order = new JSONObject(MapOf.of("workorder_id", workorder_id,"type",WorkerOrderEnum.SEND.getCode())); - array.add(order); - Map resp = wmsToAcsService.orderStatusUpdate(array); - String status = String.valueOf(resp.get("status")); - String message = (String) resp.get("message"); - if (!status.equals("200")) { - throw new BadRequestException(message); - } - } - - @Override - public void saveReport(JSONObject param) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String report_qty = param.getString("report_qty"); - String workorder_id = param.getString("workorder_id"); - wo.update(MapOf.of("workorder_status",WorkerOrderEnum.STOP.getCode(),"real_qty",report_qty,"update_id",currentUserId,"update_name",nickName),"workorder_id = '"+workorder_id+"'"); - //下发acs暂时 - JSONArray arr = new JSONArray(); - arr.add(MapOf.of("workorder_id",workorder_id,"status", WorkerOrderEnum.STOP.getCode())); - wmsToAcsService.orderStatusUpdate(arr); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void finish(JSONObject param) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - JSONObject row = param.getJSONObject("row"); - //强制完成时修改工单状态 - String produceorder_id = row.getString("produceorder_id"); - WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); - ProduceshiftorderDto produceshiftorderDto = this.findById(Long.parseLong(produceorder_id)); - JSONObject produceorderMap = new JSONObject(); - produceorderMap.put("produceorder_id", produceorder_id); - produceorderMap.put("order_status", "04"); - produceorderMap.put("update_optid", currentUserId); - produceorderMap.put("device_id", null); - produceorderMap.put("update_optname", nickName); - produceorderMap.put("update_time", DateUtil.now()); - produceorderMap.put("realproduceend_date", DateUtil.now()); - wo.update(produceorderMap); - JSONObject jsonObject = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0); - String real_qty = jsonObject.getString("real_qty"); - if (StrUtil.isEmpty(real_qty)) { - real_qty = "0"; - } - //同时修改工单记录表中的期末数量及完成数量 - WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord"); - JSONObject result = wo_record.query("produceorder_id = '" + produceorder_id + "' and (operatetime_end = '' or operatetime_end is null) ").uniqueResult(0); - if (ObjectUtil.isNotEmpty(result)) { - result.put("finish_qty", real_qty); - result.put("finishproduct_qty", real_qty); - result.put("operatetime_end", DateUtil.now()); - wo_record.update(result); - } - //工单开工以后需要向acs强制完成 wms向acs发送请求 工单强制完成 - // TODO - String order_status = produceshiftorderDto.getOrder_status(); - if (!order_status.equals("00") && !order_status.equals("01")) { - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("ext_order_id", produceorder_id); - map.put("type", "3"); - array.add(map); - wmsToAcsService.orderStatusUpdate(array); - } - } - - @Override - public JSONObject getReportWork(JSONObject param) { - String produceorder_id = param.getString("produceorder_id"); - WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); - JSONObject jsonProduceShiftOrder = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0); - WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord"); - //获取最新的工单的对应记录信息 - JSONObject jsonObject = wo_record.query("produceorder_id = '" + produceorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); - String finish_qty = jsonProduceShiftOrder.getString("real_qty"); - jsonObject.put("finish_qty", finish_qty); - Integer finishproduct_qty = Integer.parseInt(finish_qty) - Integer.parseInt(jsonObject.getString("init_qty")); - jsonObject.put("finishproduct_qty", finishproduct_qty); - return jsonObject; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void forceFinish(JSONObject param) { - this.finish(param); - } - - @Override - public JSONArray getDtl(JSONObject param) { - final String produceorder_id = param.getString("produceorder_id"); - JSONObject map = new JSONObject(); - map.put("flag", "5"); - map.put("produceorder_id", produceorder_id); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void excelImport(MultipartFile file, HttpServletRequest request) { - if (file.isEmpty()) { - throw new BadRequestException("文件为空,请添加数据后重新导入"); - } - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - // 1.获取上传文件输入流 - InputStream inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (Exception e) { - e.printStackTrace(); - } - //工单表 - WQLObject wo_order = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); - //物料表 - WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase"); - //设备表 - WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device"); - //工序表 - WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure"); - //人员表 - //WQLObject wo_user = WQLObject.getWQLObject("sys_user"); - - // 调用用 hutool 方法读取数据 调用第一个sheet白班数据 - ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0); - // 从第1行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 - List> read = excelReader.read(0, excelReader.getRowCount()); - String produce_date = ""; - // 循环获取的数据 - row: - for (int i = 0; i < read.size(); i++) { - List list = read.get(i); - if (ObjectUtil.isEmpty(list)) { - continue; - } - //获取每列 - JSONObject param = new JSONObject(); - //按照列获取 - param.put("produceorder_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("produceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - param.put("order_status", "00"); - param.put("order_type_scode", "01"); - param.put("produce_date", produce_date); - param.put("shift_type_scode", "01"); - String is_error = "0"; - String error_message = ""; - //循环每一行 - col: - for (int j = 0; j < list.size(); j++) { - - String col = String.valueOf(list.get(j)); - //如果是第一行 为生产日期 - if (i == 0 && j == 0) { - produce_date = col.split(":")[col.split(":").length - 1]; - continue row; - } - //如果第一列包含规格二字 则为表头 结束内循环列 - if (j == 0 && col.contains("规格名称")) { - continue row; - } - if (j == 0) { - //物料 - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "物料规格为空,"; + /** + * 一体机获取设备列表 + * 设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障 + * + * @author gbx + * @since 2023/4/7 + */ + @Override + public List getDeviceList(String param) { + List list = WQL.getWO("ONEPART_QUERY").addParam("flag", "1").addParam("condition", param).process().getResultJSONArray(0).toJavaList(DeviceDto.class); + list.forEach(r -> { + //状态为为关机 + if(StrUtil.isEmpty(r.getDevice_status())) { + r.setDevice_status("1"); + r.setDevice_status_name("关机"); + } + else{ + //不是关机与故障状态则为运行 + if(!Objects.equals(r.getDevice_status(), "1") && !Objects.equals(r.getDevice_status(), "5")) { + r.setIs_run("1"); } - JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_material)) { - is_error = "1"; - error_message = error_message + "物料规格对应物料信息不存在,"; - }else { - param.put("material_id", json_material.getString("material_id")); + else{ + r.setIs_run("0"); } - } - if (j == 2) { - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "工序名称为空,"; - } - WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col); - if (ObjectUtil.isEmpty(idByName)) { - is_error = "1"; - error_message = error_message + "工序名称是否正确,"; - }else { - param.put("workprocedure_id", idByName.getId()); - } - } - if (j == 4) { - //单重 - param.put("material_weight", col); - } - if (j == 6) { - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "工单计划数量为空,"; - }else { - param.put("plan_qty", col); - } - } - if (j == 10) { - String workprocedure_id = param.getString("workprocedure_id"); - JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_device)) { - is_error = "1"; - error_message = error_message + "设备编码不存在,"; - } - if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { - is_error = "1"; - error_message = error_message + "设备与所属工序不匹配,"; - }else { - param.put("device_id", json_device.getString("device_id")); - } - } - if (j == 11) { - SysUser jsonUser = userService.getOne(new QueryWrapper().eq("username", SecurityUtils.getCurrentUsername())); - if (ObjectUtil.isEmpty(jsonUser)) { - is_error = "1"; - error_message = error_message + "生产人员编码不存在!"; - }else { - param.put("jockey_id", jsonUser.getUserId()); - } - } - if (j == 12) { - //允许修改报工数量 - String is_canupdate = "0"; - if (col.equals("是")) { - is_canupdate = "1"; - } - param.put("is_canupdate_update", is_canupdate); - } - if (j == 13) { - //是否agv搬运 - String needmoce = "0"; - if (col.equals("是")) { - needmoce = "1"; - } - param.put("is_needmove", needmoce); - } - } - param.put("is_error", is_error); - param.put("error_info", error_message); - param.put("planproducestart_date", produce_date + "07:30:00"); - param.put("planproduceend_date", produce_date + "18:30:00"); - param.put("create_id", currentUserId); - param.put("create_name", nickName); - param.put("create_time", DateUtil.now()); - wo_order.insert(param); - } + } + //todo 当前工单数 + r.setJob_count("1"); + }); + return list; + } - // 1.获取上传文件输入流 - inputStream = null; - try { - inputStream = file.getInputStream(); - } catch (Exception e) { - e.printStackTrace(); - } - //读取夜班工单数据 - excelReader = ExcelUtil.getReader(inputStream, 1); - read = excelReader.read(0, excelReader.getRowCount()); - String is_error = "0"; - String error_message = ""; - // 循环获取的数据 - row: - for (int i = 0; i < read.size(); i++) { - List list = read.get(i); - //获取每列 - JSONObject param = new JSONObject(); - //按照列获取 - param.put("produceorder_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("produceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - param.put("order_status", "00"); - param.put("order_type_scode", "01"); - param.put("produce_date", produce_date); - param.put("shift_type_scode", "02"); - //循环每一行 - col: - for (int j = 0; j < list.size(); j++) { + /** + * 一体机获取工单列表 + * + * @author gbx + * @since 2023/4/7 + */ + @Override + public Map getOrderList(Map param, Pageable page) { + HashMap map = new HashMap<>(); + map.put("flag", "2"); + Integer pageNumber = 0; + Integer pageSize = 20; + JSONObject whereJson = JSONObject.parseObject(JSON.toJSONString(param)); + //设备编号 + if(StrUtil.isNotEmpty(whereJson.getString("device_code"))) { + map.put("device_code", "%" + whereJson.getString("device_code") + "%"); + } + //搜索条件 + if(StrUtil.isNotEmpty(whereJson.getString("key_value"))) { + map.put("key_value", "%" + whereJson.getString("key_value") + "%"); + } + //开始时间 + if(StrUtil.isNotEmpty(whereJson.getString("realproducestart_date"))) { + map.put("realproducestart_date", whereJson.getString("realproducestart_date")); + } + //结束时间 + if(StrUtil.isNotEmpty(whereJson.getString("realproduceend_date"))) { + map.put("realproduceend_date", whereJson.getString("realproduceend_date")); + } + //分页参数 + if(StrUtil.isNotEmpty(whereJson.getString("page")) && StrUtil.isNotEmpty(whereJson.getString("size"))) { + pageNumber = whereJson.getInteger("page"); + pageSize = whereJson.getInteger("size"); + //暂时无分页 + if(pageNumber == 1) { + pageNumber = 0; + pageSize = 100; + } + } + JSONObject jsonObject = WQL.getWO("ONEPART_QUERY").addParamMap(map).pageQuery(WqlUtil.getHttpContext(pageNumber, pageSize), "workorder.create_time desc"); + String size = jsonObject.getString("totalElements"); + jsonObject.put("size", size); + //适配前端分页条件 + jsonObject.remove("totalElements"); + return jsonObject; + } - String col = String.valueOf(list.get(j)); - //如果是第一行 为生产日期 - if (i == 0 && j == 0) { - produce_date = col.split(":")[col.split(":").length - 1]; - continue row; - } - //如果第一列包含规格二字 则为表头 结束内循环列 - if (j == 0 && col.contains("规格名称")) { - continue row; - } - if (j == 0) { - //物料 - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "物料规格为空,"; - } - JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_material)) { - is_error = "1"; - error_message = error_message + "物料规格对应物料信息不存在,"; - }else { - param.put("material_id", json_material.getString("material_id")); - } - } - if (j == 2) { - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "工序名称为空,"; - } - WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col); - if (ObjectUtil.isEmpty(idByName)) { - is_error = "1"; - error_message = error_message + "工序名称是否正确,"; - }else { - param.put("workprocedure_id", idByName.getId()); - } - } - if (j == 4) { - //单重 - param.put("material_weight", col); - } - if (j == 6) { - if (StrUtil.isEmpty(col)) { - is_error = "1"; - error_message = error_message + "工单计划数量为空,"; - }else { - param.put("plan_qty", col); - } - } -// if (j == 10) { -// //物料 -// JSONObject json_material = wo_material.query("is_delete = '0' and material_code = '" + col + "'").uniqueResult(0); -// if (ObjectUtil.isEmpty(json_material)) { -// throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); -// } -// param.put("material_id", json_material.getString("material_id")); -// } - if (j == 10) { - String workprocedure_id = param.getString("workprocedure_id"); - JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(json_device)) { - is_error = "1"; - error_message = error_message + "设备编码不存在,"; - } - if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { - is_error = "1"; - error_message = error_message + "设备与所属工序不匹配,"; - }else { - param.put("device_id", json_device.getString("device_id")); - } - } - if (j == 11) { - SysUser jsonUser = userService.getOne(new QueryWrapper().eq("username", SecurityUtils.getCurrentUsername())); - if (ObjectUtil.isEmpty(jsonUser)) { - is_error = "1"; - error_message = error_message + "生产人员编码不存在!"; - }else { - param.put("jockey_id", jsonUser.getUserId()); - } - } - if (j == 12) { - //允许修改报工数量 - String is_canupdate = "0"; - if (col.equals("是")) { - is_canupdate = "1"; - } - param.put("is_canupdate_update", is_canupdate); - } - if (j == 13) { - //是否agv搬运 - String needmoce = "0"; - if (col.equals("是")) { - needmoce = "1"; - } - param.put("is_needmove", needmoce); - } - } - param.put("is_error", is_error); - param.put("error_info", error_message); - param.put("planproducestart_date", produce_date + "18:30:00"); - DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(produce_date), 1); - param.put("planproduceend_date", DateUtil.format(dateTime,"yyyy-MM-dd") + " 07:30:00"); - param.put("create_id", currentUserId); - param.put("create_name", nickName); - param.put("create_time", DateUtil.now()); - wo_order.insert(param); - } + @Override + public JSONArray getTable(JSONObject param) { + //获取当前登录用户下的所有设备 + String currentUserId = SecurityUtils.getCurrentUserId(); + SysUser userDto = userService.getById(currentUserId); + Boolean isAdmin = userDto.getIsAdmin(); + String jockey_id = String.valueOf(currentUserId); + if(isAdmin) { + jockey_id = ""; + } + JSONObject map = new JSONObject(); + map.put("flag", "3"); + map.put("jockey_id", jockey_id); + //根据当前用户的设备所属的工序查询属于自己的工单表 + JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); + return resultJSONArray; + } - } + /** + * 开工操作 + * + * @author gbx + * @since 2023/4/7 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult> openStart(JSONObject param) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); + //获取前台传入的开工的工单信息 + String workorder_id = param.getString("workorder_id"); + String device_code = param.getString("device_code"); + //1-创建、2-下发、3-生产中、4-暂停、5-完成 + JSONObject result = wo.query("current_device_code = '" + device_code + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); + //判断该工单状态 + if(ObjectUtil.isNotEmpty(result)) { + throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); + } + //TODO:开工时修改生产班次工单表 生产设备、以及工单状态 + wo.update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", currentUserId, "update_name", nickName, "update_time", DateUtil.now())); + JSONArray array = new JSONArray(); + JSONObject order = new JSONObject(MapOf.of("workorder_id", workorder_id, "type", WorkerOrderEnum.SEND.getCode())); + array.add(order); + //下发acs + // Map resp = wmsToAcsService.orderStatusUpdate(array); + // return RestBusinessTemplate.execute(() -> resp); + return RestBusinessTemplate.execute(() -> new JSONObject()); + } - @Override - public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) { - final String workproceduce_id = param.getString("workproceduce_id"); - JSONObject map = new JSONObject(); - map.put("flag", "6"); - map.put("workproceduce_id", workproceduce_id); - JSONArray devices = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); - StringBuilder sb = new StringBuilder(); - if (ObjectUtil.isNotEmpty(devices)) { - sb.append("("); - for (int i = 0; i < devices.size(); i++) { - JSONObject device = devices.getJSONObject(i); - String device_id = device.getString("device_id"); - if (devices.size() - 1 == i) { - sb.append("'" + device_id + "')"); - } - if (devices.size() - 1 != i) { - sb.append("'" + device_id + "',"); - } - } - param.put("device_ids", sb.toString()); - } else { - param.put("device_ids", "('-1')"); - } - param.put("flag", "7"); - param.put("workprocedure_id", workproceduce_id); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(param).process().getResultJSONArray(0); - return resultJSONArray; - } + /** + * 报工操作 + * + * @author gbx + * @since 2023/4/7 + */ + @Override + public CommonResult> saveReport(JSONObject param) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String report_qty = param.getString("report_qty"); + String workorder_id = param.getString("workorder_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); + //1.更新工单表报工数量 + wo.update(MapOf.of("workorder_status", WorkerOrderEnum.STOP.getCode(), "real_qty", report_qty, "update_id", currentUserId, "update_name", nickName), "workorder_id = '" + workorder_id + "'"); + //2.下发acs更新暂停状态 + JSONArray arr = new JSONArray(); + arr.add(MapOf.of("workorder_id", workorder_id, "status", WorkerOrderEnum.STOP.getCode())); + // Map resp = wmsToAcsService.orderStatusUpdate(arr); + //return RestBusinessTemplate.execute(() -> resp); + return RestBusinessTemplate.execute(() -> new JSONObject()); + } - @Override - @Transactional - public void replaceDevice(JSONObject param) { - String produceorder_code = param.getString("produceorder_code"); - String device_id = param.getString("device_id"); - String device_code = param.getString("device_code"); - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); + /** + * 完工操作 + * 设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障 + * + * @author gbx + * @since 2023/4/7 + */ + @Override + @Transactional(rollbackFor = Exception.class) + public CommonResult> finish(JSONObject param) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + //选中的工单信息 + JSONObject row = param.getJSONObject("row"); + //1.强制完成时修改工单状态 + String workorder_id = row.getString("workorder_id"); + WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); + JSONObject map = new JSONObject(); + map.put("produceorder_id", workorder_id); + map.put("workorder_status", "4"); + map.put("current_device_code", null); + map.put("update_id", currentUserId); + map.put("update_name", nickName); + map.put("update_time", DateUtil.now()); + map.put("realproduceend_date", DateUtil.now()); + wo.update(map, "workorder_id = '" + workorder_id + "'"); + //2.设置实际数量 + JSONObject jsonObject = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); + String real_qty = jsonObject.getString("real_qty"); + if(StrUtil.isEmpty(real_qty)) { + real_qty = "0"; + } + //3.修改工单记录表中的期末数量及完成数量 + WQLObject wo_record = WQLObject.getWQLObject("pdm_produce_workorderrecord"); + JSONObject result = wo_record.query("workorder_id = '" + workorder_id + "' and (operatetime_end = '' or operatetime_end is null) ").uniqueResult(0); + if(ObjectUtil.isNotEmpty(result)) { + result.put("dq_finish_qty", real_qty); + result.put("person_finish_qty", real_qty); + result.put("operatetime_end", DateUtil.now()); + wo_record.update(result); + } + //4.工单开工以后需要向acs强制完成,wms向acs发送请求,工单强制完成 + String workorder_status = jsonObject.getString("workorder_status"); + if(!workorder_status.equals("0") && !workorder_status.equals("1")) { + JSONArray array = new JSONArray(); + JSONObject acs = new JSONObject(); + acs.put("ext_order_id", workorder_id); + acs.put("type", "3"); + array.add(acs); + //Map resp = wmsToAcsService.orderStatusUpdate(array); + // return RestBusinessTemplate.execute(() -> resp); + return RestBusinessTemplate.execute(() -> new JSONObject()); + } + return RestBusinessTemplate.execute(() -> new JSONObject()); + } - ProduceshiftorderDto produceshiftorderDto = this.findByCode(produceorder_code); - produceshiftorderDto.setDevice_id(Long.parseLong(device_id)); - produceshiftorderDto.setUpdate_id(currentUserId); - produceshiftorderDto.setUpdate_name(nickName); - produceshiftorderDto.setUpdate_time(DateUtil.now()); - String order_status = produceshiftorderDto.getOrder_status(); - if (!order_status.equals("03") && !order_status.equals("01") && !order_status.equals("00")) { - JSONArray array = new JSONArray(); - JSONObject acsObj = new JSONObject(); - acsObj.put("order_code", produceorder_code); - acsObj.put("device_code", device_code); - array.add(acsObj); - Map resp = wmsToAcsService.replaceDevice(array); - String status = String.valueOf(resp.get("status")); - String message = (String) resp.get("message"); - if (!status.equals("200")) { - throw new BadRequestException(message); - } - } - this.update(produceshiftorderDto); - } + @Override + public JSONObject getReportWork(JSONObject param) { + String produceorder_id = param.getString("produceorder_id"); + WQLObject wo = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); + JSONObject jsonProduceShiftOrder = wo.query("produceorder_id = '" + produceorder_id + "'").uniqueResult(0); + WQLObject wo_record = WQLObject.getWQLObject("MPS_BD_MacOperateRecord"); + //获取最新的工单的对应记录信息 + JSONObject jsonObject = wo_record.query("produceorder_id = '" + produceorder_id + "' and (operatetime_end is null or operatetime_end = '')").uniqueResult(0); + String finish_qty = jsonProduceShiftOrder.getString("real_qty"); + jsonObject.put("finish_qty", finish_qty); + Integer finishproduct_qty = Integer.parseInt(finish_qty) - Integer.parseInt(jsonObject.getString("init_qty")); + jsonObject.put("finishproduct_qty", finishproduct_qty); + return jsonObject; + } - @Override - public List getUser() { - return userService.list(new QueryWrapper().select("user_id,person_name")); - } + @Override + @Transactional(rollbackFor = Exception.class) + public void forceFinish(JSONObject param) { + this.finish(param); + } + @Override + public JSONArray getDtl(JSONObject param) { + final String produceorder_id = param.getString("produceorder_id"); + JSONObject map = new JSONObject(); + map.put("flag", "5"); + map.put("produceorder_id", produceorder_id); + JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); + return resultJSONArray; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + if(file.isEmpty()) { + throw new BadRequestException("文件为空,请添加数据后重新导入"); + } + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + // 1.获取上传文件输入流 + InputStream inputStream = null; + try { + inputStream = file.getInputStream(); + } + catch(Exception e) { + e.printStackTrace(); + } + //工单表 + WQLObject wo_order = WQLObject.getWQLObject("MPS_BD_ProduceShiftOrder"); + //物料表 + WQLObject wo_material = WQLObject.getWQLObject("md_me_materialbase"); + //设备表 + WQLObject wo_device = WQLObject.getWQLObject("pdm_bi_device"); + //工序表 + WQLObject wo_workprocedure = WQLObject.getWQLObject("pdm_bi_workprocedure"); + //人员表 + //WQLObject wo_user = WQLObject.getWQLObject("sys_user"); + // 调用用 hutool 方法读取数据 调用第一个sheet白班数据 + ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0); + // 从第1行开始获取数据 excelReader.read的结果是一个2纬的list,外层是行,内层是行对应的所有列 + List> read = excelReader.read(0, excelReader.getRowCount()); + String produce_date = ""; + // 循环获取的数据 + row: + for(int i = 0; i < read.size(); i++) { + List list = read.get(i); + if(ObjectUtil.isEmpty(list)) { + continue; + } + //获取每列 + JSONObject param = new JSONObject(); + //按照列获取 + param.put("produceorder_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("produceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + param.put("order_status", "00"); + param.put("order_type_scode", "01"); + param.put("produce_date", produce_date); + param.put("shift_type_scode", "01"); + String is_error = "0"; + String error_message = ""; + //循环每一行 + col: + for(int j = 0; j < list.size(); j++) { + String col = String.valueOf(list.get(j)); + //如果是第一行 为生产日期 + if(i == 0 && j == 0) { + produce_date = col.split(":")[col.split(":").length - 1]; + continue row; + } + //如果第一列包含规格二字 则为表头 结束内循环列 + if(j == 0 && col.contains("规格名称")) { + continue row; + } + if(j == 0) { + //物料 + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "物料规格为空,"; + } + JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(json_material)) { + is_error = "1"; + error_message = error_message + "物料规格对应物料信息不存在,"; + } + else{ + param.put("material_id", json_material.getString("material_id")); + } + } + if(j == 2) { + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "工序名称为空,"; + } + WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col); + if(ObjectUtil.isEmpty(idByName)) { + is_error = "1"; + error_message = error_message + "工序名称是否正确,"; + } + else{ + param.put("workprocedure_id", idByName.getId()); + } + } + if(j == 4) { + //单重 + param.put("material_weight", col); + } + if(j == 6) { + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "工单计划数量为空,"; + } + else{ + param.put("plan_qty", col); + } + } + if(j == 10) { + String workprocedure_id = param.getString("workprocedure_id"); + JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(json_device)) { + is_error = "1"; + error_message = error_message + "设备编码不存在,"; + } + if(!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { + is_error = "1"; + error_message = error_message + "设备与所属工序不匹配,"; + } + else{ + param.put("device_id", json_device.getString("device_id")); + } + } + if(j == 11) { + SysUser jsonUser = userService.getOne(new QueryWrapper().eq("username", SecurityUtils.getCurrentUsername())); + if(ObjectUtil.isEmpty(jsonUser)) { + is_error = "1"; + error_message = error_message + "生产人员编码不存在!"; + } + else{ + param.put("jockey_id", jsonUser.getUserId()); + } + } + if(j == 12) { + //允许修改报工数量 + String is_canupdate = "0"; + if(col.equals("是")) { + is_canupdate = "1"; + } + param.put("is_canupdate_update", is_canupdate); + } + if(j == 13) { + //是否agv搬运 + String needmoce = "0"; + if(col.equals("是")) { + needmoce = "1"; + } + param.put("is_needmove", needmoce); + } + } + param.put("is_error", is_error); + param.put("error_info", error_message); + param.put("planproducestart_date", produce_date + "07:30:00"); + param.put("planproduceend_date", produce_date + "18:30:00"); + param.put("create_id", currentUserId); + param.put("create_name", nickName); + param.put("create_time", DateUtil.now()); + wo_order.insert(param); + } + // 1.获取上传文件输入流 + inputStream = null; + try { + inputStream = file.getInputStream(); + } + catch(Exception e) { + e.printStackTrace(); + } + //读取夜班工单数据 + excelReader = ExcelUtil.getReader(inputStream, 1); + read = excelReader.read(0, excelReader.getRowCount()); + String is_error = "0"; + String error_message = ""; + // 循环获取的数据 + row: + for(int i = 0; i < read.size(); i++) { + List list = read.get(i); + //获取每列 + JSONObject param = new JSONObject(); + //按照列获取 + param.put("produceorder_id", IdUtil.getSnowflake(1, 1).nextId()); + param.put("produceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + param.put("order_status", "00"); + param.put("order_type_scode", "01"); + param.put("produce_date", produce_date); + param.put("shift_type_scode", "02"); + //循环每一行 + col: + for(int j = 0; j < list.size(); j++) { + String col = String.valueOf(list.get(j)); + //如果是第一行 为生产日期 + if(i == 0 && j == 0) { + produce_date = col.split(":")[col.split(":").length - 1]; + continue row; + } + //如果第一列包含规格二字 则为表头 结束内循环列 + if(j == 0 && col.contains("规格名称")) { + continue row; + } + if(j == 0) { + //物料 + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "物料规格为空,"; + } + JSONObject json_material = wo_material.query("is_delete = '0' and material_spec = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(json_material)) { + is_error = "1"; + error_message = error_message + "物料规格对应物料信息不存在,"; + } + else{ + param.put("material_id", json_material.getString("material_id")); + } + } + if(j == 2) { + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "工序名称为空,"; + } + WorkOrderImportEnum idByName = WorkOrderImportEnum.getIdByName(col); + if(ObjectUtil.isEmpty(idByName)) { + is_error = "1"; + error_message = error_message + "工序名称是否正确,"; + } + else{ + param.put("workprocedure_id", idByName.getId()); + } + } + if(j == 4) { + //单重 + param.put("material_weight", col); + } + if(j == 6) { + if(StrUtil.isEmpty(col)) { + is_error = "1"; + error_message = error_message + "工单计划数量为空,"; + } + else{ + param.put("plan_qty", col); + } + } + // if (j == 10) { + // //物料 + // JSONObject json_material = wo_material.query("is_delete = '0' and material_code = '" + col + "'").uniqueResult(0); + // if (ObjectUtil.isEmpty(json_material)) { + // throw new BadRequestException("第'" + (i + 2) + "'行,物料编码不存在"); + // } + // param.put("material_id", json_material.getString("material_id")); + // } + if(j == 10) { + String workprocedure_id = param.getString("workprocedure_id"); + JSONObject json_device = wo_device.query("is_delete = '0' and device_code = '" + col + "'").uniqueResult(0); + if(ObjectUtil.isEmpty(json_device)) { + is_error = "1"; + error_message = error_message + "设备编码不存在,"; + } + if(!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { + is_error = "1"; + error_message = error_message + "设备与所属工序不匹配,"; + } + else{ + param.put("device_id", json_device.getString("device_id")); + } + } + if(j == 11) { + SysUser jsonUser = userService.getOne(new QueryWrapper().eq("username", SecurityUtils.getCurrentUsername())); + if(ObjectUtil.isEmpty(jsonUser)) { + is_error = "1"; + error_message = error_message + "生产人员编码不存在!"; + } + else{ + param.put("jockey_id", jsonUser.getUserId()); + } + } + if(j == 12) { + //允许修改报工数量 + String is_canupdate = "0"; + if(col.equals("是")) { + is_canupdate = "1"; + } + param.put("is_canupdate_update", is_canupdate); + } + if(j == 13) { + //是否agv搬运 + String needmoce = "0"; + if(col.equals("是")) { + needmoce = "1"; + } + param.put("is_needmove", needmoce); + } + } + param.put("is_error", is_error); + param.put("error_info", error_message); + param.put("planproducestart_date", produce_date + "18:30:00"); + DateTime dateTime = DateUtil.offsetDay(DateUtil.parse(produce_date), 1); + param.put("planproduceend_date", DateUtil.format(dateTime, "yyyy-MM-dd") + " 07:30:00"); + param.put("create_id", currentUserId); + param.put("create_name", nickName); + param.put("create_time", DateUtil.now()); + wo_order.insert(param); + } + } + + @Override + public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) { + final String workproceduce_id = param.getString("workproceduce_id"); + JSONObject map = new JSONObject(); + map.put("flag", "6"); + map.put("workproceduce_id", workproceduce_id); + JSONArray devices = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); + StringBuilder sb = new StringBuilder(); + if(ObjectUtil.isNotEmpty(devices)) { + sb.append("("); + for(int i = 0; i < devices.size(); i++) { + JSONObject device = devices.getJSONObject(i); + String device_id = device.getString("device_id"); + if(devices.size() - 1 == i) { + sb.append("'" + device_id + "')"); + } + if(devices.size() - 1 != i) { + sb.append("'" + device_id + "',"); + } + } + param.put("device_ids", sb.toString()); + } + else{ + param.put("device_ids", "('-1')"); + } + param.put("flag", "7"); + param.put("workprocedure_id", workproceduce_id); + JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(param).process().getResultJSONArray(0); + return resultJSONArray; + } + + @Override + @Transactional + public void replaceDevice(JSONObject param) { + String produceorder_code = param.getString("produceorder_code"); + String device_id = param.getString("device_id"); + String device_code = param.getString("device_code"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + ProduceshiftorderDto produceshiftorderDto = this.findByCode(produceorder_code); + produceshiftorderDto.setDevice_id(Long.parseLong(device_id)); + produceshiftorderDto.setUpdate_id(currentUserId); + produceshiftorderDto.setUpdate_name(nickName); + produceshiftorderDto.setUpdate_time(DateUtil.now()); + String order_status = produceshiftorderDto.getOrder_status(); + if(!order_status.equals("03") && !order_status.equals("01") && !order_status.equals("00")) { + JSONArray array = new JSONArray(); + JSONObject acsObj = new JSONObject(); + acsObj.put("order_code", produceorder_code); + acsObj.put("device_code", device_code); + array.add(acsObj); + Map resp = wmsToAcsService.replaceDevice(array); + String status = String.valueOf(resp.get("status")); + String message = (String) resp.get("message"); + if(!status.equals("200")) { + throw new BadRequestException(message); + } + } + this.update(produceshiftorderDto); + } + + @Override + public List getUser() { + return userService.list(new QueryWrapper().select("user_id,person_name")); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql new file mode 100644 index 00000000..96db9508 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql @@ -0,0 +1,126 @@ +[交易说明] + 交易名: pda手持服务查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.device_code TYPEAS s_string + 输入.key_value TYPEAS s_string + 输入.realproducestart_date TYPEAS s_string + 输入.realproduceend_date TYPEAS s_string + 输入.flag TYPEAS s_string + + + + + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + QUERY + SELECT + s.label device_status_name, + r.status_type device_status, + d.device_code, + d.device_name, + d.device_icon, + d.workorder_code + FROM + pdm_bi_device d + LEFT JOIN ( + SELECT + device_code, + status_type, + max( order_num ) AS num + FROM + ( SELECT order_num, device_code, status_type FROM pdm_bi_devicerunstatusrecord ORDER BY device_code, order_num DESC ) c + GROUP BY + c.device_code + ) r ON d.device_code = r.device_code + LEFT JOIN sys_dict s ON s.`value` = r.status_type + AND s.`code` = 'PDM_BI_DEVICERUNSTATUS' + ORDER BY + device_code + LIMIT 10 + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + PAGEQUERY + SELECT + dict1.label shift_type_scode_name, + dict2.label order_status_name, + mater.material_name, + workorder.shift_type_scode, + workprocedure.workprocedure_name, + workorder.workorder_status order_status, + workorder.workorder_id, + workorder.workorder_code, + workorder.current_device_code device_code, + workorder.material_id, + workorder.workprocedure_id, + workorder.plan_qty, + workorder.real_qty, + workorder.report_qty, + workorder.realproducestart_date, + workorder.realproduceend_date + FROM + pdm_produce_workorder workorder + LEFT JOIN md_me_materialbase mater ON workorder.material_id = mater.material_id + LEFT JOIN pdm_bi_workprocedure workprocedure ON workorder.workprocedure_id = workprocedure.workprocedure_id + LEFT JOIN sys_dict dict1 ON dict1.`value` = workorder.shift_type_scode + AND dict1.`code` = 'PDM_BI_SHIFTTYPE' + LEFT JOIN sys_dict dict2 ON dict2.`value` = workorder.workorder_status + AND dict2.`code` = 'MPS_BD_ORDERSTATUS' + WHERE + workorder.is_delete = '0' + OPTION 输入.device_code <> "" + (workorder.current_device_code like CONCAT ('%', 输入.device_code, '%')) + ENDOPTION + OPTION 输入.key_value <> "" + ( + (workorder.workorder_code like CONCAT ('%', 输入.key_value, '%')) or + (mater.material_name like CONCAT ('%', 输入.key_value, '%')) or + (mater.material_code like CONCAT ('%', 输入.key_value, '%')) + ) + ENDOPTION + OPTION 输入.realproducestart_date <> "" + workorder.realproducestart_date >= 输入.realproducestart_date + ENDOPTION + OPTION 输入.realproduceend_date <> "" + workorder.realproduceend_date <= 输入.realproduceend_date + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF \ No newline at end of file diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java index c925df1b..5de37f53 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda/service/impl/CacheLineHandServiceImpl.java @@ -163,8 +163,8 @@ public class CacheLineHandServiceImpl implements CacheLineHandService{ map.put("product_area", whereJson.getString("product_area")); } //任务类型 - if(StrUtil.isNotEmpty(whereJson.getString("task_type"))) { - map.put("task_type", whereJson.getString("task_type")); + if(StrUtil.isNotEmpty(whereJson.getString("code"))) { + map.put("task_type", whereJson.getString("code")); } if(StrUtil.isNotEmpty(task_status)) { task_status = task_status.replace("[\"", "").replace("\"]", "").replace("\"", ""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pdm/wql/pdm.xls index 1d7aac3dfe729fec4f2163a24ff560c44d9d95b7..4f177eb0ec6e022cc4f740fbc836849a5f1309bd 100644 GIT binary patch literal 217088 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 getTaskType() {