From 30db992adae6257e80abd0deea0ae59397de0167 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Wed, 17 May 2023 15:15:35 +0800 Subject: [PATCH 1/7] =?UTF-8?q?add:=E5=B7=A5=E5=8D=95=E5=8F=8A=E5=B7=A5?= =?UTF-8?q?=E5=8D=95=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/utils/OptionRecord.java | 58 +- .../main/java/org/nl/wms/device_manage/em.xls | Bin 310272 -> 310272 bytes .../acs/service/impl/AcsToWmsServiceImpl.java | 4 +- .../IMdPbClassstandardService.java | 7 + .../impl/MdPbClassstandardServiceImpl.java | 15 +- .../dao/mapper/MdPbClassstandardMapper.java | 3 + .../dao/mapper/MdPbClassstandardMapper.xml | 3 + .../mps/rest/ProduceWorkorderController.java | 116 ---- .../mps/service/ProduceWorkorderService.java | 108 ---- .../mps/service/dto/ProduceWorkorderDto.java | 2 +- .../impl/ProduceWorkorderServiceImpl.java | 580 ------------------ .../impl/ProduceshiftorderServiceImpl.java | 16 +- .../nl/wms/mps/wql/MPS_PRODUCEWORKORDER.wql | 2 +- .../java/org/nl/wms/mps/wql/ONEPART_QUERY.wql | 12 +- .../PdmProduceWorkorderController.java | 98 +-- .../java/org/nl/wms/product_manage/pdm.xls | Bin 215040 -> 215040 bytes .../service/device/IPdmBiDeviceService.java | 6 + .../device/dao/mapper/PdmBiDeviceMapper.java | 4 + .../device/dao/mapper/PdmBiDeviceMapper.xml | 16 + .../device/impl/PdmBiDeviceServiceImpl.java | 8 + .../IPdmProduceWorkorderService.java | 63 +- .../workorder/dao/PdmProduceWorkorder.java | 81 ++- .../dao/mapper/PdmProduceWorkorderMapper.java | 6 + .../dao/mapper/PdmProduceWorkorderMapper.xml | 33 + .../service/workorder/dto/WorkorderQuery.java | 8 +- ...a => IPdmProduceWorkorderServiceImpl.java} | 419 +++++++------ .../workprocedure/dao/PdmBiWorkprocedure.java | 14 +- .../impl/PdmBiWorkprocedureServiceImpl.java | 2 +- .../service/ql/dao/PdmQlOption.java | 14 +- mes/qd/src/router/routers.js | 2 +- .../workorder}/AddDialog.vue | 2 +- .../workorder}/OutMaterDialog.vue | 0 .../workorder}/ReplaceDeviceDialog.vue | 6 +- .../workorder}/UploadDialog.vue | 2 +- .../workorder}/ViewDialog.vue | 2 +- .../workorder}/bigScreen.vue | 2 +- .../workorder}/index.vue | 66 +- .../workorder}/produceshiftorder.js | 11 +- 38 files changed, 615 insertions(+), 1176 deletions(-) delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceWorkorderService.java delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceWorkorderServiceImpl.java rename mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/{PdmProduceWorkorderServiceImpl.java => IPdmProduceWorkorderServiceImpl.java} (56%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/AddDialog.vue (99%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/OutMaterDialog.vue (100%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/ReplaceDeviceDialog.vue (96%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/UploadDialog.vue (97%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/ViewDialog.vue (99%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/bigScreen.vue (99%) rename mes/qd/src/views/wms/{mps/produce => product_manage/workorder}/index.vue (93%) rename mes/qd/src/{api/wms/mps => views/wms/product_manage/workorder}/produceshiftorder.js (91%) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java index da6bfa07..d5b3404e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java @@ -1,14 +1,23 @@ package org.nl.common.utils; +import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.AllArgsConstructor; import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; +import org.nl.common.publish.event.PublishEvent; import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.system_manage.service.ql.IPdmQlOptionService; import org.nl.wms.system_manage.service.ql.dao.PdmQlOption; +import org.nl.wms.system_manage.service.ql.dto.OptionRecordQuery; +import java.util.ArrayList; import java.util.Date; +import java.util.List; import java.util.Map; import java.util.concurrent.ThreadPoolExecutor; @@ -20,29 +29,46 @@ public class OptionRecord { private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); - public static void record(OptionEnum type, Buss classname, String order, Map option){ + public static void record(OptionEnum type,String status, Buss classname, String order, T option){ + IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class); + PdmQlOption qlOption = new PdmQlOption(); + if (option !=null){ + qlOption.setOptiod_date(JSON.toJSONString(option)); + } + qlOption.setOrderno(order); + qlOption.setType(type.name()); + qlOption.setCreate_id(DateUtil.now()); + qlOption.setCreate_time(SecurityUtils.getCurrentUserId()); + qlOption.setCreate_name(SecurityUtils.getCurrentNickName()); + qlOption.setBussclass(classname.name()); + qlOption.setStatus(status); + bean.save(qlOption); + } + public static void recordAsync(OptionEnum type,String status, Buss classname, String order, T option){ EXECUTOR.execute(()->{ - IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class); - PdmQlOption qlOption = new PdmQlOption(); - if (option !=null){ - qlOption.setOptionDate(JSON.toJSONString(option)); - } - qlOption.setOrderno(order); - qlOption.setType(type.name()); - qlOption.setCreateTime(new Date()); - qlOption.setCreateId(SecurityUtils.getCurrentUserId()); - qlOption.setCreateId(SecurityUtils.getCurrentNickName()); - qlOption.setBussclass(classname.name()); -// bean.save(qlOption); + record(type,status,classname,order,option); }); } + public static List getRecord(OptionRecordQuery query,final Class clazz){ + IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class); + List list = bean.list(query.build()); + List records = new ArrayList<>(); + for (PdmQlOption option : list) { + String optiod_date = option.getOptiod_date(); + if (StringUtils.isNotEmpty(optiod_date)){ + records.add(JSONObject.parseObject(optiod_date, clazz)); + } + } + return records; + } @Getter @AllArgsConstructor public enum OptionEnum{ - ADDOP, - DELETEOP, - UPDATEOP, + ADD, + DELETE, + UPDATE, + FINISH; } @Getter @AllArgsConstructor diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/em.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/device_manage/em.xls index 734aaffe4912e30e5b91df4ed4bf446b04e2db2b..e573041f193a7c6c0914860937110a6dbb4a2d50 100644 GIT binary patch delta 51 zcmZqpA=L0gXhRMQo5SHt|J2(z7qM((h($ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 1ca55147..143e3ceb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -208,12 +208,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ map.put("workorder_status", orderJson.getString("status")); map.put("update_id", "1"); map.put("real_qty", orderJson.getString("real_qty")); - map.put("current_device_code", ""); + map.put("device_code", ""); map.put("update_name", "acs"); map.put("update_time", DateUtil.now()); map.put("realproduceend_date", DateUtil.now()); WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'"); - OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status"))); + //OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status"))); } catch (Exception e){ result.put("status", 400); result.put("message", e.getMessage()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/IMdPbClassstandardService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/IMdPbClassstandardService.java index 5fa55979..e5fdf2f3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/IMdPbClassstandardService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/IMdPbClassstandardService.java @@ -55,4 +55,11 @@ public interface IMdPbClassstandardService extends IService { * @param ids */ void deleteAll(String[] ids); + + /** + * c查询子集 + * @param class_id + * @return + */ + List getChildIdStr(String class_id); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java index 3437713f..23f29f8a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/master/service/classstandard/impl/MdPbClassstandardServiceImpl.java @@ -112,15 +112,16 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl queryClassById(Map whereJson) { QueryWrapper query = new QueryWrapper<>(); + query.eq("1","1"); if (ObjectUtil.isNotEmpty(whereJson.get("whereStr"))) { query.last((String) whereJson.get("whereStr")); } - if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) { - query.in("class_id",whereJson.get("class_idStr")); - } if (ObjectUtil.isNotEmpty(whereJson.get("parent_class_id"))) { query.eq("parent_class_id",whereJson.get("parent_class_id")); } + if (ObjectUtil.isNotEmpty(whereJson.get("class_idStr"))) { + query.last("and class_id in "+whereJson.get("class_idStr")); + } return getMaps(this.listMaps(query)); } @@ -237,4 +238,12 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl getChildIdStr(String class_id) { + if (StringUtils.isEmpty(class_id)){ + return new ArrayList<>(); + } + return this.baseMapper.getChildIdStr(class_id); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.java index 04738145..84338c2e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.java @@ -3,6 +3,8 @@ package org.nl.wms.masterdata_manage.service.master.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.nl.wms.masterdata_manage.master.service.classstandard.dao.MdPbClassstandard; +import java.util.List; + /** *

* 基础数据分类标准表 Mapper 接口 @@ -13,4 +15,5 @@ import org.nl.wms.masterdata_manage.master.service.classstandard.dao.MdPbClassst */ public interface MdPbClassstandardMapper extends BaseMapper { + List getChildIdStr(String class_id); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.xml index 26fad0cd..19444735 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/master/dao/mapper/MdPbClassstandardMapper.xml @@ -2,4 +2,7 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java deleted file mode 100644 index 7f3b67f9..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java +++ /dev/null @@ -1,116 +0,0 @@ -package org.nl.wms.mps.rest; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.anno.Log; -import org.nl.wms.mps.service.ProduceWorkorderService; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; -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; - -/** - * @author lyd - * @date 2023-03-16 - **/ -//@RestController -@RequiredArgsConstructor -//@Api(tags = "工单管理") -//@RequestMapping("/api/produceWorkorder") -@Slf4j -public class ProduceWorkorderController { - - private final ProduceWorkorderService produceWorkorderService; - - @GetMapping - @Log("查询工单管理") - @ApiOperation("查询工单管理") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(produceWorkorderService.queryAll(whereJson, page), HttpStatus.OK); - } - - @PostMapping - @Log("新增工单管理") - @ApiOperation("新增工单管理") - //@PreAuthorize("@el.check('produceWorkorder:add')") - public ResponseEntity create(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - @PostMapping("/create") - @Log("新增工单管理") - @ApiOperation("新增工单管理") - //@PreAuthorize("@el.check('produceWorkorder:add')") - public ResponseEntity submit(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改工单管理") - @ApiOperation("修改工单管理") - //@PreAuthorize("@el.check('produceWorkorder:edit')") - public ResponseEntity update(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PutMapping("/submits") - @Log("工单下发") - @ApiOperation("工单下发") - public ResponseEntity submits(@RequestBody List param) { - produceWorkorderService.submits(param); - return new ResponseEntity<>(HttpStatus.OK); - } - - @Log("删除工单管理") - @ApiOperation("删除工单管理") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - produceWorkorderService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @PostMapping("/getNotWorkDeviceByWorkproceduceId") - @Log("根据工序查询没有工单的设备") - @ApiOperation("根据工序查询没有工单的设备") - //@PreAuthorize("@el.check('WorkProcedure:add')") - public ResponseEntity getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceWorkorderService.getNotWorkDeviceByWorkproceduceId(param),HttpStatus.CREATED); - } - - @PostMapping("/getDtl") - @Log("获取当前工单下的工单生产记录") - @ApiOperation("获取当前工单下的工单生产记录") - public ResponseEntity getDtl(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceWorkorderService.getDtl(param), HttpStatus.OK); - } - - @PostMapping("/forceFinish") - @Log("工单强制完成") - @ApiOperation("工单强制完成") - public ResponseEntity forceFinish(@RequestBody JSONObject param) { - produceWorkorderService.forceFinish(param); - return new ResponseEntity<>(HttpStatus.OK); - } - - @PostMapping("/excelImport") - @Log("excel导入") - @ApiOperation("excel导入") - public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) { - produceWorkorderService.excelImport(file, request); - return new ResponseEntity<>(HttpStatus.OK); - } - -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceWorkorderService.java deleted file mode 100644 index cb38029b..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/ProduceWorkorderService.java +++ /dev/null @@ -1,108 +0,0 @@ - -package org.nl.wms.mps.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; -import org.springframework.data.domain.Pageable; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import java.util.List; -import java.util.Map; - -/** -* @description 服务接口 -* @author lyd -* @date 2023-03-16 -**/ -public interface ProduceWorkorderService { - - /** - * 查询数据分页 - * @param whereJson 条件 - * @param page 分页参数 - * @return Map - */ - Map queryAll(Map whereJson, Pageable page); - - /** - * 查询所有数据不分页 - * @param whereJson 条件参数 - * @return List - */ - List queryAll(Map whereJson); - - /** - * 根据ID查询 - * @param workorder_id ID - * @return ProduceWorkorder - */ - ProduceWorkorderDto findById(String workorder_id); - - /** - * 根据编码查询 - * @param code code - * @return ProduceWorkorder - */ - ProduceWorkorderDto findByCode(String code); - - - /** - * 创建 - * @param dto / - */ - void create(ProduceWorkorderDto dto); - - /** - * 编辑 - * @param dto / - */ - void update(ProduceWorkorderDto dto); - - /** - * 多选删除 - * @param ids / - */ - void deleteAll(String[] ids); - - /** - * 更换设备时根据工单所属工序 查询所有工单中没有生产的设备 - * @param param - * @return - */ - JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param); - - /** - * 获取当前工单的记录 - * @param param - * @return - */ - JSONArray getDtl(JSONObject param); - - /** - * 工单下发 - * @param param - * @return - */ - void submits(List param); - - /** - * 强制完成 - * @param param - */ - void forceFinish(JSONObject param); - - /** - * 看板强制完成 - * @param param - */ - void finish(JSONObject param); - - /** - * excel导入 - * @param file - * @param request - */ - void excelImport(MultipartFile file, HttpServletRequest request); -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceWorkorderDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceWorkorderDto.java index f94d4e78..742ee866 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceWorkorderDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/dto/ProduceWorkorderDto.java @@ -91,7 +91,7 @@ public class ProduceWorkorderDto implements Serializable { /** * 当前生产设备编码 */ - private String current_device_code; + private String device_code; /** * 当前生产人员id diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceWorkorderServiceImpl.java deleted file mode 100644 index e207000f..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceWorkorderServiceImpl.java +++ /dev/null @@ -1,580 +0,0 @@ - -package org.nl.wms.mps.service.impl; - - -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.map.MapUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import cn.hutool.poi.excel.ExcelReader; -import cn.hutool.poi.excel.ExcelUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.utils.MapOf; -import org.nl.common.utils.OptionRecord; -import org.nl.common.utils.SecurityUtils; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.WqlUtil; -import org.nl.wms.system_manage.service.user.ISysUserService; -import org.nl.wms.system_manage.service.user.dao.SysUser; -import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService; -import org.nl.common.enums.WorkerOrderEnum; -import org.nl.wms.ext.acs.service.WmsToAcsService; -import org.nl.wms.mps.service.ProduceWorkorderService; -import org.nl.wms.mps.service.WorkOrderImportEnum; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.web.multipart.MultipartFile; - -import javax.servlet.http.HttpServletRequest; -import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @author lyd - * @description 服务实现 - * @date 2023-03-16 - **/ -@Service -@RequiredArgsConstructor -@Slf4j -public class ProduceWorkorderServiceImpl implements ProduceWorkorderService { - - private final ClassstandardService classstandardService; - - private final WmsToAcsService wmsToAcsService; - - private final ISysUserService userService; - - @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_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_area = MapUtil.getStr(whereJson, "product_area"); - String product_series = ""; - // 员工只能看到自己创建的工单 - String currentUsername = SecurityUtils.getCurrentUsername(); - SysUser one = userService.getOne(new LambdaQueryWrapper().eq(SysUser::getUsername, currentUsername)); - String currentUserId = ""; - if (!one.getIs_admin()) currentUserId = SecurityUtils.getCurrentUserId(); - JSONObject map = new JSONObject(); - map.put("flag", "1"); - //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); - map.put("product_area", product_area); - map.put("current_produce_person_id", currentUserId); - 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 + "%"); - } - JSONObject jsonObject = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "ShiftOrder.update_time desc"); - return jsonObject; - } - - @Override - public List queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProduceWorkorderDto.class); - return null; - } - - @Override - public ProduceWorkorderDto findById(String workorder_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceWorkorderDto.class); - } - return null; - } - - @Override - public ProduceWorkorderDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceWorkorderDto.class); - } - return null; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(ProduceWorkorderDto dto) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - dto.setCurrent_produce_person_id(currentUserId); - 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()); - dto.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr()); - dto.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); - dto.setCreate_type(WorkerOrderEnum.PCINTO.getCode()); - dto.setWorkorder_status(WorkerOrderEnum.CREATE.getCode()); - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ProduceWorkorderDto dto) { - ProduceWorkorderDto entity = this.findById(dto.getWorkorder_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("pdm_produce_workorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - for (String workorder_id : ids) { - JSONObject param = new JSONObject(); - param.put("is_delete", "1"); - param.put("update_id", currentUserId); - param.put("update_name", nickName); - param.put("update_time", DateUtil.now()); - wo.update(param, "workorder_id = '" + workorder_id + "'"); - } - } - - @Override - public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) { - Map res = new HashMap(); - res.put("flag", "2"); - res.put("workprocedure_id", param.getString("workproceduce_id")); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(res).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - public JSONArray getDtl(JSONObject param) { - JSONObject map = new JSONObject(); - map.put("flag", "3"); - map.put("workorder_id", param.getString("workorder_id")); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - public void submits(List param) { - if (param == null || param.size()==0){ - return; - } - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String sql = param.stream().collect(Collectors.joining("','")); - WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder"); - wo.update(MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode() - ,"update_id", currentUserId,"update_name" - , nickName,"update_time", DateUtil.now()) - ,"workorder_id in ('"+sql+"')"); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void forceFinish(JSONObject param) { - this.finish(param); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void finish(JSONObject param) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - JSONObject row = param.getJSONObject("row"); - //强制完成时修改工单状态 - String workorder_id = row.getString("workorder_id"); - WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder"); - ProduceWorkorderDto workorderDto = this.findById(workorder_id); - JSONObject produceorderMap = new JSONObject(); - produceorderMap.put("workorder_id", workorder_id); - produceorderMap.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()); - produceorderMap.put("update_id", currentUserId); - produceorderMap.put("device_code", null); - produceorderMap.put("update_name", nickName); - produceorderMap.put("update_time", DateUtil.now()); - produceorderMap.put("realproduceend_date", DateUtil.now()); - wo.update(produceorderMap,"workorder_id = '"+workorder_id+"'"); - 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"; - } - //同时修改工单记录表中的期末数量及完成数量 - 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)) { - // todo: 数量不明确 - result.put("person_finish_qty", real_qty); - result.put("person_report_qty", real_qty); - result.put("operatetime_end", DateUtil.now()); - wo_record.update(result); - } - //工单开工以后需要向acs强制完成 wms向acs发送请求 工单强制完成 - // TODO: 业务不明 - OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())); - String order_status = workorderDto.getWorkorder_status(); - if (!order_status.equals("1") && !order_status.equals("2")) { - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("workorder_id", workorder_id); - map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode()); - array.add(map); - wmsToAcsService.orderStatusUpdate(array); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void excelImport(MultipartFile file, HttpServletRequest request) { - // todo: 根据需求修改 - 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("PDM_produce_workOrder"); - //物料表 - 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("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); -// param.put("macoperate_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("workorder_status", WorkerOrderEnum.CREATE.getCode()); - param.put("shift_type_scode", WorkerOrderEnum.DAYSHIFT.getCode()); // 默认白班 - 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", col)); - if (ObjectUtil.isEmpty(jsonUser)) { - is_error = "1"; - error_message = error_message + "生产人员编码不存在!"; - }else { - param.put("current_produce_person_id", jsonUser.getUser_id()); - } - } - 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("create_type", WorkerOrderEnum.EXCELINTO.getCode()); - 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("workorder_id", IdUtil.getSnowflake(1, 1).nextId()); - param.put("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); -// param.put("producedeviceorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); - param.put("workorder_status", WorkerOrderEnum.CREATE.getCode()); -// param.put("produce_date", produce_date); - param.put("shift_type_scode", WorkerOrderEnum.NIGHTSHIFT.getCode()); // 夜班 - //循环每一行 - 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", col)); - if (ObjectUtil.isEmpty(jsonUser)) { - is_error = "1"; - error_message = error_message + "生产人员编码不存在!"; - }else { - param.put("current_produce_person_id", jsonUser.getUser_id()); - } - } - 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("create_type", WorkerOrderEnum.EXCELINTO.getCode()); - 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); - } - - } - -} 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 578c489d..4156111b 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 @@ -327,7 +327,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ //获取前台传入的开工的工单信息 String workorder_id = param.getString("workorder_id"); //1-创建、2-下发、3-生产中、4-暂停、5-完成 - JSONObject result = WQLObject.getWQLObject("pdm_produce_workorder").query("current_device_code = '" + param.getString("device_code") + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); + JSONObject result = WQLObject.getWQLObject("pdm_produce_workorder").query("device_code = '" + param.getString("device_code") + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); //判断该工单状态 if(ObjectUtil.isNotEmpty(result)) { throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); @@ -339,7 +339,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ WQLObject.getWQLObject("pdm_produce_workorder").update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", SecurityUtils.getCurrentUserId(), "update_name", SecurityUtils.getCurrentNickName(), "update_time", DateUtil.now())); Map resp = wmsToAcsService.order(array); //TODO:记录表记录操作 - OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode())); + return RestBusinessTemplate.execute(() -> resp); } @@ -348,7 +348,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ JSONObject workOrder = WQLObject.getWQLObject("pdm_produce_workorder").query(" workorder_id = '" + workorder_id + "'").uniqueResult(0); JSONObject form = new JSONObject(); JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + workOrder.getString("material_id") + "'").uniqueResult(0); - JSONObject device_code = WQLObject.getWQLObject("pdm_bi_device").query("device_code = '" +workOrder.getString("current_device_code")+ "'").uniqueResult(0); + JSONObject device_code = WQLObject.getWQLObject("pdm_bi_device").query("device_code = '" +workOrder.getString("device_code")+ "'").uniqueResult(0); form.put("workorder_id",workOrder.get("workorder_id")); form.put("workorder_code",workOrder.get("workorder_code")); form.put("qty", workOrder.getString("plan_qty")); @@ -357,7 +357,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ form.put("material_name",material.get("material_name")); form.put("material_code",material.get("material_code")); form.put("material_spec",material.get("material_spec")); - form.put("device_code",workOrder.getString("current_device_code")); + form.put("device_code",workOrder.getString("device_code")); form.put("is_needmove",workOrder.getString("is_needmove")); return form; } @@ -404,7 +404,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ JSONObject map = new JSONObject(); map.put("produceorder_id", workorder_id); map.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()); - map.put("current_device_code", null); + map.put("device_code", null); map.put("update_id", currentUserId); map.put("update_name", nickName); map.put("update_time", DateUtil.now()); @@ -751,10 +751,10 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ @Override public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) { - final String workproceduce_id = param.getString("workproceduce_id"); + final String workprocedure_id = param.getString("workprocedure_id"); JSONObject map = new JSONObject(); map.put("flag", "6"); - map.put("workproceduce_id", workproceduce_id); + map.put("workprocedure_id", workprocedure_id); JSONArray devices = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(map).process().getResultJSONArray(0); StringBuilder sb = new StringBuilder(); if(ObjectUtil.isNotEmpty(devices)) { @@ -775,7 +775,7 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ param.put("device_ids", "('-1')"); } param.put("flag", "7"); - param.put("workprocedure_id", workproceduce_id); + param.put("workprocedure_id", workprocedure_id); JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEDURE001").addParamMap(param).process().getResultJSONArray(0); return resultJSONArray; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEWORKORDER.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEWORKORDER.wql index b752a82d..b6feaa06 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEWORKORDER.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/MPS_PRODUCEWORKORDER.wql @@ -127,7 +127,7 @@ OPTION 输入.workprocedure_id <> "" device.workprocedure_id = 输入.workprocedure_id and device.device_code not in ( - select o.current_device_code as device_code + select o.device_code as device_code from PDM_produce_workOrder o where o.workorder_status <> '5' and o.is_delete = '0' ) 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 index 2f27317e..11fa5445 100644 --- 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 @@ -89,7 +89,7 @@ workorder.workorder_status order_status, workorder.workorder_id, workorder.workorder_code, - workorder.current_device_code device_code, + workorder.device_code device_code, workorder.material_id, workorder.workprocedure_id, workorder.plan_qty, @@ -108,7 +108,7 @@ WHERE workorder.is_delete = '0' OPTION 输入.device_code <> "" - (workorder.current_device_code like CONCAT ('%', 输入.device_code, '%')) + (workorder.device_code like CONCAT ('%', 输入.device_code, '%')) ENDOPTION OPTION 输入.key_value <> "" ( @@ -130,15 +130,15 @@ IF 输入.flag = "3" QUERY SELECT - current_device_code deviceCode, - count( current_device_code ) job_count + device_code deviceCode, + count( device_code ) job_count FROM pdm_produce_workorder WHERE is_delete = 0 - AND current_device_code != '' + AND device_code != '' GROUP BY - current_device_code + device_code ENDSELECT ENDQUERY ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java index 6ebe7421..2a25fcb6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java @@ -1,8 +1,9 @@ package org.nl.wms.product_manage.controller.workorder; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -10,13 +11,12 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import org.nl.common.domain.query.PageQuery; -import org.nl.wms.mps.service.ProduceWorkorderService; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; +import org.nl.common.utils.SecurityUtils; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; -import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; @@ -24,8 +24,9 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.Date; import java.util.List; -import java.util.Map; /** *

@@ -41,7 +42,7 @@ import java.util.Map; @RequestMapping("/api/produceWorkorder") @Slf4j public class PdmProduceWorkorderController { - private final ProduceWorkorderService produceWorkorderService; + private final IPdmProduceWorkorderService iPdmProduceWorkorderService; @Autowired private IPdmBiDeviceService deviceService; @@ -49,41 +50,38 @@ public class PdmProduceWorkorderController { @GetMapping @Log("查询工单管理") @ApiOperation("查询工单管理") - public ResponseEntity query(@RequestParam Map whereJson, PageQuery page) { - return new ResponseEntity<>(iPdmProduceWorkorderService.queryAll(whereJson, page), HttpStatus.OK); + public ResponseEntity query(WorkorderQuery query, PageQuery page) { + return new ResponseEntity<>(iPdmProduceWorkorderService.queryAll(query, page), HttpStatus.OK); } - @PostMapping - @Log("新增工单管理") - @ApiOperation("新增工单管理") - //@PreAuthorize("@el.check('produceWorkorder:add')") - public ResponseEntity create(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } @PostMapping("/create") @Log("新增工单管理") @ApiOperation("新增工单管理") - //@PreAuthorize("@el.check('produceWorkorder:add')") - public ResponseEntity submit(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.create(dto); + public ResponseEntity submit(@Validated @RequestBody JSONObject dto) { + iPdmProduceWorkorderService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); } @PutMapping @Log("修改工单管理") @ApiOperation("修改工单管理") - //@PreAuthorize("@el.check('produceWorkorder:edit')") - public ResponseEntity update(@Validated @RequestBody ProduceWorkorderDto dto) { - produceWorkorderService.update(dto); + public ResponseEntity update(@Validated @RequestBody JSONObject dto) { + iPdmProduceWorkorderService.updateForm(dto); return new ResponseEntity<>(HttpStatus.NO_CONTENT); } - @PutMapping("/submits") + @PostMapping("/submits") @Log("工单下发") @ApiOperation("工单下发") public ResponseEntity submits(@RequestBody List param) { - produceWorkorderService.submits(param); + iPdmProduceWorkorderService.down(param); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/unSubmits") + @Log("工单取消下发") + @ApiOperation("工单取消下发") + public ResponseEntity unSubmits(@RequestBody List param) { + iPdmProduceWorkorderService.down(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -91,33 +89,29 @@ public class PdmProduceWorkorderController { @ApiOperation("删除工单管理") @DeleteMapping public ResponseEntity delete(@RequestBody String[] ids) { - produceWorkorderService.deleteAll(ids); + if (ids != null && ids.length > 0){ + iPdmProduceWorkorderService.update(new UpdateWrapper() + .set("is_delete",true) + .set("update_id", SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) + .set("update_time",new Date()) + .in("workorder_id", Arrays.asList(ids))); + } return new ResponseEntity<>(HttpStatus.OK); } @PostMapping("/getNotWorkDeviceByWorkproceduceId") @Log("根据工序查询没有工单的设备") @ApiOperation("根据工序查询没有工单的设备") - //@PreAuthorize("@el.check('WorkProcedure:add')") public ResponseEntity getNotWorkDeviceByWorkproceduceId(@RequestBody JSONObject param) { - List list = deviceService.list(new QueryWrapper() - .eq("workprocedure_id", param.getString("workprocedure_id")) - .eq("is_delete", false)); - return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.CREATED); - } - - @PostMapping("/getDtl") - @Log("获取当前工单下的工单生产记录") - @ApiOperation("获取当前工单下的工单生产记录") - public ResponseEntity getDtl(@RequestBody JSONObject param) { - return new ResponseEntity<>(produceWorkorderService.getDtl(param), HttpStatus.OK); + return new ResponseEntity<>(TableDataInfo.build(deviceService.getNotWorkDeviceByWorkproceduceId(param)),HttpStatus.CREATED); } @PostMapping("/forceFinish") @Log("工单强制完成") @ApiOperation("工单强制完成") public ResponseEntity forceFinish(@RequestBody JSONObject param) { - produceWorkorderService.forceFinish(param); + iPdmProduceWorkorderService.finish(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -125,8 +119,32 @@ public class PdmProduceWorkorderController { @Log("excel导入") @ApiOperation("excel导入") public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) { - produceWorkorderService.excelImport(file, request); + iPdmProduceWorkorderService.excelImport(file,request); return new ResponseEntity<>(HttpStatus.OK); } + + @PostMapping("/getDtl") + @Log("获取当前工单下的工单生产记录") + @ApiOperation("获取当前工单下的工单生产记录") + public ResponseEntity getDtl(@RequestBody JSONObject param) { + return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.getDtl(param)), HttpStatus.OK); + } + + @PostMapping("/report") + @Log("报工") + @ApiOperation("报工") + public ResponseEntity report(@RequestBody JSONObject param) { + return new ResponseEntity<>(iPdmProduceWorkorderService.report(param), HttpStatus.OK); + } + + @PostMapping("/reportApprove") + @Log("报工审核") + @ApiOperation("报工审核") + public ResponseEntity reportApprove(@RequestBody JSONArray param) { + iPdmProduceWorkorderService.reportApprove(param); + return new ResponseEntity<>(HttpStatus.OK); + } + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index f19f70badcd7355078f31fe8ef1c82a5f1775a2b..8aeca089c50a44c1bf363fe3c81f98176f839bd6 100644 GIT binary patch delta 33 ncmZpez}ql^cS8;f+k%%5KPGlG7qPS#u`mKL)Ak}3=00Zt>c$M5 delta 33 ncmZpez}ql^cS8;fTS9NK`L*WeB9`_d7Dgau+Fr!M+~*7c&E*S7 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java index 7057066b..3db7a58e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java @@ -1,8 +1,12 @@ package org.nl.wms.product_manage.service.device; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; + /** *

* 生产设备基础信息表 服务类 @@ -13,4 +17,6 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface IPdmBiDeviceService extends IService { + List getNotWorkDeviceByWorkproceduceId(JSONObject param); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java index 90beebe2..5549e533 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java @@ -3,6 +3,9 @@ package org.nl.wms.product_manage.service.device.dao.mapper; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 生产设备基础信息表 Mapper 接口 @@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface PdmBiDeviceMapper extends BaseMapper { + List getNotWorkDevice(Map query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index 08659903..f8e60447 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -2,4 +2,20 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java index 199ff3e1..ec77959e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java @@ -1,11 +1,15 @@ package org.nl.wms.product_manage.service.device.impl; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.device.dao.mapper.PdmBiDeviceMapper; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** *

* 生产设备基础信息表 服务实现类 @@ -17,4 +21,8 @@ import org.springframework.stereotype.Service; @Service public class PdmBiDeviceServiceImpl extends ServiceImpl implements IPdmBiDeviceService { + @Override + public List getNotWorkDeviceByWorkproceduceId(JSONObject param) { + return this.baseMapper.getNotWorkDevice(param); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java index f42ab26c..58d5af34 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java @@ -4,12 +4,13 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.common.domain.query.PageQuery; -import org.nl.common.utils.api.CommonResult; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; +import org.nl.common.utils.OptionRecord; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,74 +30,51 @@ public interface IPdmProduceWorkorderService extends IService */ - Object queryAll(Map whereJson, PageQuery page); + Object queryAll(WorkorderQuery whereJson, PageQuery page); /** * 查询所有数据不分页 * @param whereJson 条件参数 * @return List */ - List queryAll(Map whereJson); + Object queryAll(Map whereJson); - /** - * 根据ID查询 - * @param workorder_id ID - * @return ProduceWorkorder - */ - ProduceWorkorderDto findById(String workorder_id); - - /** - * 根据编码查询 - * @param code code - * @return ProduceWorkorder - */ - ProduceWorkorderDto findByCode(String code); /** * 创建 * @param dto / */ - void create(ProduceWorkorderDto dto); + void create(JSONObject dto); /** * 编辑 + * * @param dto / */ - void update(ProduceWorkorderDto dto); + void updateForm(JSONObject dto); - /** - * 多选删除 - * @param ids / - */ - void deleteAll(String[] ids); - /** - * 更换设备时根据工单所属工序 查询所有工单中没有生产的设备 - * @param param - * @return - */ - JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param); /** * 获取当前工单的记录 * @param param * @return */ - JSONArray getDtl(JSONObject param); + List getDtl(JSONObject param); /** * 工单下发 * @param param * @return */ - void submits(List param); - + void down(List param); /** - * 强制完成 + * 工单取消下发 * @param param + * @return */ - void forceFinish(JSONObject param); + void unDown(List param); /** * 看板强制完成 @@ -116,7 +94,20 @@ public interface IPdmProduceWorkorderService extends IService> openStart(JSONObject param); + Object openStart(JSONObject param); + + /** + * 开工操作 + *包含3个字段 + * @param param 请求参数 + * @return + */ + Object report(JSONObject param); + + void reportApprove(JSONArray param); + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java index 57992f47..128ff135 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/PdmProduceWorkorder.java @@ -44,6 +44,7 @@ public class PdmProduceWorkorder implements Serializable { */ private String workprocedure_id; + /** * 生产区域 */ @@ -52,27 +53,27 @@ public class PdmProduceWorkorder implements Serializable { /** * 计划数量 */ - private Integer plan_qty; + private BigDecimal plan_qty; /** * 实际数量 */ - private Integer real_qty; + private BigDecimal real_qty; /** * 人员实际数量 */ - private Integer person_real_qty; + private BigDecimal person_real_qty; /** * 电气实际数量 */ - private String dq_real_qty; + private BigDecimal dq_real_qty; /** * 物料标识 */ - private Long material_id; + private String material_id; /** * 物料单重 @@ -102,17 +103,17 @@ public class PdmProduceWorkorder implements Serializable { /** * 当前生产设备编码 */ - private String current_device_code; + private String device_code; /** * 当前生产人员id */ - private Long current_produce_person_id; + private String current_produce_person_id; /** * 操作工是否允许修改报工数量 */ - private String is_canupdate_update; + private Boolean is_canupdate_update; /** * 物料系列 @@ -127,12 +128,12 @@ public class PdmProduceWorkorder implements Serializable { /** * 是否搬运 */ - private String is_needmove; + private Boolean is_needmove; /** * 销售单标识 */ - private Long sale_id; + private String sale_id; /** * 创建类型 @@ -142,7 +143,7 @@ public class PdmProduceWorkorder implements Serializable { /** * 工单是否异常 */ - private String is_error; + private Boolean is_error; /** * 异常信息 @@ -157,7 +158,7 @@ public class PdmProduceWorkorder implements Serializable { /** * 创建人 */ - private Long create_id; + private String create_id; /** * 创建人 @@ -169,30 +170,56 @@ public class PdmProduceWorkorder implements Serializable { */ private String create_time; - /** - * 修改人 - */ - private Long update_id; - /** - * 修改人 - */ - private String update_name; - - /** - * 修改时间 - */ - private String update_time; /** * 是否删除 */ - private String is_delete; + private Boolean is_delete; /** * 报工数量 */ - private Integer report_qty; + private BigDecimal report_qty; + + // 工单类型 10手工工单。20排产工单 + private String order_type_scode; + + //报废总;报修总 + private BigDecimal nok_qty; + private BigDecimal repare_qty; + + + /** + * 下发人 + */ + private String down_id; + + /** + * 下发人 + */ + private String down_name; + + /** + * 下发时间 + */ + private String down_time; + + + /** + * 完工人 + */ + private String confirm_id; + + /** + * 完工人 + */ + private String confirm_name; + + /** + * 完工时间 + */ + private String confirm_time; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java index 304d73dd..794348f7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java @@ -18,5 +18,11 @@ import java.util.Map; * @since 2023-04-26 */ public interface PdmProduceWorkorderMapper extends BaseMapper { + List pageQuery(@Param("query") WorkorderQuery query); + + List getworkOrderDtl(String workorder_id); + + int batchUpdateByParam(@Param("event") List event, @Param("workorder_id")String workorder_id); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index 4548c3c4..db100b8a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -53,4 +53,37 @@ ) + + + + update PDM_produce_workOrder set + + ${item.field} = ${item.field} + + + + + + + - + + + #{item.value,jdbcType=DECIMAL} + + where workorder_id = #{workorder_id} + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java index 71cc8907..4e43b6b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java @@ -7,6 +7,9 @@ import org.nl.common.domain.query.QParam; import org.nl.common.enums.QueryTEnum; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import java.util.List; +import java.util.Map; + /* * @author ZZQ * @Date 2023/4/26 11:05 @@ -24,5 +27,8 @@ public class WorkorderQuery extends BaseQuery { private String is_error; - + @Override + public void paramMapping() { + super.doP.put("product_series", QParam.builder().k(new String[]{"dept_id"}).type(QueryTEnum.IN).build()); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java similarity index 56% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderServiceImpl.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 5352bcde..29dd6483 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -2,42 +2,40 @@ package org.nl.wms.product_manage.service.workorder.impl; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; import org.nl.common.enums.WorkerOrderEnum; -import org.nl.common.utils.MapOf; -import org.nl.common.utils.OptionRecord; -import org.nl.common.utils.SecurityUtils; -import org.nl.common.utils.api.CommonResult; +import org.nl.common.utils.*; import org.nl.common.utils.api.RestBusinessTemplate; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.WmsToAcsService; -import org.nl.wms.masterdata_manage.备份master.service.ClassstandardService; +import org.nl.wms.masterdata_manage.master.service.classstandard.IMdPbClassstandardService; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.mps.service.WorkOrderImportEnum; -import org.nl.wms.mps.service.dto.ProduceWorkorderDto; +import org.nl.wms.product_manage.ReportRecordStatus; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderrecordService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord; +import org.nl.wms.product_manage.service.workorder.dao.WorkorderRecord; import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderMapper; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import org.nl.wms.system_manage.service.user.ISysUserService; @@ -46,14 +44,13 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.InputStream; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -65,9 +62,9 @@ import java.util.stream.Collectors; * @since 2023-04-26 */ @Service -public class PdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { +public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { @Autowired - private ClassstandardService classstandardService; + private IMdPbClassstandardService classstandardService; @Autowired private WmsToAcsService wmsToAcsService; @Autowired @@ -78,12 +75,15 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize()); List result = pdmProduceWorkorderMapper.pageQuery(query); @@ -93,171 +93,122 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl queryAll(Map whereJson) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONArray arr = wo.query().getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(arr)) return arr.toJavaList(ProduceWorkorderDto.class); - return null; + public Object queryAll(Map whereJson) { + return this.list(); + } + + + @Override + public void create(JSONObject form) { + PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); + entity.setWorkorder_id(IdUtil.getStringId()); + entity.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); + entity.setCurrent_produce_person_id(SecurityUtils.getCurrentUserId()); + entity.setCreate_id(SecurityUtils.getCurrentUserId()); + entity.setCreate_name(SecurityUtils.getCurrentNickName()); + entity.setCreate_time(DateUtil.now()); + entity.setCreate_type(WorkerOrderEnum.PCINTO.getCode()); + entity.setWorkorder_status(WorkerOrderEnum.CREATE.getCode()); + this.save(entity); + + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,entity.getWorkorder_id()); } @Override - public ProduceWorkorderDto findById(String workorder_id) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = wo.query("workorder_id = '" + workorder_id + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceWorkorderDto.class); + public void updateForm(JSONObject form) { + Assert.notNull(form,"参数不能为空"); + PdmProduceWorkorder one = this.getOne(new QueryWrapper().eq("workorder_id", form.getString("workorder_id"))); + if (one == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); } - return null; + PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); + entity.setDown_time(DateUtil.now()); + entity.setDown_id(SecurityUtils.getCurrentUserId()); + entity.setDown_name(SecurityUtils.getCurrentNickName()); + this.updateById(entity); + + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,entity.getWorkorder_id()); } @Override - public ProduceWorkorderDto findByCode(String code) { - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = wo.query("code ='" + code + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(json)) { - return json.toJavaObject(ProduceWorkorderDto.class); - } - return null; + public List getDtl(JSONObject param) { + return this.baseMapper.getworkOrderDtl(param.getString("workorder_id")); } @Override - @Transactional(rollbackFor = Exception.class) - public void create(ProduceWorkorderDto dto) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - dto.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - dto.setCurrent_produce_person_id(currentUserId); - 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()); - dto.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr()); - dto.setWorkorder_code(CodeUtil.getNewCode("PDM_SHIFTORDER")); - dto.setCreate_type(WorkerOrderEnum.PCINTO.getCode()); - dto.setWorkorder_status(WorkerOrderEnum.CREATE.getCode()); - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.insert(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(ProduceWorkorderDto dto) { - ProduceWorkorderDto entity = this.findById(dto.getWorkorder_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("pdm_produce_workorder"); - JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); - for (String workorder_id : ids) { - JSONObject param = new JSONObject(); - param.put("is_delete", "1"); - param.put("update_id", currentUserId); - param.put("update_name", nickName); - param.put("update_time", DateUtil.now()); - wo.update(param, "workorder_id = '" + workorder_id + "'"); - } - } - - @Override - public JSONArray getNotWorkDeviceByWorkproceduceId(JSONObject param) { - Map res = new HashMap(); - res.put("flag", "2"); - res.put("workprocedure_id", param.getString("workproceduce_id")); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(res).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - public JSONArray getDtl(JSONObject param) { - JSONObject map = new JSONObject(); - map.put("flag", "3"); - map.put("workorder_id", param.getString("workorder_id")); - JSONArray resultJSONArray = WQL.getWO("MPS_PRODUCEWORKORDER").addParamMap(map).process().getResultJSONArray(0); - return resultJSONArray; - } - - @Override - public void submits(List param) { - if (param == null || param.size()==0){ + public void down(List ids) { + if (ids == null || ids.size()==0){ return; } - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - String sql = param.stream().collect(Collectors.joining("','")); - WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder"); - wo.update(MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode() - ,"update_id", currentUserId,"update_name" - , nickName,"update_time", DateUtil.now()) - ,"workorder_id in ('"+sql+"')"); + this.update(new UpdateWrapper() + .set("workorder_status",WorkerOrderEnum.SEND.getCode()) + .set("down_id", SecurityUtils.getCurrentUserId()) + .set("down_name",SecurityUtils.getCurrentNickName()) + .set("down_time",new Date()) + .in("workorder_id", ids)); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0])); + } @Override - @Transactional(rollbackFor = Exception.class) - public void forceFinish(JSONObject param) { - this.finish(param); + public void unDown(List ids) { + if (ids == null || ids.size()==0){ + return; + } + List list = this.list(new QueryWrapper() + .ne("workorder_status", WorkerOrderEnum.SEND.getCode()) + .in("workorder_id", ids)); + if (list.size()>0){ + throw new BadRequestException("只有下发状态的工单才能取消下发"); + } + this.update(new UpdateWrapper() + .set("workorder_status",WorkerOrderEnum.CREATE.getCode()) + .set("down_id", SecurityUtils.getCurrentUserId()) + .set("down_name",SecurityUtils.getCurrentNickName()) + .set("down_time",new Date()) + .in("workorder_id", ids)); + + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0])); } @Override @Transactional(rollbackFor = Exception.class) public void finish(JSONObject param) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - JSONObject row = param.getJSONObject("row"); //强制完成时修改工单状态 - String workorder_id = row.getString("workorder_id"); - WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder"); - ProduceWorkorderDto workorderDto = this.findById(workorder_id); - JSONObject produceorderMap = new JSONObject(); - produceorderMap.put("workorder_id", workorder_id); - produceorderMap.put("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()); - produceorderMap.put("update_id", currentUserId); - produceorderMap.put("device_code", null); - produceorderMap.put("update_name", nickName); - produceorderMap.put("update_time", DateUtil.now()); - produceorderMap.put("realproduceend_date", DateUtil.now()); - wo.update(produceorderMap,"workorder_id = '"+workorder_id+"'"); - 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"; + String workorder_id = param.getJSONObject("row").getString("workorder_id"); + this.update(new UpdateWrapper() + .set("workorder_status",WorkerOrderEnum.FORCE_COMPLETE.getCode()) + .set("update_id", SecurityUtils.getCurrentUserId()) + .set("update_name",SecurityUtils.getCurrentNickName()) + .set("update_time",new Date()) + .in("workorder_id", workorder_id)); + JSONArray array = new JSONArray(); + JSONObject map = new JSONObject(); + map.put("workorder_id", workorder_id); + map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode()); + array.add(map); + Map result = wmsToAcsService.orderStatusUpdate(array); + if (!HttpStatus.OK.equals(result.get("status"))) { + throw new BadRequestException((String) result.get("message")); } - //同时修改工单记录表中的期末数量及完成数量 - 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)) { - // todo: 数量不明确 - result.put("person_finish_qty", real_qty); - result.put("person_report_qty", real_qty); - result.put("operatetime_end", DateUtil.now()); - wo_record.update(result); - } - //工单开工以后需要向acs强制完成 wms向acs发送请求 工单强制完成 - // TODO: 业务不明 - OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode())); - String order_status = workorderDto.getWorkorder_status(); - if (!order_status.equals("1") && !order_status.equals("2")) { - JSONArray array = new JSONArray(); - JSONObject map = new JSONObject(); - map.put("workorder_id", workorder_id); - map.put("type", WorkerOrderEnum.FORCE_COMPLETE.getCode()); - array.add(map); - wmsToAcsService.orderStatusUpdate(array); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,workorder_id); + } + + + public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String...ids) { + List workorders = this.list(new QueryWrapper().in("workorder_id", ids)); + for (PdmProduceWorkorder one : workorders) { + WorkorderRecord record = WorkorderRecord.builder() + .workorder_id(one.getWorkorder_id()) + .device_code(one.getDevice_code()) + .dq_init_qty(one.getReal_qty()) + .dq_finish_qty(one.getReal_qty()) + .operatetime_start(one.getCreate_time()) + .workprocedure_id(one.getWorkprocedure_id()) + .operatetime_end(DateUtil.now()) + .shift_type_scode(one.getShift_type_scode()) + .product_area(one.getProduct_area()).build(); + OptionRecord.recordAsync(optionEnum, one.getWorkorder_status(),OptionRecord.Buss.WORKORDER, one.getWorkorder_id(),record); } } @@ -278,16 +229,6 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl> read = excelReader.read(0, excelReader.getRowCount()); String produce_date = ""; // 循环获取的数据 + List entitys = new ArrayList<>(); row: for (int i = 0; i < read.size(); i++) { List list = read.get(i); @@ -304,7 +246,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("material_spec", col)); + if (ObjectUtil.isEmpty(material)) { is_error = "1"; error_message = error_message + "物料规格对应物料信息不存在,"; }else { - param.put("material_id", json_material.getString("material_id")); + param.put("material_id", material.getMaterial_id()); } } if (j == 2) { @@ -366,16 +308,16 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("device_code", col)); + if (ObjectUtil.isEmpty(device)) { is_error = "1"; error_message = error_message + "设备编码不存在,"; } - if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { + if (!workprocedure_id.equals(device.getWorkprocedure_id())) { is_error = "1"; error_message = error_message + "设备与所属工序不匹配,"; }else { - param.put("device_id", json_device.getString("device_id")); + param.put("device_code", device.getDevice_code()); } } if (j == 11) { @@ -412,7 +354,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("material_spec", col)); + if (ObjectUtil.isEmpty(material)) { is_error = "1"; error_message = error_message + "物料规格对应物料信息不存在,"; }else { - param.put("material_id", json_material.getString("material_id")); + param.put("material_id", material.getMaterial_id()); } } if (j == 2) { @@ -503,16 +445,16 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("device_code", col)); + if (ObjectUtil.isEmpty(device)) { is_error = "1"; error_message = error_message + "设备编码不存在,"; } - if (!workprocedure_id.equals(json_device.getString("workprocedure_id"))) { + if (!workprocedure_id.equals(device.getWorkprocedure_id())) { is_error = "1"; error_message = error_message + "设备与所属工序不匹配,"; }else { - param.put("device_id", json_device.getString("device_id")); + param.put("device_code", device.getDevice_code()); } } if (j == 11) { @@ -550,20 +492,22 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl> openStart(JSONObject param) { + public Object openStart(JSONObject param) { //获取前台传入的开工的工单信息 //1-创建、2-下发、3-生产中、4-暂停、5-完成 //判断该工单状态 PdmProduceWorkorder result = this.getOne(new QueryWrapper() - .eq("current_device_code", param.getString("device_code")) + .eq("device_code", param.getString("device_code")) .in("workorder_status","2","3","4") .ne("workorder_id",param.getString("workorder_id"))); if(ObjectUtil.isNotEmpty(result)) { @@ -580,7 +524,8 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); - OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,param.getString("workorder_id"),MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode())); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,result.getWorkorder_id()); + return RestBusinessTemplate.execute(() -> resp); } @@ -588,7 +533,7 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("material_id", workOrder.getMaterial_id())); - PdmBiDevice device = deviceService.getOne(new QueryWrapper().eq("device_code", workOrder.getCurrent_device_code())); + PdmBiDevice device = deviceService.getOne(new QueryWrapper().eq("device_code", workOrder.getDevice_code())); form.put("workorder_id",workOrder.getWorkorder_id()); form.put("workorder_code",workOrder.getWorkorder_code()); form.put("qty", workOrder.getPlan_qty()); @@ -597,9 +542,93 @@ public class PdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); + if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode())||workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())){ + throw new BadRequestException(param.getString("workorder_id")+"当前工单已经完工不允许报工"); + } + PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper() + .eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportRecordStatus.CREATE.getCode())); + if ( one == null) { + throw new BadRequestException(param.getString("workorder_id")+"当前工单没有生成状态的报工记录"); + } + workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); + workorder.setNok_qty(workorder.getReport_qty().add(param.getBigDecimal("nok_qty"))); + workorder.setRepare_qty(workorder.getReport_qty().add(param.getBigDecimal("repare_qty"))); + if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()){ + workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode()); + } + this.updateById(workorder); + + reportRecordService.update(new UpdateWrapper() + .set("report_qty",param.getBigDecimal("report_qty")) + .set("nok_qty",param.getBigDecimal("nok_qty")) + .set("repare_qty",param.getBigDecimal("repare_qty")) + .set("needproduct_qty",workorder.getPlan_qty().doubleValue()-workorder.getReport_qty().doubleValue()) + .eq("macoperate_id",one.getMacoperate_id())); + return one.getMacoperate_id(); + } + + + @Override + @Transactional + public void reportApprove(JSONArray param) { + List workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class); + if (!CollectionUtils.isEmpty(workreportRecords)){ + List macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); + List record = reportRecordService.list(new QueryWrapper() + .in("macoperate_id", macoperate_ids)); + Map> collect = workreportRecords.stream().collect(Collectors.groupingBy(PdmProduceWorkorderrecord::getWorkorder_id)); + for (Map.Entry> entry : collect.entrySet()) { + List itemRecord = entry.getValue(); + itemRecord.forEach(item -> { + item.setReport_status(ReportRecordStatus.FINISH.getCode()); + item.setConfirm_id(SecurityUtils.getCurrentUserId()); + item.setConfirm_name(SecurityUtils.getCurrentNickName()); + item.setConfirm_time(DateUtil.now()); + }); + List list = packageWorkorderQty(record, itemRecord); + this.baseMapper.batchUpdateByParam(list,entry.getKey()); + reportRecordService.updateBatchById(itemRecord); + } + } + } + + @NotNull + private List packageWorkorderQty(List record, List itemRecord) { + List ids = itemRecord.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); + List oldRecord = record.stream().filter(item -> ids.contains(item.getMacoperate_id())).collect(Collectors.toList()); + long old_nok_qty = oldRecord.stream().map(PdmProduceWorkorderrecord::getNok_qty).count(); + long new_nok_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getNok_qty).count(); + long old_repare_qty = oldRecord.stream().map(PdmProduceWorkorderrecord::getRepare_qty).count(); + long new_repare_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getRepare_qty).count(); + long old_report_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getReport_qty).count(); + long new_report_qty = itemRecord.stream().map(PdmProduceWorkorderrecord::getReport_qty).count(); + List list = new ArrayList<>(); + Map nok_qty = new HashMap<>(); + nok_qty.put("field","nok_qty"); + nok_qty.put("value",Math.abs(new_nok_qty-old_nok_qty)); + nok_qty.put("add",new_nok_qty>old_nok_qty); + list.add(nok_qty); + Map repare_qty = new HashMap<>(); + repare_qty.put("field","repare_qty"); + repare_qty.put("value",Math.abs(new_repare_qty-old_repare_qty)); + repare_qty.put("add",new_repare_qty>old_repare_qty); + list.add(repare_qty); + Map report_qty = new HashMap<>(); + report_qty.put("field","report_qty"); + report_qty.put("value",Math.abs(new_report_qty-old_report_qty)); + report_qty.put("add",new_report_qty>old_report_qty); + list.add(report_qty); + return list; + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/dao/PdmBiWorkprocedure.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/dao/PdmBiWorkprocedure.java index 2dc1ae1e..81c79a28 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/dao/PdmBiWorkprocedure.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/dao/PdmBiWorkprocedure.java @@ -1,5 +1,6 @@ package org.nl.wms.product_manage.service.workprocedure.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -23,7 +24,8 @@ public class PdmBiWorkprocedure implements Serializable { /** * 工序标识 */ - private Long workprocedure_id; + @TableId("workprocedure_id") + private String workprocedure_id; /** * 生产区域 @@ -53,17 +55,17 @@ public class PdmBiWorkprocedure implements Serializable { /** * 是否关键工序 */ - private String is_keyworkprocedure; + private Boolean is_keyworkprocedure; /** * 是否首道工序 */ - private String is_first; + private Boolean is_first; /** * 是否启用 */ - private String is_used; + private Boolean is_used; /** * 备注 @@ -73,7 +75,7 @@ public class PdmBiWorkprocedure implements Serializable { /** * 创建人 */ - private Long create_id; + private String create_id; /** * 创建人姓名 @@ -88,7 +90,7 @@ public class PdmBiWorkprocedure implements Serializable { /** * 修改人 */ - private Long update_id; + private String update_id; /** * 修改人姓名 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/impl/PdmBiWorkprocedureServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/impl/PdmBiWorkprocedureServiceImpl.java index 7ed2af06..15d564b4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/impl/PdmBiWorkprocedureServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workprocedure/impl/PdmBiWorkprocedureServiceImpl.java @@ -25,7 +25,7 @@ public class PdmBiWorkprocedureServiceImpl extends ServiceImpl().eq("is_used", "1").orderByDesc("workprocedure_code")); + List list = this.list(new QueryWrapper().eq("is_used", true).orderByDesc("workprocedure_code")); return new JSONArray(list); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/ql/dao/PdmQlOption.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/ql/dao/PdmQlOption.java index 18cecad8..20dc7a4a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/ql/dao/PdmQlOption.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/ql/dao/PdmQlOption.java @@ -1,5 +1,6 @@ package org.nl.wms.system_manage.service.ql.dao; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; @@ -26,7 +27,8 @@ public class PdmQlOption implements Serializable { /** * 项目id */ - private String optionId; + @TableId(value = "option_id") + private String option_id; /** * 检测类型 @@ -38,10 +40,12 @@ public class PdmQlOption implements Serializable { */ private String orderno; + private String status; + /** * 数据 */ - private String optionDate; + private String optiod_date; /** * 业务类 */ @@ -50,17 +54,17 @@ public class PdmQlOption implements Serializable { /** * 创建人姓名 */ - private String createName; + private String create_name; /** * 创建时间 */ - private Date createTime; + private String create_time; /** * 创建人 */ - private String createId; + private String create_id; /** * 备注 diff --git a/mes/qd/src/router/routers.js b/mes/qd/src/router/routers.js index c3f22f20..4d51c927 100644 --- a/mes/qd/src/router/routers.js +++ b/mes/qd/src/router/routers.js @@ -13,7 +13,7 @@ export const constantRouterMap = [ }, { path: '/produceTask', - component: (resolve) => require(['@/views/wms/mps/produce/bigScreen'], resolve), + component: (resolve) => require(['@/views/wms/product_manage/workorder/bigScreen'], resolve), hidden: true, meta: { title: '加工看板' } }, diff --git a/mes/qd/src/views/wms/mps/produce/AddDialog.vue b/mes/qd/src/views/wms/product_manage/workorder/AddDialog.vue similarity index 99% rename from mes/qd/src/views/wms/mps/produce/AddDialog.vue rename to mes/qd/src/views/wms/product_manage/workorder/AddDialog.vue index d258b0db..8fe5d352 100644 --- a/mes/qd/src/views/wms/mps/produce/AddDialog.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/AddDialog.vue @@ -180,7 +180,7 @@ import CRUD, { crud, header, presenter } from '@crud/crud' import MaterDtl from '@/views/wms/pub/MaterDialog' import crudWorkProcedure from '@/api/wms/basedata/pdm/workProcedure' -import crudProduceshiftorder from '@/api/wms/mps/produceshiftorder' +import crudProduceshiftorder from '@/views/wms/product_manage/workorder' export default { name: 'AddDtl', diff --git a/mes/qd/src/views/wms/mps/produce/OutMaterDialog.vue b/mes/qd/src/views/wms/product_manage/workorder/OutMaterDialog.vue similarity index 100% rename from mes/qd/src/views/wms/mps/produce/OutMaterDialog.vue rename to mes/qd/src/views/wms/product_manage/workorder/OutMaterDialog.vue diff --git a/mes/qd/src/views/wms/mps/produce/ReplaceDeviceDialog.vue b/mes/qd/src/views/wms/product_manage/workorder/ReplaceDeviceDialog.vue similarity index 96% rename from mes/qd/src/views/wms/mps/produce/ReplaceDeviceDialog.vue rename to mes/qd/src/views/wms/product_manage/workorder/ReplaceDeviceDialog.vue index 1906ea49..a395f8a3 100644 --- a/mes/qd/src/views/wms/mps/produce/ReplaceDeviceDialog.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/ReplaceDeviceDialog.vue @@ -63,7 +63,7 @@ + + From e96c97aefd4594900ac84e50a4dbeb7e1600473a Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 17 May 2023 20:47:30 +0800 Subject: [PATCH 5/7] =?UTF-8?q?fix=20=20=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../nl/acs/opc/DeviceOpcProtocolRunable.java | 420 +++++++++++++----- 1 file changed, 301 insertions(+), 119 deletions(-) diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 00d6b2f5..601d1cc9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -1,29 +1,38 @@ package org.nl.acs.opc; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; -import org.openscada.opc.lib.da.Group; -import org.openscada.opc.lib.da.Item; -import org.openscada.opc.lib.da.ItemState; -import org.openscada.opc.lib.da.Server; +import org.nl.acs.udw.UnifiedDataAppService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; +import org.nl.modules.wql.util.SpringContextHolder; +import org.openscada.opc.lib.da.*; +import org.springframework.beans.factory.annotation.Autowired; import java.util.*; + @Slf4j -public class DeviceOpcProtocolRunable implements Runnable { +public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerConnectionStateListener { List protocols; OpcServerManageDto OpcServer; int error_num; String message; + int maxResartNum; private Server server; + private Group group; + boolean flag = false; + private int all_null; + private Map itemSearchCache; public DeviceOpcProtocolRunable() { this.error_num = 0; + this.all_null = 0; this.message = null; + this.itemSearchCache = new HashMap(); this.server = null; } @@ -43,36 +52,58 @@ public class DeviceOpcProtocolRunable implements Runnable { this.OpcServer = opcServer; } - OpcItemDto getItem(String item) { - Iterator var2 = this.protocols.iterator(); - OpcItemDto dto; - do { - if (!var2.hasNext()) { - return null; + private OpcItemDto getItem(String item) { + OpcItemDto x = (OpcItemDto) this.itemSearchCache.get(item); + if (x == null) { + Iterator var3 = this.protocols.iterator(); + + while (var3.hasNext()) { + OpcItemDto dto = (OpcItemDto) var3.next(); + if (StrUtil.equals(item, dto.getItem_code())) { + x = dto; + this.itemSearchCache.put(item, dto); + break; + } } + } - dto = (OpcItemDto) var2.next(); - } while (!StrUtil.equals(item, dto.getItem_code())); - - return dto; + return x; } + @Override public void run() { - while (true) { - try { - this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); -// Group group = server.addGroup(this.OpcServer.getOpc_host()); - Group group = server.addGroup(this.OpcServer.getOpc_code()); - if(ObjectUtil.isEmpty(group)){ - log.info("group is null "); - } - List itemsString = new ArrayList(); - Iterator it = this.protocols.iterator(); + if (OpcConfig.opc_item_read_using_callback) { + this.runNew(); + } else { + this.runOld(); + } + } - while (it.hasNext()) { - OpcItemDto protocol = (OpcItemDto) it.next(); + + private void runOld() { + while (true) { + start: + try { + if (this.group != null) { + group.clear(); + group.remove(); + log.trace("清理group..."); + } + if (this.server != null) { + server.disconnect(); + log.trace("清理server..."); + } + + this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); + this.server.addStateListener(this); + group = this.server.addGroup(); + List itemsString = new ArrayList(); + Iterator var3 = this.protocols.iterator(); + + while (var3.hasNext()) { + OpcItemDto protocol = (OpcItemDto) var3.next(); String item = protocol.getItem_code(); itemsString.add(item); } @@ -80,58 +111,60 @@ public class DeviceOpcProtocolRunable implements Runnable { Map itemsMap = new LinkedHashMap(); boolean is_error = false; StringBuilder err_message = new StringBuilder(); - Iterator var7 = itemsString.iterator(); + Iterator var6 = itemsString.iterator(); - while (var7.hasNext()) { - String string = (String) var7.next(); + while (var6.hasNext()) { + String string = (String) var6.next(); try { - itemsMap.put(string, group.addItem(string)); + Item item = group.addItem(string); + itemsMap.put(string, item); log.trace("添加成功 {}", string); - } catch (Exception var29) { - err_message.append(string + ":" + var29.getMessage()); + } catch (Exception var26) { + err_message.append(string + ":" + var26.getMessage()); if (!is_error) { is_error = true; } } } + String tag; if (is_error) { - log.info("设备OPC数据同步配置异常"); + tag = err_message.toString(); + log.warn("{}:{}", OpcConfig.resource_code, tag); } if (!OpcStartTag.is_run) { OpcStartTag.is_run = true; } - //线程名 - String tag = Thread.currentThread().getName(); - if (this.OpcServer != null) { - tag = tag + this.OpcServer.getOpc_code(); + tag = ""; + if (log.isWarnEnabled()) { + tag = Thread.currentThread().getName(); + if (this.OpcServer != null) { + tag = tag + this.getOpcGroupID(); + } } - UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); + UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); boolean time_out = false; - label97: - while (true) { + while (DeviceOpcSynchronizeAutoRun.isRun) { long begin = System.currentTimeMillis(); - Map itemStatus = null; - try { - itemStatus = group.read(true, (Item[]) itemsMap.values().toArray(new Item[0])); - } catch (Exception e){ - System.out.println("数据同步异常:"+ this.getOpcServer().getOpc_code()); - log.trace("数据同步异常:{}", this.getOpcServer().getOpc_code()); - //e.printStackTrace(); + if (log.isTraceEnabled()) { + log.trace("{} 开始记时{}", tag, DateUtil.now()); } + + Map itemStatus = group.read(true, (Item[]) itemsMap.values().toArray(new Item[0])); long end = System.currentTimeMillis(); - log.trace("{} 开始记时{}", tag, DateUtil.now()); long duration = end - begin; - log.trace("{} 读取耗时:{}", tag, duration); -// System.out.println("线程:"+tag + " 读取耗时:"+ duration); + if (log.isTraceEnabled()) { + log.trace("{} 读取耗时:{}", tag, duration); + } + if (duration > 1000L) { if (!time_out) { - log.warn(" {} 读取超时 : {}", tag, duration); + log.warn("{} 读取超时 : {}", tag, duration); } time_out = true; @@ -139,99 +172,195 @@ public class DeviceOpcProtocolRunable implements Runnable { time_out = false; } - if(ObjectUtil.isEmpty(itemStatus)) { - //System.out.println( tag + " :itemStatus is null"); - //log.warn(" {} 读取异常 : {} itemStatus is null", tag); - } - - + boolean valueAllNotNull = false; Set items = itemStatus.keySet(); Iterator var18 = items.iterator(); - while (true) { - Item item; - //当前值 - Object value; - //旧的值 - Object his; - do { - if (!var18.hasNext()) { - end = System.currentTimeMillis(); - log.trace("{}", itemsString); - log.trace("{} 计算完成耗时{}", tag, end - begin); - Thread.sleep((long) OpcConfig.synchronized_millisecond); - if (this.error_num != 0) { - this.error_num = 0; - this.message = null; - } - continue label97; - } - - item = (Item) var18.next(); - ItemState itemState = (ItemState) itemStatus.get(item); - value = OpcUtl.getValue(item, itemState); - his = accessor_value.getValue(item.getId()); - if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && his != null) { - log.warn("opc 值不健康 item: {}, 状态: {},当前读取值:{}, 系统内存值{} ", item.getId(), itemState.getQuality(), value, his); - } - } while (ObjectUtil.equal(value, his));//如果两次的值相等,不走下面的代码 - - OpcItemDto itemDto = this.getItem(item.getId()); - //默认记录日志 - if (true) { - StringBuilder sb = new StringBuilder(); - //设备的ITEM项 - List relate_items = itemDto.getRelate_items(); - Iterator var26 = relate_items.iterator(); - - while (var26.hasNext()) { - String relate = (String) var26.next(); - Object obj = accessor_value.getValue(relate); - sb.append("key:" + relate + "value:" + obj + ";"); - } - - log.warn("信号{}变更从{}->{};信号快照:{}", new Object[]{item.getId(), his, value, sb}); - + while (var18.hasNext()) { + Item item = (Item) var18.next(); + ItemState itemState = (ItemState) itemStatus.get(item); + Object value = OpcUtl.getValue(item, itemState); + if (value != null) { + valueAllNotNull = true; } -// accessor_value.setValueWithPersistence(item.getId(),accessor_value.getValue(item.getId())); -// accessor_value.getHistoryUnifiedData(item.getId()); - //设置值 - accessor_value.setValue(item.getId(), value); + String itemId = item.getId(); + Object his = accessor_value.getValue(itemId); + if (!ObjectUtl.isEquals(itemState.getQuality(), QualityTypeValue.OPC_QUALITY_GOOD) && his != null) { + log.warn("opc 值不健康 item: {}, 状态: {}", itemId, itemState.getQuality()); + } + + if (!UnifiedDataAppService.isEquals(value, his)) { + OpcItemDto itemDto = this.getItem(itemId); + if (true) { + this.logItemChanged(itemId, accessor_value, value, itemDto); + } + + accessor_value.setValue(itemId, value); + } } + + end = System.currentTimeMillis(); + if (log.isTraceEnabled()) { + log.trace("{}", itemsString); + log.trace("{} 计算完成耗时{}", tag, end - begin); + } + + ThreadUtl.sleep((long) OpcConfig.synchronized_millisecond); + if (this.error_num != 0) { + this.error_num = 0; + this.message = null; + } + + if (!valueAllNotNull) { + int random = (new Random()).nextInt(10) + 1; + random *= 1000; + if (this.all_null < 3) { + if (log.isWarnEnabled()) { + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,5000 + random); + } + + ThreadUtl.sleep((long) (5000 + random)); + } else if (this.all_null < 6) { + if (log.isWarnEnabled()) { + log.warn(tag + "重新创建server"); + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}s", tag, all_null,30000 + random); + } +// ThreadUtl.sleep((long) (30000 + random)); + ThreadUtl.sleep((long) ((new Random()).nextInt(3) +1) * 1000); + break start; + } else if (this.all_null < 12) { + if (log.isWarnEnabled()) { + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, '\uea60' + random); + } + + ThreadUtl.sleep((long) ('\uea60' + random)); + } else { + if (log.isWarnEnabled()) { + log.warn("{} 所有内容都为空, all_null:{} ,暂定{}ms", tag, all_null, 120000 + random); + } + + ThreadUtl.sleep((long) (120000 + random)); + } + + ++this.all_null; + } else { + this.all_null = 0; + } +// break start; + } - } catch (Exception var30) { + + log.warn("opc线程停止。。。"); + return; + } catch (Exception var27) { if (this.server != null) { try { this.server.disconnect(); } catch (Exception var25) { - log.warn("{} : server disconnect", var25); } } this.server = null; + if (!DeviceOpcSynchronizeAutoRun.isRun) { + log.warn("opc线程停止2。。。"); + return; + } - String error_message = "设备信息同步异常,"+var30; + String error_message = "设备信息同步异常"; if (!StrUtil.equals(this.message, error_message)) { - log.warn("", var30); + log.warn(error_message, var27); } - try { - Thread.sleep((long) (OpcConfig.synchronized_exception_wait_second * 1000)); - } catch (InterruptedException e) { - e.printStackTrace(); - //log.warn("OPC 读取线程读取异常{} :", e); -// Thread.currentThread().interrupt();不会真正停止线程 - } + ThreadUtl.sleep((long) (OpcConfig.synchronized_exception_wait_second * 1000)); ++this.error_num; if (this.error_num > 3 && !StrUtil.equals(this.message, error_message)) { - log.info("设备同步通信异常"); this.message = error_message; } } } } + + private void runNew() { + Async20Access accessor = null; + + while (true) { + String opcGroupId = this.getOpcGroupID(); + + try { + if (this.server == null) { + this.server = OpcServerUtl.getServerWithOutException(this.OpcServer.getOpc_host(), this.OpcServer.getCls_id(), this.OpcServer.getUser(), this.OpcServer.getPassword(), this.OpcServer.getDomain()); + this.server.addStateListener(this); + accessor = new Async20Access(this.server, OpcConfig.synchronized_millisecond, true); + Iterator var9 = this.protocols.iterator(); + + while (var9.hasNext()) { + OpcItemDto protocol = (OpcItemDto) var9.next(); + String itemId = protocol.getItem_code(); + accessor.addItem(itemId, this); + } + + accessor.bind(); + log.info("Async20Access bind {}", opcGroupId); + } + + Thread.sleep((long) (OpcConfig.synchronized_exception_wait_second * 1000)); + } catch (Exception var8) { + if (accessor != null) { + try { + log.warn("Async20Access unbind {}", opcGroupId); + accessor.unbind(); + } catch (Exception var7) { + var7.printStackTrace(); + } + + accessor = null; + } + + if (this.server != null) { + try { + this.server.disconnect(); + } catch (Exception var6) { + } + + this.server = null; + } + + if (var8 instanceof InterruptedException) { + log.warn("OPC 同步线程(%s)被中断", opcGroupId); + return; + } + + log.warn("设备信息同步异常", var8); + ThreadUtl.sleep((long) (OpcConfig.synchronized_exception_wait_second * 1000)); + String error_message = var8.getMessage(); + if (error_message == null) { + error_message = var8.toString(); + } + + ++this.error_num; + if (this.error_num > 3 && !StrUtil.equals(this.message, error_message)) { + this.message = error_message; + } + } + } + } + + + public void connectionStateChanged(boolean connected) { + if (!connected) { + this.server = null; + } + + log.warn("opc server {} {}", this.getOpcGroupID(), connected ? "connected" : "disconnected"); + } + + private String getOpcGroupID() { + String var10000 = this.OpcServer.getOpc_code(); + return var10000 + "(" + this.protocols.size() + " items)"; + } + public static String formatDuring(long mss) { long days = mss / 86400000L; long hours = mss % 86400000L / 3600000L; @@ -239,4 +368,57 @@ public class DeviceOpcProtocolRunable implements Runnable { long seconds = mss % 60000L / 1000L; return days + " days " + hours + " hours " + minutes + " minutes " + seconds + " seconds "; } + + + public void changed(Item item, ItemState itemState) { + String itemId = item.getId(); + + try { + Object value = OpcUtl.getValue(item, itemState); + UnifiedDataAccessor accessor_value = UnifiedDataAccessorFactory.getAccessor(OpcConfig.udw_opc_value_key); + accessor_value.setValue(itemId, value); + +// if (value != null) { +// if (log.isTraceEnabled()) { +// log.trace("Item {} new value: {}, Timestamp: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime()}); +// } +// } else if (log.isInfoEnabled()) { +// log.info("Item {} new value: {}, Timestamp: {}, Quality: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime(), itemState.getQuality()}); +// } + log.trace("Item {} new value: {}, Timestamp: {}", new Object[]{itemId, itemState.getValue(), itemState.getTimestamp().getTime()}); + + OpcItemDto itemDto = this.getItem(itemId); +// if (Boolean.TRUE.equals(itemDto.getNeed_log())) { +// this.logItemChanged(itemId, accessor_value, value, itemDto); +// } + this.logItemChanged(itemId, accessor_value, value, itemDto); + + } catch (Exception var7) { + log.error(itemId, var7); + } + + } + + private void logItemChanged(String itemId, UnifiedDataAccessor accessor_value, Object value, OpcItemDto itemDto) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + Object his = accessor_value.getValue(itemId); + List relate_items = itemDto.getRelate_items(); + if (relate_items != null && !relate_items.isEmpty()) { + StringBuilder sb = new StringBuilder(); + Iterator var8 = relate_items.iterator(); + + while (var8.hasNext()) { + String relate = (String) var8.next(); + Object obj = accessor_value.getValue(relate); + sb.append("key:" + relate + "value:" + obj + ";"); + } + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + + } else { + + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + + } + } + } From 090cd3830e739e3cdc4993e8a3aa589992f27967 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Thu, 18 May 2023 19:14:38 +0800 Subject: [PATCH 6/7] =?UTF-8?q?rev=EF=BC=9A=E4=BF=AE=E6=94=B9=E8=B0=83?= =?UTF-8?q?=E5=BA=A6=E7=AE=A1=E7=90=86=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/PdmBiDeviceController.java | 100 +++++++++++++++--- .../java/org/nl/wms/product_manage/pdm.xls | Bin 215040 -> 215040 bytes .../service/device/dao/PdmBiDevice.java | 3 + .../备份pdm/rest/DeviceController.java | 2 - .../service/user/dao/SysUser.java | 2 +- .../main/resources/config/application-dev.yml | 20 ++-- .../resources/config/application-dev3.yml | 8 +- .../resources/config/application-prod.yml | 8 +- .../src/main/resources/logback-spring.xml | 2 +- mes/qd/public/config.js | 1 - mes/qd/src/views/wms/pub/StructDialog.vue | 2 +- .../point/MaterialDialog.vue | 0 .../point/ViewDialog.vue | 0 .../point/WorkOrderDialog.vue | 0 .../sch => scheduler_manage}/point/index.vue | 10 +- .../wms/scheduler_manage/point}/point.js | 0 .../sch => scheduler_manage}/region/index.vue | 2 +- .../wms/scheduler_manage/region}/region.js | 0 .../sch => scheduler_manage}/task/index.vue | 2 +- .../wms/scheduler_manage/task}/task.js | 0 .../product/productIn/DivDialog.vue | 2 +- .../product/productOut/DivDialog.vue | 4 +- .../rawproduct/rawProductIn/DivDialog.vue | 4 +- .../rawproduct/rawProductOut/DivDialog.vue | 4 +- 24 files changed, 125 insertions(+), 51 deletions(-) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/point/MaterialDialog.vue (100%) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/point/ViewDialog.vue (100%) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/point/WorkOrderDialog.vue (100%) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/point/index.vue (98%) rename mes/qd/src/{api/wms/sch => views/wms/scheduler_manage/point}/point.js (100%) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/region/index.vue (99%) rename mes/qd/src/{api/wms/sch => views/wms/scheduler_manage/region}/region.js (100%) rename mes/qd/src/views/wms/{product_manage/sch => scheduler_manage}/task/index.vue (99%) rename mes/qd/src/{api/wms/sch => views/wms/scheduler_manage/task}/task.js (100%) diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java index decc1cc0..c9ca3d46 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java @@ -1,21 +1,97 @@ package org.nl.wms.product_manage.controller.device; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.anno.Log; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; +import org.nl.wms.product_manage.备份pdm.service.DeviceService; +import org.nl.wms.product_manage.备份pdm.service.dto.DeviceDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RestController; +import java.util.Map; /** - *

- * 生产设备基础信息表 前端控制器 - *

- * - * @author generator - * @since 2023-04-26 - */ + * @author lyd + * @date 2023-03-15 + **/ @RestController -@RequestMapping("/pdmBiDevice") +@Api(tags = "生产设备管理") +@RequestMapping("/api/device") +@Slf4j public class PdmBiDeviceController { + @Autowired + private DeviceService deviceService; + @Autowired + private IPdmBiDeviceService iDeviceService; + + @GetMapping + @Log("查询生产设备") + @ApiOperation("查询生产设备") + //@PreAuthorize("@el.check('device:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ + return new ResponseEntity<>(deviceService.queryAll(whereJson,page),HttpStatus.OK); + } + + @PostMapping + @Log("新增生产设备") + @ApiOperation("新增生产设备") + //@PreAuthorize("@el.check('device:add')") + public ResponseEntity create( @RequestBody JSONObject form){ + PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); + device.setCreate_id(SecurityUtils.getCurrentUserId()); + device.setCreate_name(SecurityUtils.getCurrentNickName()); + device.setCreate_time(DateUtil.now()); + iDeviceService.save(device); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改生产设备") + @ApiOperation("修改生产设备") + //@PreAuthorize("@el.check('device:edit')") + public ResponseEntity update(@Validated @RequestBody JSONObject form){ + PdmBiDevice device = form.toJavaObject(PdmBiDevice.class); + device.setUpdate_id(SecurityUtils.getCurrentUserId()); + device.setUpdate_name(SecurityUtils.getCurrentNickName()); + device.setUpdate_time(DateUtil.now()); + iDeviceService.updateById(device); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除生产设备") + @ApiOperation("删除生产设备") + //@PreAuthorize("@el.check('device:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + deviceService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/getWorkprocedure") + @Log("工序下拉") + @ApiOperation("工序下拉") + //@PreAuthorize("@el.check('device:list')") + public ResponseEntity getWorkprocedure(){ + return new ResponseEntity<>(deviceService.getWorkprocedure(),HttpStatus.OK); + } + + @GetMapping("/getDeviceList") + @Log("设备下拉框") + @ApiOperation("设备下拉框") + //@PreAuthorize("@el.check('device:list')") + public ResponseEntity getDeviceList(){ + return new ResponseEntity<>(deviceService.getDeviceList(),HttpStatus.OK); + } } - diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index 8aeca089c50a44c1bf363fe3c81f98176f839bd6..78870a96022ac194e5564a5dc62240341d983b41 100644 GIT binary patch delta 32 mcmZpez}ql^cS9}2NuA9_EbT=sj6lq^y@-Xm&lv#DB@220 delta 32 mcmZpez}ql^cS9}<>&u596FZuVSlWwN7=f5+dl3tBpECg22MhcF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java index 690c0017..1b0a47c1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java @@ -1,6 +1,8 @@ package org.nl.wms.product_manage.service.device.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import lombok.Data; @@ -24,6 +26,7 @@ public class PdmBiDevice implements Serializable { /** * 设备编码 */ + @TableId(value = "device_code") private String device_code; /** diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/DeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/DeviceController.java index cd028e6f..7d083a4c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/DeviceController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/rest/DeviceController.java @@ -21,10 +21,8 @@ import java.util.Map; * @author lyd * @date 2023-03-15 **/ -@RestController @RequiredArgsConstructor @Api(tags = "生产设备管理") -@RequestMapping("/api/device") @Slf4j public class DeviceController { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/user/dao/SysUser.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/user/dao/SysUser.java index cb805293..9e74e6fc 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/user/dao/SysUser.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/user/dao/SysUser.java @@ -37,7 +37,7 @@ public class SysUser implements Serializable { */ private String username; - /** + /**fperson_name * 姓名 */ private String person_name; diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml index 413b4ddd..33a2a28d 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -9,25 +9,23 @@ spring: client: reactive: #endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # endpoints: 47.96.133.178:8200 #外网 - endpoints: http://47.96.133.178:8200 #外网 + # endpoints: 192.168.46.225:8200 #外网 + endpoints: http://192.168.46.225:8200 #外网 elasticsearch: rest: #uris: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # uris: 47.96.133.178:8200 #外网 - uris: http://47.96.133.178:8200 #外网 - username: elastic - password: 123456 + # uris: 192.168.46.225:8200 #外网 + uris: http://192.168.46.225:9200 #外网 +# username: elastic +# password: 123456 datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - #url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false +# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} - password: ${DB_PWD:Root.123456} -# username: ${DB_USER:root} -# password: ${DB_PWD:942464Yy} + password: ${DB_PWD:123456} # 初始连接数 initial-size: 5 diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml index b1296e0a..2182437d 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml @@ -9,13 +9,13 @@ spring: client: reactive: #endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # endpoints: 47.96.133.178:8200 #外网 - endpoints: http://47.96.133.178:8200 #外网 + # endpoints: 192.168.46.225:8200 #外网 + endpoints: http://192.168.46.225:8200 #外网 elasticsearch: rest: #uris: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # uris: 47.96.133.178:8200 #外网 - uris: http://47.96.133.178:8200 #外网 + # uris: 192.168.46.225:8200 #外网 + uris: http://192.168.46.225:8200 #外网 username: elastic password: 123456 datasource: diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml index 971add56..b5894b99 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-prod.yml @@ -9,13 +9,13 @@ spring: client: reactive: #endpoints: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # endpoints: 47.96.133.178:8200 #外网 - endpoints: http://47.96.133.178:8200 #外网 + # endpoints: 192.168.46.225:8200 #外网 + endpoints: http://192.168.46.225:8200 #外网 elasticsearch: rest: #uris: 172.31.185.110:9200,172.31.154.9:9200 #内网 - # uris: 47.96.133.178:8200 #外网 - uris: http://47.96.133.178:8200 #外网 + # uris: 192.168.46.225:8200 #外网 + uris: http://192.168.46.225:8200 #外网 username: elastic password: 123456 datasource: diff --git a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml index ae30a148..df9bf5a1 100644 --- a/mes/hd/nladmin-system/src/main/resources/logback-spring.xml +++ b/mes/hd/nladmin-system/src/main/resources/logback-spring.xml @@ -18,7 +18,7 @@ https://juejin.cn/post/6844903775631572999 +
+ + +
+ 设备协议: +
+ + + + OpcServer: + + + + + + PLC: + + + + + + +
+ + +
+ 输送系统: +
+ + + + + + + + + +
+ + +
+ 指令相关: +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ AGV相关: +
+ + + + + + + + + + + + + + +
+ + +
+ PLC读取字段: +
+ + + + + + + + + + + + + + +
+ + +
+ PLC写入字段: +
+ + + + + + + + + + + + + + + + + + +
+ + +
+ + 保存 + +
+
+ +
+ + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue new file mode 100644 index 00000000..e724b65d --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue new file mode 100644 index 00000000..7a70c0be --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_palletizing_station.vue @@ -0,0 +1,545 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue new file mode 100644 index 00000000..0e2f0b07 --- /dev/null +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_stacking_manipulator.vue @@ -0,0 +1,507 @@ + + + + + diff --git a/wcs/nladmin-ui/src/views/monitor/lucene/index.vue b/wcs/nladmin-ui/src/views/monitor/lucene/index.vue index 7ed3276a..d6bcbe55 100644 --- a/wcs/nladmin-ui/src/views/monitor/lucene/index.vue +++ b/wcs/nladmin-ui/src/views/monitor/lucene/index.vue @@ -14,8 +14,8 @@ > - - + + @@ -23,7 +23,7 @@ - + @@ -58,7 +58,7 @@ export default { page: 0 }, query: { - createTime: [new Date(new Date().setTime(new Date().getTime() - 3600 * 1000 * 24)), new Date()] + createTime: [new Date(new Date().setTime(new Date().getTime() - 3600 * 1000)), new Date(new Date().setTime(new Date().getTime() + 3600 * 1000))] } }) },