From 4a0a36c09110962b28ba504008709c690540e36e Mon Sep 17 00:00:00 2001 From: baoge <751575283@qq.com> Date: Mon, 17 Jul 2023 16:29:29 +0800 Subject: [PATCH] =?UTF-8?q?rev:=E6=A0=B9=E6=8D=AE=E5=AE=9E=E9=99=85?= =?UTF-8?q?=E6=8E=92=E4=BA=A7=E5=9C=BA=E6=99=AF=EF=BC=8C=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E9=94=80=E5=94=AE=E8=AE=A2=E5=8D=95=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/nl/common/utils/OptionRecord.java | 9 - .../java/org/nl/config/MetaDataHandler.java | 45 +++++ .../sap/service/impl/WmsToSapServiceImpl.java | 7 +- .../service/impl/MaterialbaseServiceImpl.java | 27 +-- .../controller/MpsSaleOrderController.java | 4 + .../saleorder/service/dao/MpsSaleOrder.java | 122 ++++++++++---- .../dao/mapper/xml/MpsSaleOrderMapper.xml | 29 +--- .../service/impl/MpsSaleOrderServiceImpl.java | 75 ++++----- .../workorder/dao/PdmProduceWorkorder.java | 7 + .../impl/IPdmProduceWorkorderServiceImpl.java | 44 ++--- .../impl/FactoryCalendarServiceImpl.java | 13 +- .../service/quartz/utils/ExecutionJob.java | 2 - .../src/assets/js/lodop/install_lodop32.exe | Bin 2429952 -> 2446848 bytes .../src/assets/js/lodop/install_lodop64.exe | Bin 2577920 -> 2594816 bytes mes/qd/src/views/wms/pcs/saleorder/index.vue | 157 +++++++++++------- .../wms/product_manage/workorder/index.vue | 80 +++++---- .../src/assets/js/lodop/install_lodop32.exe | Bin 2429952 -> 2446848 bytes .../src/assets/js/lodop/install_lodop64.exe | Bin 2577920 -> 2594816 bytes 18 files changed, 365 insertions(+), 256 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/config/MetaDataHandler.java 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 6f770ee5..aee0154a 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 @@ -3,25 +3,16 @@ 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 org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; -import javax.annotation.Resource; import java.util.ArrayList; -import java.util.Date; import java.util.List; -import java.util.Map; import java.util.concurrent.ThreadPoolExecutor; /* diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/MetaDataHandler.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/MetaDataHandler.java new file mode 100644 index 00000000..6e9b4983 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/MetaDataHandler.java @@ -0,0 +1,45 @@ +package org.nl.config; + +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; +import org.springframework.stereotype.Component; + +import java.util.Date; + + +/** + * 自动填充公共字段 + */ +@Component +public class MetaDataHandler implements MetaObjectHandler +{ + /** + * 插入操作自动填充 + */ + @Override + public void insertFill(MetaObject metaObject) + { + //不一定有修改或删除字段,比如交易记录不能删除也不能修改 + if(metaObject.hasSetter("is_delete")) + { + metaObject.setValue("is_delete", 0); + } + if(metaObject.hasSetter("update_time")) + { + metaObject.setValue("update_time", new Date()); + } + metaObject.setValue("create_time", new Date()); + } + + /** + * 更新操作自动填充 + */ + @Override + public void updateFill(MetaObject metaObject) + { + if(metaObject.hasSetter("update_time")) + { + metaObject.setValue("update_time", new Date()); + } + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java index 45f53bc8..7da020f3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext_manage/sap/service/impl/WmsToSapServiceImpl.java @@ -137,7 +137,7 @@ public class WmsToSapServiceImpl implements WmsToSapService { } } sale_jo.setSale_code(row.getString("Vbeln")); - sale_jo.setSeq_no(row.getString("Posnr")); + sale_jo.setSeq_no(row.getInteger("Posnr")); sale_jo.setSale_type(row.getString("Auart")); String material_code = row.getString("Matnr").replaceAll("^(0+)", ""); //获取物料对应的物料标识 @@ -173,11 +173,10 @@ public class WmsToSapServiceImpl implements WmsToSapService { } else { sale_jo.setQty_unit_id(unit_jo.getMeasure_unit_id()); } - sale_jo.setPlandeliver_date(row.getString("Edatu")); + //sale_jo.setPlandeliver_date(row.getString("Edatu")); sale_jo.setCreate_id(SecurityUtils.getCurrentUserId()); - sale_jo.setCreate_time(DateUtil.now()); + sale_jo.setCreate_time(new Date()); sale_jo.setCreate_name(SecurityUtils.getCurrentNickName()); - sale_jo.setIs_delete("0"); if (need_update) { saleOrderService.updateById(sale_jo); } else { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份master/service/impl/MaterialbaseServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份master/service/impl/MaterialbaseServiceImpl.java index a6c5e6d6..791dac56 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份master/service/impl/MaterialbaseServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/备份master/service/impl/MaterialbaseServiceImpl.java @@ -57,7 +57,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ @Qualifier("meshandlerPool") private ThreadPoolExecutor pool; - private final RedisUtils redisUtils; @Autowired private IMdMeMaterialbaseService materialbaseService; @Autowired @@ -163,11 +162,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ WQLObject wo = WQLObject.getWQLObject("md_me_materialbase"); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); wo.insert(json); - //子线程异步更新redis数据 - CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); - updateMaterToRedis.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存redis失败"); - }); } @Override @@ -179,11 +173,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ materialbase.setUpdate_id(SecurityUtils.getCurrentUserId()); materialbase.setUpdate_name(SecurityUtils.getCurrentNickName()); materialbaseService.updateById(materialbase); - //子线程异步更新redis数据 - CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); - updateMaterToRedis.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存redis失败"); - }); } @Override @@ -201,11 +190,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ param.put("update_time", DateUtil.now()); wo.update(param); } - //子线程异步更新redis数据 - CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); - updateMaterToRedis.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存redis失败"); - }); } @Override @@ -328,11 +312,6 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ } } result.put("message", "导入成功!一共导入:" + rows.size() + "条数据!"); - //子线程异步更新redis数据 - CompletableFuture updateMaterToRedis = CompletableFuture.runAsync(this::updateRedis, pool); - updateMaterToRedis.exceptionally((e) -> { - throw new BadRequestException("物料信息缓存redis失败"); - }); return new JSONObject(); } @@ -353,9 +332,5 @@ public class MaterialbaseServiceImpl implements MaterialbaseService{ return newParentArray; } - public void updateRedis() { - JSONArray materialJsonArray = WQL.getWO("PDA_QUERY").addParam("flag", "5").process().getResultJSONArray(0); - List finalMaterialList = materialJsonArray.toJavaList(MaterialDto.class); - redisUtils.set("hl:cacheLineHand:materialBase:mid", finalMaterialList); - } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java index 831a25f3..9df6685a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/controller/MpsSaleOrderController.java @@ -58,6 +58,10 @@ public class MpsSaleOrderController { } + /** + *导入订单 + */ + @Log("导入订单") @PostMapping("/excelImport") public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) { iMpsSaleOrderService.excelImport(file,request); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java index 82b087aa..72667e59 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/MpsSaleOrder.java @@ -2,13 +2,12 @@ package org.nl.wms.mps_manage.saleorder.service.dao; import java.math.BigDecimal; -import com.baomidou.mybatisplus.annotation.TableField; - -import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; +import java.util.Date; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; @@ -25,145 +24,198 @@ import lombok.EqualsAndHashCode; @TableName("mps_sale_order") public class MpsSaleOrder implements Serializable{ private static final long serialVersionUID = 1L; + + /** * 销售单标识 */ - @TableId + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "/**销售单标识*/") private String sale_id; /** * 销售单号 */ + @ApiModelProperty(value = "/**销售单号*/") private String sale_code; /** * 明细序号 */ - private String seq_no; - /** - * aps映射订单编码 - */ - private String aps_sale_code; - /** - * aps映射订单类型 - */ - private String aps_sale_type; - /** - * aps映射订单状态 - */ - private String aps_status; - /** - * 物料编码 - */ - private String material_code; + @ApiModelProperty(value = "/**明细序号*/") + private Integer seq_no; /** * 销售单类型 */ + @ApiModelProperty(value = "/**销售单类型*/") private String sale_type; /** * 物料标识 */ + @ApiModelProperty(value = "/**物料标识*/") private String material_id; /** * 状态 */ + @ApiModelProperty(value = "/**状态*/") private String status; - - - - /** * 销售数量 */ + @ApiModelProperty(value = "/**销售数量*/") private BigDecimal sale_qty; /** * 生产顺序 */ + @ApiModelProperty(value = "/**生产顺序*/") private Integer produce_seq; /** * 客户标识 */ + @ApiModelProperty(value = "/**客户标识*/") private String cust_id; /** * 客户编码 */ + @ApiModelProperty(value = "/**客户编码*/") private String cust_code; /** * 客户名称 */ + @ApiModelProperty(value = "/**客户名称*/") private String cust_name; /** * 计量单位标识 */ + @ApiModelProperty(value = "/**计量单位标识*/") private String qty_unit_id; - - /** - * 计量单位 + * 数量计量单位名称 */ - @TableField(exist = false) + @ApiModelProperty(value = "/**数量计量单位名称*/") private String qty_unit_name; - /** * 计划交期 */ - private String plandeliver_date; + @ApiModelProperty(value = "/**计划交期*/") + private Date plandeliver_date; /** * 创建人 */ + @ApiModelProperty(value = "/**创建人*/") private String create_id; /** * 创建人姓名 */ + @ApiModelProperty(value = "/**创建人姓名*/") private String create_name; /** * 创建时间 */ - private String create_time; + @ApiModelProperty(value = "/**创建时间*/") + @TableField(fill = FieldFill.INSERT) + private Date create_time; /** * 提交人 */ + @ApiModelProperty(value = "/**提交人*/") private String audit_id; /** * 提交时间 */ + @ApiModelProperty(value = "/**提交时间*/") private String audit_time; /** * 提交人姓名 */ + @ApiModelProperty(value = "/**提交人姓名*/") private String audit_name; /** * 确认人 */ - private Long confirm_id; + @ApiModelProperty(value = "/**确认人*/") + private String confirm_id; /** * 确认人姓名 */ + @ApiModelProperty(value = "/**确认人姓名*/") private String confirm_name; /** * 确认时间 */ + @ApiModelProperty(value = "/**确认时间*/") private String confirm_time; + /** + * 生成方式 + */ + @ApiModelProperty(value = "/**生成方式*/") + private String create_mode; /** * 是否删除 */ - private String is_delete; + @ApiModelProperty(value = "/**是否删除*/") + @TableField(fill = FieldFill.INSERT) + private Integer is_delete; /** * 备注 */ + @ApiModelProperty(value = "/**备注*/") private String remark; /** * 车间标识 */ + @ApiModelProperty(value = "/**车间标识*/") private String product_area; /** * 生产数量 */ + @ApiModelProperty(value = "/**生产数量*/") private BigDecimal product_qty; /** * 预入库数量 */ + @ApiModelProperty(value = "/**预入库数量*/") private BigDecimal instor_qty; /** * 发货数量 */ + @ApiModelProperty(value = "/**发货数量*/") private BigDecimal sendout_qty; + /** + * 物料编码 + */ + @ApiModelProperty(value = "/**物料编码*/") + private String material_code; + /** + * 物料规格 + */ + @ApiModelProperty(value = "/**物料规格*/") + private String material_spec; + /** + * 订单合同号 + */ + @ApiModelProperty(value = "/**订单合同号*/") + private String contract_code; + /** + * aps最早开始时间(下料时间) + */ + @ApiModelProperty(value = "/**aps最早开始时间(下料时间)*/") + private String early_start_time; + /** + * aps订单状态 + */ + @ApiModelProperty(value = "/**aps订单状态 */") + private String aps_status; + /** + * aps变更标识 + */ + @ApiModelProperty(value = "/**aps变更标识*/") + private String aps_update_flag; + /** + * aps变更时间 + */ + @ApiModelProperty(value = "/**aps变更时间*/") + private Date aps_update_time; + + + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml index 537f982c..690ee974 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -5,16 +5,13 @@ SELECT - der.aps_sale_code , - SUBSTRING_INDEX(der.aps_sale_code, '-', 1) AS sale_code, - SUBSTRING_INDEX(der.aps_sale_code, '-', -1) AS seq_no, - der.aps_sale_type,der.aps_status,der.sale_type, der.material_id, der.material_code, der.product_area, - der.product_qty, der.sendout_qty, der.instor_qty,der.status, der.sale_qty, der.produce_seq, - der.cust_id, der.cust_code, der.cust_name, der.qty_unit_id, der.plandeliver_date, der.create_id, - der.create_name, der.create_time, der.audit_id, der.audit_time, der.audit_name, der.confirm_id, - der.confirm_name, der.confirm_time, der.is_delete, der.remark, - mater.material_name, - mater.material_spec, - unit.unit_name AS qty_unit_name + der.*, + DATE_FORMAT(der.plandeliver_date, '%Y-%m-%d' ) AS plandeliverDate, + DATE_FORMAT(der.create_time, '%Y-%m-%d %H:%i:%s' ) AS createTime, + DATE_FORMAT(der.aps_update_time, '%Y-%m-%d %H:%i:%s' ) AS apsUpdateTime, + mater.material_name FROM mps_sale_order der LEFT JOIN md_me_materialbase mater ON der.material_code = mater.material_code - LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id - der.is_delete = '0' diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java index a488eb49..9376a8d4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/saleorder/service/impl/MpsSaleOrderServiceImpl.java @@ -112,8 +112,7 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl().eq("cust_code", mpsSaleOrder.getCust_code())); mpsSaleOrder.setCust_id(cust.getCust_id()); mpsSaleOrder.setCust_name(cust.getCust_name()); @@ -147,24 +146,20 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl saleCode = baseMapper.queryAll(orderQuery); - if(saleCode.stream() - .anyMatch(m -> col.equals(m.get("sale_code")))) { + if(saleCode.stream().anyMatch(m -> col.equals(m.get("sale_code")))) { continue; } 解析cell: @@ -177,67 +172,67 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl meMaterialBases = materialbaseService.list(new QueryWrapper().eq("material_code", col)); + mpsSaleOrder.setMaterial_spec(col); + List meMaterialBases = materialbaseService.list(new QueryWrapper().like("material_spec", col)); if(CollectionUtils.isEmpty(meMaterialBases)) { - errorMap.put("第" + i + "行" + col, "物料编码对应物料信息不存在"); - error_message = error_message + col + "物料编码对应物料信息不存在,"; + errorMap.put("第" + i + "行" + col, "物料规格对应物料信息不存在"); + error_message = error_message + col + "物料规格对应物料信息不存在,"; } else{ - Optional first = meMaterialBases - .stream() - .findFirst(); - first.ifPresent(mdMeMaterialbase -> { + Optional first = meMaterialBases.stream().findFirst(); + first.ifPresent(mdMeMaterialbase -> + { //物料id mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id()); + //物料编码 + mpsSaleOrder.setMaterial_code(mdMeMaterialbase.getMaterial_code()); //计量单位 mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id()); }); } } - if(j == 4) { - if(StringUtils.isNotBlank(col)) { - mpsSaleOrder.setCust_id(col); + if(j == 3) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("工段信息不能为空"); } + //智能一线,智能三线 + mpsSaleOrder.setProduct_area(col.contains("三") || col.contains("3") ? "A3" : "A1"); + } + if(j == 4) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("销售数量不能为空"); + } + mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col))); } if(j == 5) { + //计量单位 if(StringUtils.isNotBlank(col)) { - mpsSaleOrder.setCust_code(col); + mpsSaleOrder.setQty_unit_name(col); } } if(j == 6) { + //最早开始时间(下料时间) if(StringUtils.isNotBlank(col)) { - mpsSaleOrder.setCust_name(col); + mpsSaleOrder.setEarly_start_time(DateUtil.format(DateUtil.parse(col), "yyyy-MM-dd")); } } if(j == 7) { - if(StringUtils.isBlank(col)) { - throw new BadRequestException("计量单位不能为空"); - } - mpsSaleOrder.setQty_unit_id(col); - } - if(j == 8) { if(StringUtils.isBlank(col)) { throw new BadRequestException("订单交期不能为空"); } - mpsSaleOrder.setPlandeliver_date(DateUtil.format(DateUtil.parse(col), "yyyy/MM/dd")); + mpsSaleOrder.setPlandeliver_date(DateUtil.parse(col)); } - if(j == 9) { + if(j == 8) { + //备注 if(StringUtils.isNotBlank(col)) { mpsSaleOrder.setRemark(col); } 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 1da1b136..1934ed23 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 @@ -40,6 +40,13 @@ public class PdmProduceWorkorder implements Serializable { */ private String workorder_code; + /** + * 工单编号 + */ + private String material_code; + + + /** * 班次类型 */ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 1b92e5d7..cd377107 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -161,35 +161,39 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl ids) { - if (ids == null || ids.size() == 0) { + if(ids == null || ids.size() == 0) { return; } - List workorders = this.list(new QueryWrapper().in("workorder_id", ids).lt("workorder_status",WorkerOrderEnum.AUTO_COMPLETE.getCode())); - if (workorders.size()!= ids.size()){ + List workorders = this.list(new QueryWrapper().in("workorder_id", ids).lt("workorder_status", WorkerOrderEnum.AUTO_COMPLETE.getCode())); + if(workorders.size() != ids.size()) { throw new BadRequestException("完成的工单不允许再次下发"); } - List list = this.list(new QueryWrapper() - .nested(i -> i - .isNull("workorder_code").or() - .eq("workorder_code", "").or() - .eq("workorder_code", "0")) - .in("workorder_id", ids)); + List list = this.list(new QueryWrapper().nested(i -> i.isNull("workorder_code").or().eq("workorder_code", "").or().eq("workorder_code", "").or().eq("material_id", "0")).in("workorder_id", ids)); //aps排产完成的工单,生成工单编号再下发 if(list.size() > 0) { - list.forEach(r -> { - this.update(new UpdateWrapper() - .eq("workorder_id", r.getWorkorder_id()) - .set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER"))); + list.forEach(r -> + { + UpdateWrapper updateWrapper = new UpdateWrapper(); + if("0".equals(r.getMaterial_id())) { + List meMaterialBases = materialbaseService.list(new QueryWrapper().eq("material_code", r.getMaterial_code())); + if(!CollectionUtils.isEmpty(meMaterialBases)) { + Optional first = meMaterialBases.stream().findFirst(); + first.ifPresent(mdMeMaterialbase -> + { + //物料id + updateWrapper.set("material_id", mdMeMaterialbase.getMaterial_id()); + //计量单位 + updateWrapper.set("materialprocess_series", mdMeMaterialbase.getProduct_series()); + }); + } + } + updateWrapper.eq("workorder_id", r.getWorkorder_id()); + updateWrapper.set("workorder_code", CodeUtil.getNewCode("PDM_SHIFTORDER")); + this.update(updateWrapper); }); } - 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.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 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java index 4a8fb901..7f0ae7ee 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/impl/FactoryCalendarServiceImpl.java @@ -75,7 +75,7 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService{ whereJson.put("create_time", DateUtil.now()); WQLObject.getWQLObject("PDM_BI_FactoryCalendar").insert(whereJson); //插入明细表 - this.insertDtlTransactionally(whereJson); + this.insertDtl(whereJson); } @Override @@ -92,15 +92,16 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService{ String new_start = (old_year + 1) + "-01-01"; whereJson.put("factorycale_startdate", new_start); //插入明细表 - this.insertDtlTransactionally(whereJson); + this.insertDtl(whereJson); } - @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) - public void insertDtlTransactionally(JSONObject row) { - insertDtl(row); - } +// @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) +// public void insertDtlTransactionally(JSONObject row) { +// insertDtl(row); +// } @Async("taskExecutor") + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) public void insertDtl(JSONObject row) { try { String a = DateUtil.format(DateUtil.parse(row.getString("factorycale_startdate")), "yyyy/MM/dd"); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java index 77d3efe6..98bc8dad 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/system_manage/service/quartz/utils/ExecutionJob.java @@ -3,7 +3,6 @@ package org.nl.wms.system_manage.service.quartz.utils; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; -import org.nl.config.thread.ThreadPoolExecutorUtil; import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.common.utils.ThrowableUtil; import org.nl.modules.wql.util.SpringContextHolder; @@ -17,7 +16,6 @@ import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.annotation.Async; -import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.scheduling.quartz.QuartzJobBean; import javax.annotation.Resource; diff --git a/mes/qd/src/assets/js/lodop/install_lodop32.exe b/mes/qd/src/assets/js/lodop/install_lodop32.exe index 7c52f251c01bfbc312f18b9e4d2a8791ff73430f..6f04ce861364b039a665453267cb0df7db47c7c8 100644 GIT binary patch delta 14916 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 delta 218 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 delta 227 zcmXZQNe;na9ES1l-%|5D)>xD;k+_31u(D(A5{3mk3v1#4Bo&KZqx){SiAUm1e#x6> z<6UKQzldjvYpUnuwow1Q)oGg&!&XzRltWyuRPZ>DMH|8KHJ7&dpPgRIJ~R)ZDKPN+ z5kz4jhBy*PB848wY Avj6}9 diff --git a/mes/qd/src/views/wms/pcs/saleorder/index.vue b/mes/qd/src/views/wms/pcs/saleorder/index.vue index d7ab3889..bf2333d7 100644 --- a/mes/qd/src/views/wms/pcs/saleorder/index.vue +++ b/mes/qd/src/views/wms/pcs/saleorder/index.vue @@ -82,7 +82,7 @@ > 导入 - 同步 - + --> - - - + + + + - + - + - + - - + + + - + - + - + - + @@ -305,8 +341,15 @@ const defaultForm = { } export default { name: 'SaleOrder', - dicts: ['PCS_SALE_STATUS', 'PCS_SAL_TYPE', 'IS_OR_NOT', 'product_area'], - components: { pagination, crudOperation, rrOperation, Treeselect, UploadDialog, Dialog }, + dicts: ['PCS_SALE_STATUS', 'PCS_SAL_TYPE', 'IS_OR_NOT', 'product_area', 'ST_CREATE_MODE'], + components: { + pagination, + crudOperation, + rrOperation, + Treeselect, + UploadDialog, + Dialog + }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ @@ -326,10 +369,8 @@ export default { }, data() { return { - unit_list: [ - {value: 16, label: '个\\只'} - ], - customer_list:[], + unit_list: [{ value: 16, label: '个\\只' }], + customer_list: [], classes3: [], uploadShow: false, dialogShow: false, @@ -344,7 +385,7 @@ export default { [CRUD.HOOK.beforeToAdd]() { customerbase.selectList().then(res => { this.customer_list = res.content - }) + }) }, queryClassId() { const param = { diff --git a/mes/qd/src/views/wms/product_manage/workorder/index.vue b/mes/qd/src/views/wms/product_manage/workorder/index.vue index 555636d7..d76e80b8 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/index.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/index.vue @@ -290,13 +290,13 @@ - + @@ -360,14 +360,18 @@ - + v-model="form.is_needmove" + style="width: 200px" + > + - + v-model="form.is_canupdate_update" + style="width: 200px" + > + @@ -381,14 +385,18 @@ - + v-model="form.package_ext.unboxing_device_code" + style="width: 200px" + > + - + v-model="form.package_ext.ealing_device_code" + style="width: 200px" + > + @@ -402,8 +410,10 @@ - + v-model="form.package_ext.auto_confirm" + style="width: 200px" + > + @@ -418,21 +428,21 @@ v-model="form.package_ext.package_model" style="width: 200px;" clearable - /> + /> + /> + /> + />