From 30db992adae6257e80abd0deea0ae59397de0167 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Wed, 17 May 2023 15:15:35 +0800 Subject: [PATCH] =?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 @@