diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtils.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtils.java new file mode 100644 index 00000000..f3b38612 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtils.java @@ -0,0 +1,34 @@ +package org.nl.common.domain.query; + +import org.springframework.beans.BeanUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.Supplier; + +public class ColaBeanUtils extends BeanUtils { + public static List copyListProperties(List sources, Supplier target) { + return copyListProperties(sources, target, null); + } + + /** + * @author Johnson + * 使用场景:Entity、Bo、Vo层数据的复制,因为BeanUtils.copyProperties只能给目标对象的属性赋值,却不能在List集合下循环赋值,因此添加该方法 + * 如:List 赋值到 List ,List中的 AdminVo 属性都会被赋予到值 + * S: 数据源类 ,T: 目标类::new(eg: AdminVo::new) + */ + public static List copyListProperties(List sources, Supplier target, ColaBeanUtilsCallBack callBack) { + List list = new ArrayList<>(sources.size()); + for (S source : sources) { + T t = target.get(); + copyProperties(source, t); + if (callBack != null) { + // 回调 + callBack.callBack(source, t); + } + list.add(t); + } + return list; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtilsCallBack.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtilsCallBack.java new file mode 100644 index 00000000..2dc8e5f7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/domain/query/ColaBeanUtilsCallBack.java @@ -0,0 +1,6 @@ +package org.nl.common.domain.query; + +@FunctionalInterface +public interface ColaBeanUtilsCallBack { + void callBack(S t, T s); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index a6abb5b3..2a910cac 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -72,6 +72,7 @@ public enum StatusEnum { // 1-PC创建、2-Excel导入 PCINTO("1","PC创建", "",null), EXCELINTO("2","EXCEL导入", "2",null), + APSINTO("3","APS导入", "3",null), // 1白班、2夜班 DAYSHIFT("1","白班", "1",null), NIGHTSHIFT("2","夜班", "2",null); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java index c64e314c..71aec51d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskExecutePool.java @@ -17,6 +17,7 @@ package org.nl.config.thread; import lombok.extern.slf4j.Slf4j; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.AsyncConfigurer; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; @@ -26,14 +27,16 @@ import java.util.concurrent.ThreadPoolExecutor; /** * 异步任务线程池装配类 + * * @author https://juejin.im/entry/5abb8f6951882555677e9da2 * @date 2019年10月31日15:06:18 */ @Slf4j @Configuration -public class AsyncTaskExecutePool implements AsyncConfigurer { - - /** 注入配置类 */ +public class AsyncTaskExecutePool implements AsyncConfigurer{ + /** + * 注入配置类 + */ private final AsyncTaskProperties config; public AsyncTaskExecutePool(AsyncTaskProperties config) { @@ -60,11 +63,40 @@ public class AsyncTaskExecutePool implements AsyncConfigurer { return executor; } + /** + * 线程池配置 + * @return java.util.concurrent.Executor + * @author gbx + * @since 2023-06-16 + */ + @Bean(name = "taskExecutor") + public ThreadPoolTaskExecutor threadPoolTaskExecutor() { + ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); + // 核心线程池大小 + threadPoolTaskExecutor.setCorePoolSize(config.getCorePoolSize()); + // 最大线程数 + threadPoolTaskExecutor.setMaxPoolSize(config.getMaxPoolSize()); + // 队列容量 + threadPoolTaskExecutor.setQueueCapacity(config.getQueueCapacity()); + // 活跃时间 + threadPoolTaskExecutor.setKeepAliveSeconds(config.getKeepAliveSeconds()); + // 主线程等待子线程执行时间 + threadPoolTaskExecutor.setAwaitTerminationSeconds(30); + // 线程名字前缀 + threadPoolTaskExecutor.setThreadNamePrefix("test-thread-"); + // RejectedExecutionHandler:当pool已经达到max-size的时候,如何处理新任务 + // CallerRunsPolicy:不在新线程中执行任务,而是由调用者所在的线程来执行 + threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + // 初始化 + threadPoolTaskExecutor.initialize(); + return threadPoolTaskExecutor; + } + @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return (throwable, method, objects) -> { - log.error("===="+throwable.getMessage()+"====", throwable); - log.error("exception method:"+method.getName()); + log.error("====" + throwable.getMessage() + "====", throwable); + log.error("exception method:" + method.getName()); }; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/modules/schedule/ApsSchedule.java b/mes/hd/nladmin-system/src/main/java/org/nl/modules/schedule/ApsSchedule.java new file mode 100644 index 00000000..28e55068 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/modules/schedule/ApsSchedule.java @@ -0,0 +1,30 @@ +package org.nl.modules.schedule; + +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.annotation.Async; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.stereotype.Component; + +/** + * Aps排产相关定时任务 + * + * @author gbx + * @since 2023-06-16 + */ +@Component +@Slf4j +@EnableScheduling +public class ApsSchedule{ + @Autowired + private IMpsSaleOrderService iMpsSaleOrderService; + + @Async("taskExecutor") + //@Scheduled(cron = "0/30 * * * * *") + public void setApsStatus() { + long start = System.currentTimeMillis(); + long end = System.currentTimeMillis(); + //log.info("定时同步Aps排产信息完毕,耗时{}!", end - start); + } +} 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 eb19ac12..3749415b 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 @@ -126,8 +126,8 @@ public class MdPbClassstandardServiceImpl extends ServiceImpl> list = this.listMaps(query); return getMaps(list); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java index da14b307..586dc3eb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/controller/saleOrder/MpsSaleOrderController.java @@ -1,6 +1,7 @@ package org.nl.wms.mps_manage.ordermanage.controller.saleOrder; +import cn.dev33.satoken.annotation.SaIgnore; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -12,9 +13,10 @@ import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; /** *

@@ -28,6 +30,7 @@ import org.springframework.web.bind.annotation.RestController; @RequiredArgsConstructor @Api(tags = "生产订单") @Slf4j +@SaIgnore @RequestMapping("/api/mpsSaleOrder") public class MpsSaleOrderController { @@ -41,5 +44,16 @@ public class MpsSaleOrderController { return new ResponseEntity<>(iMpsSaleOrderService.pageQuery(query,page), HttpStatus.OK); } + + + @PostMapping("/excelImport") + @Log("excel导入") + @ApiOperation("excel导入") + public ResponseEntity excelImport(@RequestParam("file") MultipartFile file, HttpServletRequest request) { + iMpsSaleOrderService.excelImport(file,request); + return new ResponseEntity<>(HttpStatus.OK); + } + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java index 845f23ee..2666f8cd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/IMpsSaleOrderService.java @@ -5,6 +5,9 @@ import org.nl.common.domain.query.PageQuery; import com.baomidou.mybatisplus.extension.service.IService; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -27,4 +30,13 @@ public interface IMpsSaleOrderService extends IService { Object pageQuery(OrderQuery query, PageQuery page); List getPdaMaterial(JSONObject json); + + + /** + * 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_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java index 8db56de7..2ffc8727 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/MpsSaleOrder.java @@ -2,9 +2,14 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao; import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableField; + import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; + import java.io.Serializable; + +import jdk.nashorn.internal.ir.annotations.Ignore; import lombok.Data; import lombok.EqualsAndHashCode; @@ -19,150 +24,146 @@ import lombok.EqualsAndHashCode; @Data @EqualsAndHashCode(callSuper = false) @TableName("mps_sale_order") -public class MpsSaleOrder implements Serializable { - +public class MpsSaleOrder implements Serializable{ private static final long serialVersionUID = 1L; - /** * 销售单标识 */ - @TableId - private String sale_id; - + private Long sale_id; /** * 销售单号 */ private String sale_code; - /** * 明细序号 */ private BigDecimal seq_no; - + /** + * aps映射订单编码 + */ + private String aps_sale_code; + /** + * aps映射订单类型 + */ + private String aps_sale_type; + /** + * aps映射订单状态 + */ + private String aps_status; + /** + * 物料编码 + */ + private String material_code; /** * 销售单类型 */ private String sale_type; - /** * 物料标识 */ private String material_id; - /** * 状态 */ private String status; + + + /** * 销售数量 */ private BigDecimal sale_qty; - /** * 生产顺序 */ private BigDecimal produce_seq; - /** * 客户标识 */ - private String cust_id; - + private Long cust_id; /** * 客户编码 */ private String cust_code; - /** * 客户名称 */ private String cust_name; - /** * 计量单位标识 */ private String qty_unit_id; + + /** + * 计量单位 + */ + @TableField(exist = false) + private String qty_unit_name; + /** * 计划交期 */ private String plandeliver_date; - /** * 创建人 */ private String create_id; - /** * 创建人姓名 */ private String create_name; - /** * 创建时间 */ private String create_time; - /** * 提交人 */ - private String audit_optid; - + private String audit_id; /** * 提交时间 */ private String audit_time; - /** * 提交人姓名 */ - private String audit_optname; - + private String audit_name; /** * 确认人 */ - private String confirm_optid; - + private Long confirm_id; /** * 确认人姓名 */ - private String confirm_optname; - + private String confirm_name; /** * 确认时间 */ private String confirm_time; - /** * 是否删除 */ private String is_delete; - /** * 备注 */ private String remark; - /** * 车间标识 */ - private String workshop_id; - + private String product_area; /** * 生产数量 */ private BigDecimal product_qty; - /** * 预入库数量 */ private BigDecimal instor_qty; - /** * 发货数量 */ private BigDecimal sendout_qty; - - } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java index 86afc6c2..4788b71d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/MpsSaleOrderMapper.java @@ -2,6 +2,7 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.MapKey; import org.apache.ibatis.annotations.Param; import org.nl.common.domain.query.PageQuery; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; @@ -20,8 +21,13 @@ import java.util.Map; */ public interface MpsSaleOrderMapper extends BaseMapper { + @MapKey("sale_id") List pageQuery(@Param("query") OrderQuery query, @Param("pageQuery") PageQuery pageQuery); + @MapKey("sale_id") List getPdaMaterial(JSONObject json); + @MapKey("sale_id") + List queryAll(@Param("query") OrderQuery query); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml index 451e701d..cf695a6c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/dao/mapper/xml/MpsSaleOrderMapper.xml @@ -4,16 +4,57 @@ + + SELECT - der.*, - mater.material_code, - mater.material_name, - mater.material_spec, - mater.net_weight AS unit_weight, - unit.unit_name AS qty_unit_name + der.*, + mater.material_code, + mater.material_name, + mater.material_spec, + mater.net_weight AS unit_weight, + unit.unit_name AS qty_unit_name FROM - mps_sale_order der - LEFT JOIN md_me_materialbase mater ON der.material_id = mater.material_id - LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id + mps_sale_order der + LEFT JOIN md_me_materialbase mater ON der.material_id = mater.material_id + LEFT JOIN md_pb_measureunit unit ON der.qty_unit_id = unit.measure_unit_id der.is_delete = '0' AND der.status = '10' - and der.create_time >= #{begin_time} + and der.create_time <= #{begin_time} - and der.create_time <= #{end_time} + and der.create_time >= #{end_time} and der.sale_code LIKE '%${sale_code}%' @@ -70,4 +111,9 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java index 2307e63f..8d5495f0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps_manage/ordermanage/service/saleOrder/impl/MpsSaleOrderServiceImpl.java @@ -1,19 +1,35 @@ package org.nl.wms.mps_manage.ordermanage.service.saleOrder.impl; - +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.poi.excel.ExcelReader; +import cn.hutool.poi.excel.ExcelUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; +import org.apache.commons.lang3.StringUtils; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.IMpsSaleOrderService; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.MpsSaleOrder; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dao.mapper.MpsSaleOrderMapper; import org.nl.wms.mps_manage.ordermanage.service.saleOrder.dto.OrderQuery; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; +import org.springframework.web.multipart.MultipartFile; +import javax.servlet.http.HttpServletRequest; +import java.io.InputStream; +import java.math.BigDecimal; +import java.util.*; -import java.util.List; -import java.util.Map; /** *

@@ -24,7 +40,9 @@ import java.util.Map; * @since 2023-05-25 */ @Service -public class MpsSaleOrderServiceImpl extends ServiceImpl implements IMpsSaleOrderService { +public class MpsSaleOrderServiceImpl extends ServiceImpl implements IMpsSaleOrderService{ + @Autowired + private IMdMeMaterialbaseService materialbaseService; @Override public Object pageQuery(OrderQuery query, PageQuery pageQuery) { @@ -39,4 +57,148 @@ public class MpsSaleOrderServiceImpl extends ServiceImpl getPdaMaterial(JSONObject json) { return this.baseMapper.getPdaMaterial(json); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void excelImport(MultipartFile file, HttpServletRequest request) { + InputStream inputStream = null; + if(file.isEmpty()) { + throw new BadRequestException("文件为空,请添加数据后重新导入"); + } + try { + inputStream = file.getInputStream(); + ExcelReader excelReader = ExcelUtil.getReader(inputStream, 0); + List> read = excelReader.read(); + // 循环获取的数据 + List data = new ArrayList<>(); + Map errorMap = new HashMap(); + row: + for(int i = 1; i < read.size(); i++) { + List list = read.get(i); + if(ObjectUtil.isEmpty(list)) { + continue; + } + String error_message = ""; + MpsSaleOrder mpsSaleOrder = new MpsSaleOrder(); + mpsSaleOrder.setSale_id(org.nl.common.utils.IdUtil.getLongId()); + mpsSaleOrder.setSale_type("01"); + mpsSaleOrder.setProduct_area("A1"); + mpsSaleOrder.setStatus("10"); + + mpsSaleOrder.setCreate_time(DateUtil.now()); + mpsSaleOrder.setConfirm_time(DateUtil.now()); + mpsSaleOrder.setCreate_id(SecurityUtils.getCurrentUserId()); + mpsSaleOrder.setCreate_name(SecurityUtils.getCurrentUsername()); + mpsSaleOrder.setAps_sale_type("M"); + mpsSaleOrder.setAps_status("X"); + for(int j = 0; j < list.size(); j++) { + String col = null == list.get(j) ? "" : String.valueOf(list.get(j)); + //存在订单编号,忽略不导入 + OrderQuery orderQuery = new OrderQuery(); + List saleCode = baseMapper.queryAll(orderQuery); + if(saleCode.stream() + .anyMatch(m -> col.equals(m.get("sale_code")))) { + continue; + } + 解析cell: + { + if(j == 0) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("销售单号不能为空"); + } + mpsSaleOrder.setSale_code(col); + } + if(j == 1) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("明细序号不能为空"); + } + mpsSaleOrder.setSeq_no(BigDecimal.valueOf(Double.parseDouble(col))); + mpsSaleOrder.setAps_sale_code(mpsSaleOrder.getSale_code() + "-" + col); + } + if(j == 2) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("销售数量不能为空"); + } + mpsSaleOrder.setSale_qty(BigDecimal.valueOf(Double.parseDouble(col))); + } + if(j == 3) { + if(StringUtils.isBlank(col)) { + throw new BadRequestException("物料编码不能为空"); + } + mpsSaleOrder.setMaterial_code(col); + List meMaterialBases = materialbaseService.list(new QueryWrapper().eq("material_code", col)); + if(CollectionUtils.isEmpty(meMaterialBases)) { + errorMap.put("第" + i + "行" + col, "物料编码对应物料信息不存在"); + error_message = error_message + col + "物料编码对应物料信息不存在,"; + } + else{ + Optional first = meMaterialBases + .stream() + .findFirst(); + first.ifPresent(mdMeMaterialbase -> { + //物料id + mpsSaleOrder.setMaterial_id(mdMeMaterialbase.getMaterial_id()); + //计量单位 + mpsSaleOrder.setQty_unit_id(mdMeMaterialbase.getBase_unit_id()); + }); + } + } + if(j == 4) { + if(StringUtils.isNotBlank(col)) { + mpsSaleOrder.setCust_id(Long.parseLong(col)); + } + } + if(j == 5) { + if(StringUtils.isNotBlank(col)) { + mpsSaleOrder.setCust_code(col); + } + } + if(j == 6) { + if(StringUtils.isNotBlank(col)) { + mpsSaleOrder.setCust_name(col); + } + } + 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")); + } + if(j == 9) { + if(StringUtils.isNotBlank(col)) { + mpsSaleOrder.setRemark(col); + } + } + } + } + if(CollectionUtils.isEmpty(errorMap)) { + if(null != mpsSaleOrder.getSale_code()) { + data.add(mpsSaleOrder); + } + } + else{ + throw new BadRequestException(JSON.toJSONString(errorMap)); + } + } + this.saveBatch(data); + } + catch(Exception e) { + e.printStackTrace(); + throw new BadRequestException(e.getMessage()); + } + finally { + if(inputStream != null) { + try { + inputStream.close(); + } + catch(Exception ignored) {} + } + } + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/procure_manage/备份pcs/wql/PCS_SALEORDER001.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/procure_manage/备份pcs/wql/PCS_SALEORDER001.wql index 87949622..661b0df4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/procure_manage/备份pcs/wql/PCS_SALEORDER001.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/procure_manage/备份pcs/wql/PCS_SALEORDER001.wql @@ -49,7 +49,6 @@ SELECT saleorder.*, uuid() as order_line_code, - material.material_code, material.material_name, material.material_spec, unit.unit_name 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 f08a8bc1..fef15ac9 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 @@ -89,7 +89,7 @@ public class PdmProduceWorkorderController { @Log("工单取消下发") @ApiOperation("工单取消下发") public ResponseEntity unSubmits(@RequestBody List param) { - iPdmProduceWorkorderService.down(param); + iPdmProduceWorkorderService.unDown(param); return new ResponseEntity<>(HttpStatus.OK); } @@ -99,8 +99,8 @@ public class PdmProduceWorkorderController { public ResponseEntity delete(@RequestBody String[] ids) { if (ids != null && ids.length > 0) { iPdmProduceWorkorderService.update(new UpdateWrapper() - .set("is_delete", true) - .in("workorder_id", Arrays.asList(ids))); + .set("is_delete", true) + .in("workorder_id", Arrays.asList(ids))); } return new ResponseEntity<>(HttpStatus.OK); } @@ -172,8 +172,8 @@ public class PdmProduceWorkorderController { Page page = null; if (pageQuery.getPage() != null && pageQuery.getSize() !=null){ page = PageHelper - .startPage(pageQuery.getPage() + 1, pageQuery.getSize()) - .setOrderBy("workorder_code desc,seq_number asc"); + .startPage(pageQuery.getPage() + 1, pageQuery.getSize()) + .setOrderBy("workorder_code desc,seq_number asc"); param.setOrderby("true"); } List list = iPdmProduceWorkorderService.reportQuery(param); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java index 1d9a26c6..fdb38994 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java @@ -70,9 +70,9 @@ public class PdmBiDevice implements Serializable { private String workorder_code; /** - * 设备编码2 + * aps设备编码 */ - private String device_code2; + private String aps_device_code; /** * 设备上料料斗上限数 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 e3363294..1da1b136 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 @@ -2,11 +2,13 @@ package org.nl.wms.product_manage.service.workorder.dao; import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import lombok.Data; -import lombok.EqualsAndHashCode; + +import lombok.*; +import lombok.experimental.SuperBuilder; /** *

@@ -18,212 +20,216 @@ import lombok.EqualsAndHashCode; */ @Data @EqualsAndHashCode(callSuper = false) +@AllArgsConstructor +@NoArgsConstructor @TableName("pdm_produce_workorder") +@SuperBuilder + public class PdmProduceWorkorder implements Serializable { - private static final long serialVersionUID = 1L; + private static final long serialVersionUID = 1L; - /** - * 工单编号 - */ - @TableId(value = "workorder_id") - private String workorder_id; + /** + * 工单编号 + */ + @TableId(value = "workorder_id") + private String workorder_id; - /** - * 工单编号 - */ - private String workorder_code; + /** + * 工单编号 + */ + private String workorder_code; - /** - * 班次类型 - */ - private String shift_type_scode; + /** + * 班次类型 + */ + private String shift_type_scode; - /** - * 工序编码 - */ - private String workprocedure_id; + /** + * 工序编码 + */ + private String workprocedure_id; - /** - * 生产区域 - */ - private String product_area; + /** + * 生产区域 + */ + private String product_area; - /** - * 计划数量 - */ - private BigDecimal plan_qty; + /** + * 计划数量 + */ + private BigDecimal plan_qty; - /** - * 实际数量 - */ - private BigDecimal real_qty; + /** + * 实际数量 + */ + private BigDecimal real_qty; - /** - * 人员实际数量 - */ - private BigDecimal person_real_qty; + /** + * 人员实际数量 + */ + private BigDecimal person_real_qty; - /** - * 电气实际数量 - */ - private BigDecimal dq_real_qty; + /** + * 电气实际数量 + */ + private BigDecimal dq_real_qty; - /** - * 物料标识 - */ - private String material_id; + /** + * 物料标识 + */ + private String material_id; - /** - * 物料单重 - */ - private BigDecimal material_weight; + /** + * 物料单重 + */ + private BigDecimal material_weight; - /** - * 计划生产开始时间 - */ - private String planproducestart_date; + /** + * 计划生产开始时间 + */ + private String planproducestart_date; - /** - * 计划生产结束时间 - */ - private String planproduceend_date; + /** + * 计划生产结束时间 + */ + private String planproduceend_date; - /** - * 实际生产开始时间 - */ - private String realproducestart_date; + /** + * 实际生产开始时间 + */ + private String realproducestart_date; - /** - * 实际生产结束时间 - */ - private String realproduceend_date; + /** + * 实际生产结束时间 + */ + private String realproduceend_date; - /** - * 当前生产设备编码 - */ - private String device_code; + /** + * 当前生产设备编码 + */ + private String device_code; - /** - * 当前生产人员id - */ - private String current_produce_person_id; + /** + * 当前生产人员id + */ + private String current_produce_person_id; - /** - * 操作工是否允许修改报工数量 - */ - private Boolean is_canupdate_update; + /** + * 操作工是否允许修改报工数量 + */ + private Boolean is_canupdate_update; - /** - * 物料系列 - */ - private String materialprocess_series; + /** + * 物料系列 + */ + private String materialprocess_series; - /** - * 工单状态 - */ - private String workorder_status; + /** + * 工单状态 + */ + private String workorder_status; - /** - * 是否搬运 - */ - private Boolean is_needmove; + /** + * 是否搬运 + */ + private Boolean is_needmove; - /** - * 销售单标识 - */ - private String sale_id; + /** + * 销售单标识 + */ + private String sale_id; - /** - * 创建类型 - */ - private String create_type; + /** + * 创建类型 + */ + private String create_type; - /** - * 工单是否异常 - */ - private Boolean is_error; + /** + * 工单是否异常 + */ + private Boolean is_error; - /** - * 异常信息 - */ - private String error_info; + /** + * 异常信息 + */ + private String error_info; - /** - * 备注 - */ - private String remark; + /** + * 备注 + */ + private String remark; - /** - * 创建人 - */ - private String create_id; + /** + * 创建人 + */ + private String create_id; - /** - * 创建人 - */ - private String create_name; + /** + * 创建人 + */ + private String create_name; - /** - * 创建时间 - */ - private String create_time; + /** + * 创建时间 + */ + private String create_time; - /** - * 是否删除 - */ - private Boolean is_delete; + /** + * 是否删除 + */ + private Boolean is_delete; - /** - * 报工数量 - */ - private BigDecimal report_qty; + /** + * 报工数量 + */ + private BigDecimal report_qty; - // 工单类型 10手工工单。20排产工单 - private String order_type_scode; + // 工单类型 10手工工单。20排产工单 + private String order_type_scode; - //报废总;报修总 - private BigDecimal nok_qty; - private BigDecimal repare_qty; + //报废总;报修总 + private BigDecimal nok_qty; + private BigDecimal repare_qty; - /** - * 下发人 - */ - private String down_id; + /** + * 下发人 + */ + private String down_id; - /** - * 下发人 - */ - private String down_name; + /** + * 下发人 + */ + private String down_name; - /** - * 下发时间 - */ - private String down_time; + /** + * 下发时间 + */ + private String down_time; - /** - * 完工人 - */ - private String confirm_id; + /** + * 完工人 + */ + private String confirm_id; - /** - * 完工人 - */ - private String confirm_name; + /** + * 完工人 + */ + private String confirm_name; - /** - * 完工时间 - */ - private String confirm_time; + /** + * 完工时间 + */ + private String confirm_time; - /** - * 是否删除 - */ - private String package_ext; + /** + * 是否删除 + */ + private String package_ext; } 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 6e9d071f..e4017e7e 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 @@ -1,9 +1,8 @@ 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.ObjectUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import com.alibaba.fastjson.JSON; @@ -15,12 +14,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.jsonwebtoken.lang.Assert; -import lombok.SneakyThrows; + import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; + + import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; import org.nl.common.domain.query.PageQuery; @@ -35,8 +33,6 @@ import org.nl.wms.ext.acs.service.WmsToAcsService; 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.mps.service.dto.ProduceshiftorderDto; import org.nl.wms.product_manage.ReportEnum; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; @@ -53,7 +49,6 @@ import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureServic import org.nl.wms.product_manage.service.workprocedure.dao.PdmBiWorkprocedure; import org.nl.wms.system_manage.service.user.ISysUserService; import org.nl.wms.system_manage.service.user.dao.SysUser; -import org.redisson.misc.Hash; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -70,7 +65,6 @@ import java.io.InputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.*; -import java.util.function.Predicate; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -84,7 +78,7 @@ import java.util.stream.Collectors; */ @Service @Slf4j -public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { +public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService{ @Autowired private IMdPbClassstandardService classstandardService; @Autowired @@ -106,7 +100,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", form.getString("workorder_id"))); - if (one == null) { + if(one == null) { throw new BadRequestException("被删除或无权限,操作失败!"); } - PdmProduceWorkorder entity = form.toJavaObject(PdmProduceWorkorder.class); - entity.setDown_time(DateUtil.now()); - entity.setDown_id(SecurityUtils.getCurrentUserId()); - entity.setDown_name(SecurityUtils.getCurrentNickName()); - entity.setReal_qty(null); - this.updateById(entity); - - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, entity.getWorkorder_id()); + PdmProduceWorkorder newEntity = form.toJavaObject(PdmProduceWorkorder.class); + PdmProduceWorkorder pdmProduceWorkorder = PdmProduceWorkorder + .builder() + .workorder_id(newEntity.getWorkorder_id()) + .product_area(newEntity.getProduct_area()) + .workprocedure_id(newEntity.getWorkprocedure_id()) + .material_id(newEntity.getMaterial_id()) + .material_weight(newEntity.getMaterial_weight()) + .plan_qty(newEntity.getPlan_qty()) + .planproducestart_date(newEntity.getPlanproducestart_date()) + .planproduceend_date(newEntity.getPlanproduceend_date()) + .report_qty(newEntity.getReport_qty()) + .shift_type_scode(newEntity.getShift_type_scode()) + .sale_id(newEntity.getSale_id()) + .is_needmove(newEntity.getIs_needmove()) + .is_canupdate_update(newEntity.getIs_canupdate_update()) + .down_time(DateUtil.now()) + .down_id(SecurityUtils.getCurrentUserId()) + .down_name(SecurityUtils.getCurrentNickName()) + .build(); + this.updateById(pdmProduceWorkorder); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, pdmProduceWorkorder.getWorkorder_id()); } @Override @@ -168,42 +175,74 @@ 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()){ 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)); + //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"))); + }); + } 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)); + .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])); + } + 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); + } } @Override public void unDown(List ids) { - if (ids == null || ids.size() == 0) { + 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) { + .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)); - + .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])); } @@ -211,42 +250,44 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() - .set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()) - .set("confirm_id", SecurityUtils.getCurrentUserId()) - .set("confirm_name", SecurityUtils.getCurrentNickName()) - .set("confirm_time", new Date()) - .in("workorder_id", workorder_id)); + .set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()) + .set("confirm_id", SecurityUtils.getCurrentUserId()) + .set("confirm_name", SecurityUtils.getCurrentNickName()) + .set("confirm_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.COMPLETE.getCode()); array.add(map); - Map result = wmsToAcsService.orderStatusUpdate(array); - if (!HttpStatus.OK.equals(result.get("status"))) { + Map result = wmsToAcsService.orderStatusUpdate(array); + if(!HttpStatus.OK.equals(result.get("status"))) { log.error((String) result.get("message")); } 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); -// } - } + //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); + // } + // } @Override @Transactional(rollbackFor = Exception.class) @@ -382,8 +423,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") - && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1)) - ).findFirst(); + && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1)) + ).findFirst(); if (first.isPresent()){ workorder.setMaterial_id(first.get().getMaterial_id()); }else { @@ -504,8 +545,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl first = mdMeMaterialbases.stream().filter(mdMeMaterialbase -> mdMeMaterialbase.getMaterial_code().contains("S") - && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1)) - ).findFirst(); + && Pattern.matches("^[0-9]*$", mdMeMaterialbase.getMaterial_name().substring(mdMeMaterialbase.getMaterial_name().length() - 1)) + ).findFirst(); if (first.isPresent()){ workorder.setMaterial_id(first.get().getMaterial_id()); }else { @@ -521,8 +562,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl workprocedures = data.stream().map(PdmProduceWorkorder::getWorkprocedure_id).collect(Collectors.toList()); List list = deviceService.list(new QueryWrapper() - .in("workprocedure_id", workprocedures) - ); + .in("workprocedure_id", workprocedures) + ); Map> listMap = list.stream().collect(Collectors.groupingBy(PdmBiDevice::getWorkprocedure_id)); for (int i = 0; i < data.size(); i++) { PdmProduceWorkorder item = data.get(i); @@ -575,9 +616,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() - .eq("device_code", param.getString("device_code")) - .in("workorder_status", "3", "4") - .ne("workorder_id", param.getString("workorder_id"))); + .eq("device_code", param.getString("device_code")) + .in("workorder_status", "3", "4") + .ne("workorder_id", param.getString("workorder_id"))); if (ObjectUtil.isNotEmpty(result)) { throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); } @@ -585,9 +626,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() -// .set("spec",order.getString("material_spec")) -// .eq("device_code",order.getString("device_code"))); + // deviceService.update(new UpdateWrapper() + // .set("spec",order.getString("material_spec")) + // .eq("device_code",order.getString("device_code"))); array.add(order); //下发acs PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); @@ -653,11 +694,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); Assert.notNull(workorder, "当前工单不存在"); -// if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { -// throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); -// } + // if (workorder.getWorkorder_status().equals(WorkerOrderEnum.AUTO_COMPLETE.getCode()) || 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", ReportEnum.REPORT_STATUS.code("生成"))); + .eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportEnum.REPORT_STATUS.code("生成"))); Assert.notNull(one, param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) { @@ -675,11 +716,11 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() - .set("report_qty", param.getBigDecimal("report_qty")) - .set("report_status", ReportEnum.REPORT_STATUS.code("报工")) - .set("operatetime_end",DateUtil.now()) - .set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())) - .eq("macoperate_id", one.getMacoperate_id())); + .set("report_qty", param.getBigDecimal("report_qty")) + .set("report_status", ReportEnum.REPORT_STATUS.code("报工")) + .set("operatetime_end",DateUtil.now()) + .set("needproduct_qty", Math.max(0, workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())) + .eq("macoperate_id", one.getMacoperate_id())); return one.getMacoperate_id(); } @@ -698,12 +739,16 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl 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()) { + 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(ReportEnum.REPORT_STATUS.code("报工审核")); @@ -800,9 +845,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl getOrderList(Map param, Pageable page) { + public List getOrderList(Map param, Pageable page) { return this.baseMapper.orderList(param); } @@ -810,9 +854,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() - .eq("macoperate_id", param.getString("macoperate_id"))); + .eq("macoperate_id", param.getString("macoperate_id"))); PdmProduceWorkorder workorder = this.getOne(new QueryWrapper() - .eq("workorder_id", record.getWorkorder_id())); + .eq("workorder_id", record.getWorkorder_id())); if (!workorder.getIs_canupdate_update()) { throw new BadRequestException("当前工单设置为不允许修改报工记录"); } @@ -825,6 +869,6 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl updateActive(@RequestBody JSONObject whereJson) { factoryCalendarService.updateActive(whereJson); @@ -90,8 +90,8 @@ public class FactoryCalendarController { } @PostMapping("/updateDtlStatus") - @Log("查询日期明细") - @ApiOperation("查询日期明细") + @Log("修改工作日/休息日") + @ApiOperation("修改工作日/休息日") //@PreAuthorize("@el.check('productprocessroute:add')") public ResponseEntity updateDtlStatus(@RequestBody JSONObject whereJson) { factoryCalendarService.updateDtlStatus(whereJson); @@ -99,8 +99,8 @@ public class FactoryCalendarController { } @PostMapping("/updateDtlActive") - @Log("查询日期明细") - @ApiOperation("查询日期明细") + @Log("查询工作日/休息日") + @ApiOperation("查询工作日/休息日") //@PreAuthorize("@el.check('productprocessroute:add')") public ResponseEntity updateDtlActive(@RequestBody JSONObject whereJson) { factoryCalendarService.updateDtlActive(whereJson); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/DeviceDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/DeviceDto.java index eb4c3c4b..ec01764a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/DeviceDto.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/service/dto/DeviceDto.java @@ -34,8 +34,10 @@ public class DeviceDto implements Serializable { /** 工单编号 */ private String workorder_code; - /** 设备编码2 */ - private String device_code2; + /** + * aps设备编码 + */ + private String aps_device_code; /** 设备来料仓上限数 */ private BigDecimal inupperlimit_qty; 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 041cf151..980be6cb 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 @@ -9,18 +9,21 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; - import lombok.RequiredArgsConstructor; +import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.modules.common.exception.BadRequestException; - import org.nl.common.utils.SecurityUtils; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.WqlUtil; import org.nl.wms.product_manage.备份pdm.service.FactoryCalendarService; import org.springframework.data.domain.Pageable; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.Map; @@ -48,6 +51,20 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService { } @Override + public JSONArray queryDtl(JSONObject whereJson) { + String year = whereJson.getString("year"); + String factorycalendar_id = whereJson.getString("factorycalendar_id"); + HashMap map = new HashMap<>(); + map.put("flag", "2"); + if (StrUtil.isNotEmpty(year)) map.put("date", year + "%"); + if (StrUtil.isNotEmpty(factorycalendar_id)) map.put("id", factorycalendar_id); + return WQL.getWO("QPDM_FACTORYCALENDAR").addParamMap(map).process().getResultJSONArray(0); + } + + + + @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void create(JSONObject whereJson) { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); @@ -66,6 +83,7 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService { } @Override + @Transactional(propagation = Propagation.REQUIRES_NEW) public void update(JSONObject whereJson) { String factorycalendar_id = whereJson.getString("factorycalendar_id"); @@ -85,16 +103,118 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService { this.insertDtl(whereJson); } + @Async + public void insertDtl(JSONObject row) { + + String a =DateUtil.format(DateUtil.parse( row.getString("factorycale_startdate")), "yyyy/MM/dd"); + String b = row.getString("endfactory_year")+ "/12/31"; + while (!a.equals(b)) { + JSONObject dtl = new JSONObject(); + dtl.put("factorycalendardtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); + dtl.put("factorycalendar_id", row.getString("factorycalendar_id")); + dtl.put("factory_date", a); + int dayOfWeek = DateUtil.dayOfWeek(DateUtil.parse(a)); + switch (dayOfWeek) { + case 1: + if (row.getString("is_sun").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 2: + if (row.getString("is_mon").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 3: + if (row.getString("is_tue").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 4: + if (row.getString("is_wed").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 5: + if (row.getString("is_thu").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 6: + if (row.getString("is_fri").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + case 7: + if (row.getString("is_sau").equals("1")) { + dtl.put("factorydate_type", "01"); + dtl.put("work_type", "00"); + dtl.put("work_type_name", "工作日"); + dtl.put("priority", "50"); + } else { + dtl.put("factorydate_type", "03"); + dtl.put("work_type", "01"); + dtl.put("work_type_name", "休息日"); + } + break; + } + WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").insert(dtl); + a = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(a), 1), "yyyy/MM/dd"); + } + } + @Override public void deleteAll(Long[] ids) { String currentUserId = SecurityUtils.getCurrentUserId(); String nickName = SecurityUtils.getCurrentNickName(); - WQLObject wo = WQLObject.getWQLObject("pdm_bi_factorycalendardtl"); - for (Long factorycalendardtl_id : ids) { + WQLObject wo = WQLObject.getWQLObject("pdm_bi_factorycalendar"); + for (Long factorycalendar_id : ids) { JSONObject param = new JSONObject(); - param.put("factorycalendardtl_id", String.valueOf(factorycalendardtl_id)); + param.put("factorycalendar_id", String.valueOf(factorycalendar_id)); param.put("is_delete", "1"); param.put("update_optid", currentUserId); param.put("update_optname", nickName); @@ -120,25 +240,25 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService { WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(map, "factorycalendar_id = '" + factorycalendar_id + "'"); } - @Override - public JSONArray queryDtl(JSONObject whereJson) { - String year = whereJson.getString("year"); - String factorycalendar_id = whereJson.getString("factorycalendar_id"); - JSONArray rows = WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").query("factory_date like '" + year + "%' AND factorycalendar_id = '" + factorycalendar_id + "'").getResultJSONArray(0); - return rows; - } + @Override public void updateDtlStatus(JSONObject whereJson) { - String holidayType = whereJson.getString("holidayType"); - String holidayDate = whereJson.getString("holidayDate"); + + + String holidayType =whereJson.getString("holidayType"); + String holidayDate =DateUtil.format(DateUtil.parse( whereJson.getString("holidayDate")), "yyyy/MM/dd"); String factorycalendar_id = whereJson.getString("factorycalendar_id"); HashMap map = new HashMap<>(); map.put("work_type", holidayType); if (holidayType.equals("00")) { map.put("factorydate_type", "01"); + map.put("priority", "50"); + map.put("work_type_name", "工作日"); } else { map.put("factorydate_type", "03"); + map.put("priority", "100"); + map.put("work_type_name", "休息日"); } WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").update(map, "factorycalendar_id = '" + factorycalendar_id + "' AND factory_date = '" + holidayDate + "'"); } @@ -156,83 +276,4 @@ public class FactoryCalendarServiceImpl implements FactoryCalendarService { WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(whereJson); } - public void insertDtl(JSONObject row) { - String a = row.getString("factorycale_startdate"); - String endfactory_year = row.getString("endfactory_year"); - String b = endfactory_year + "-12-31"; - while (!a.equals(b)) { - JSONObject dtl = new JSONObject(); - dtl.put("factorycalendardtl_id", IdUtil.getSnowflake(1, 1).nextId() + ""); - dtl.put("factorycalendar_id", row.getString("factorycalendar_id")); - dtl.put("factory_date", a); - int dayOfWeek = DateUtil.dayOfWeek(DateUtil.parse(a)); - switch (dayOfWeek) { - case 1: - if (row.getString("is_sun").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 2: - if (row.getString("is_mon").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 3: - if (row.getString("is_tue").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 4: - if (row.getString("is_wed").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 5: - if (row.getString("is_thu").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 6: - if (row.getString("is_fri").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - case 7: - if (row.getString("is_sau").equals("1")) { - dtl.put("factorydate_type", "01"); - dtl.put("work_type", "00"); - } else { - dtl.put("factorydate_type", "03"); - dtl.put("work_type", "01"); - } - break; - } - WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").insert(dtl); - a = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(a), 1), "yyyy-MM-dd"); - } - } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QPDM_FACTORYCALENDAR.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QPDM_FACTORYCALENDAR.wql index ce2058b7..170f41f6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QPDM_FACTORYCALENDAR.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/QPDM_FACTORYCALENDAR.wql @@ -14,6 +14,8 @@ ## 表字段对应输入参数 ################################################# 输入.flag TYPEAS s_string + 输入.id TYPEAS s_string + 输入.date TYPEAS s_string 输入.search TYPEAS s_string 输入.processroute_code TYPEAS s_string @@ -50,7 +52,7 @@ FROM pdm_bi_factorycalendar dar WHERE - 1=1 + dar.is_delete = '0' OPTION 输入.search <> "" (dar.factorycalendar_code like 输入.search or dar.factorycalendar_name like 输入.search) @@ -59,6 +61,28 @@ ENDPAGEQUERY ENDIF - + IF 输入.flag = "2" + PAGEQUERY + SELECT + T0.FACTORYCALENDARDTL_ID, + T0.FACTORYCALENDAR_ID, + DATE_FORMAT(T0.FACTORY_DATE, '%Y-%m-%d') AS FACTORY_DATE, + T0.FACTORYDATE_TYPE, + T0.WORK_TYPE, + T0.WORK_TYPE_NAME, + T0.RESOURCE, + T0.PRIORITY + FROM + PDM_BI_FACTORYCALENDARDTL T0 + WHERE 1=1 + OPTION 输入.date <> "" + (T0.FACTORY_DATE LIKE 输入.date) + ENDOPTION + OPTION 输入.id <> "" + T0.FACTORYCALENDAR_ID = 输入.id + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml index f80fc9d1..4f48ea51 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev.yml @@ -23,11 +23,11 @@ spring: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false -# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:zjhl_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_xc}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false +# url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:zjhl_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false username: ${DB_USER:root} -# password: ${DB_PWD:Root.123456} - password: ${DB_PWD:root} + password: ${DB_PWD:Root.123456} +# password: ${DB_PWD:root} # 初始连接数 initial-size: 5 diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml deleted file mode 100644 index d2208a4c..00000000 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml +++ /dev/null @@ -1,203 +0,0 @@ -server: - port: 8011 -#配置数据源 -spring: - data: - elasticsearch: - repositories: - enabled: true - client: - reactive: - #endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网 - # endpoints: 47.96.133.178:8200 #外网 - endpoints: http://127.0.0.1:9200 #外网 - elasticsearch: - rest: - #uris: 172.31.185.110:8200,172.31.154.9:8200 #内网 - # uris: 47.96.133.178:8200 #外网 - uris: http://127.0.0.1:9200 #外网 -# username: elastic -# password: 123456 - datasource: - druid: - db-type: com.alibaba.druid.pool.DruidDataSource - driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy -# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes_test}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false -# url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.46.5}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - username: ${DB_USER:root} - # password: ${DB_PWD:123456} - password: ${DB_PWD:942464Yy} - - # 初始连接数 - initial-size: 5 - # 最小连接数 - min-idle: 15 - # 最大连接数 - max-active: 30 - # 是否自动回收超时连接 - remove-abandoned: true - # 超时时间(以秒数为单位) - remove-abandoned-timeout: 180 - # 获取连接超时时间 - max-wait: 3000 - # 连接有效性检测时间 - time-between-eviction-runs-millis: 60000 - # 连接在池中最小生存的时间 - min-evictable-idle-time-millis: 300000 - # 连接在池中最大生存的时间 - max-evictable-idle-time-millis: 900000 - # 指明连接是否被空闲连接回收器(如果有)进行检验.如果检测失败,则连接将被从池中去除 - test-while-idle: true - # 指明是否在从池中取出连接前进行检验,如果检验失败, 则从池中去除连接并尝试取出另一个 - test-on-borrow: true - # 是否在归还到池中前进行检验 - test-on-return: false - # 检测连接是否有效 - validation-query: select 1 - # 配置监控统计 - webStatFilter: - enabled: true - stat-view-servlet: - enabled: true - url-pattern: /druid/* - reset-enable: false - filters: - DruidFilter,stat - - redis: - #数据库索引 - database: ${REDIS_DB:1} - #host: ${REDIS_HOST:127.0.0.1} - host: ${REDIS_HOST:localhost} - port: ${REDIS_PORT:6379} - password: ${REDIS_PWD:} - #连接超时时间 - timeout: 5000 - redisson: - config: | - threads: 4 - nettyThreads: 4 - singleServerConfig: - connectionMinimumIdleSize: 8 - connectionPoolSize: 8 - address: redis://127.0.0.1:6379 - idleConnectionTimeout: 10000 - timeout: 3000 -# 登录相关配置 -login: - # 登录缓存 - cache-enable: true - # 是否限制单用户登录 - single-login: false - # 验证码 - login-code: - # 验证码类型配置 查看 LoginProperties 类 - code-type: arithmetic - # 登录图形验证码有效时间/分钟 - expiration: 2 - # 验证码高度 - width: 111 - # 验证码宽度 - heigth: 36 - # 内容长度 - length: 2 - # 字体名称,为空则使用默认字体 - font-name: - # 字体大小 - font-size: 25 - -#jwt -jwt: - header: Authorization - # 令牌前缀 - token-start-with: Bearer - # 必须使用最少88位的Base64对该令牌进行编码 - base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= - # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html - token-validity-in-seconds: 14400000 - # 在线用户key - online-key: online-token- - # 验证码 - code-key: code-key- - # token 续期检查时间范围(默认30分钟,单位毫秒),在token即将过期的一段时间内用户操作了,则给用户的token续期 - detect: 1800000 - # 续期时间范围,默认1小时,单位毫秒 - renew: 3600000 - -#是否允许生成代码,生产环境设置为false -generator: - enabled: true - -#是否开启 swagger-ui -swagger: - enabled: true - -# IP 本地解析 -ip: - local-parsing: true - -# 文件存储路径 -file: - mac: - path: ~/file/ - avatar: ~/avatar/ - linux: - path: /home/eladmin/file/ - avatar: /home/eladmin/avatar/ - windows: - path: C:\eladmin\file\ - avatar: C:\eladmin\avatar\ - # 文件大小 /M - maxSize: 100 - avatarMaxSize: 5 - -sa-token: - # token 名称 (同时也是cookie名称) - token-name: Authorization - # token 有效期,单位s 默认30天, -1代表永不过期 - timeout: 2592000 - # token 临时有效期 (指定时间内无操作就视为token过期) 单位: 秒 - activity-timeout: -1 - # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) - is-concurrent: true - # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) - is-share: false - # token风格 - token-style: random-128 - # 是否输出操作日志 - is-log: false - jwt-secret-key: opsjajisdnnca0sdkksdfaaasdfwwq - # token 前缀 - token-prefix: - cookie: - # 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com - domain: - is-read-cookie: false - -#jetcache: -# defaultCacheType: LOCAL -# statIntervalMinutes: 15 -# areaInCacheName: false -# hiddenPackages: com.yb -# local: -# default: -# type: caffeine -# limit: 100 -# keyConvertor: fastjson -# expireAfterWriteInMillis: 60000 -# remote: -# default: -# type: redis.lettuce -# keyConvertor: fastjson -# valueEncoder: kryo -# valueDecoder: kryo -# poolConfig: -# minIdle: 5 -# maxIdle: 200 -# maxTotal: 1000 -# uri: -# - redis://127.0.0.1:6379 -es: - index: mes_log -schedulerFile: /Users/mima0000/Desktop/scheduler.xml diff --git a/mes/qd/src/api/wms/pcs/saleOrder.js b/mes/qd/src/api/wms/pcs/saleOrder.js index 392f24f5..af70608c 100644 --- a/mes/qd/src/api/wms/pcs/saleOrder.js +++ b/mes/qd/src/api/wms/pcs/saleOrder.js @@ -24,4 +24,12 @@ export function edit(data) { }) } -export default { add, edit, del } +export function excelImport(data) { + return request({ + url: 'api/mpsSaleOrder/excelImport', + method: 'post', + data + }) +} + +export default { add, edit, del, excelImport } diff --git a/mes/qd/src/views/wms/pcs/saleorder/UploadDialog.vue b/mes/qd/src/views/wms/pcs/saleorder/UploadDialog.vue new file mode 100644 index 00000000..6efc789d --- /dev/null +++ b/mes/qd/src/views/wms/pcs/saleorder/UploadDialog.vue @@ -0,0 +1,116 @@ + + + + diff --git a/mes/qd/src/views/wms/pcs/saleorder/index.vue b/mes/qd/src/views/wms/pcs/saleorder/index.vue index caa8b91b..dbe5ff03 100644 --- a/mes/qd/src/views/wms/pcs/saleorder/index.vue +++ b/mes/qd/src/views/wms/pcs/saleorder/index.vue @@ -12,7 +12,13 @@ label-suffix=":" > - + @@ -62,7 +68,7 @@ placeholder="请选择" /> - + + + 导入 + - - - + + - + - + - + - + + @@ -151,20 +213,45 @@ import crudSaleOrder from '@/api/wms/pcs/saleOrder' import CRUD, { presenter, header, form, crud } from '@crud/crud' import rrOperation from '@crud/RR.operation' import crudOperation from '@crud/CRUD.operation' +import UploadDialog from '@/views/wms/pcs/saleorder/UploadDialog' import Dialog from '@/views/wms/pcs/saleorder/Dialog' import pagination from '@crud/Pagination' -import Treeselect, {LOAD_CHILDREN_OPTIONS} from '@riophae/vue-treeselect' +import Treeselect, { LOAD_CHILDREN_OPTIONS } from '@riophae/vue-treeselect' import '@riophae/vue-treeselect/dist/vue-treeselect.css' import crudClassstandard from '@/api/wms/basedata/master/classstandard' -const defaultForm = { sale_id: null, sale_code: null, seq_no: null, sale_type: null, material_id: null, status: null, sale_qty: null, produce_seq: null, cust_id: null, qty_unit_id: null, plandeliver_date: null, create_id: null, create_name: null, create_time: null, update_optid: null, update_optname: null, update_time: null, cust_code: null, cust_name: null } +const defaultForm = { + sale_id: null, + sale_code: null, + seq_no: null, + sale_type: null, + material_id: null, + status: null, + sale_qty: null, + produce_seq: null, + cust_id: null, + qty_unit_id: null, + plandeliver_date: null, + create_id: null, + create_name: null, + create_time: null, + update_optid: null, + update_optname: null, + update_time: null, + cust_code: null, + cust_name: null +} export default { name: 'SaleOrder', dicts: ['PCS_SALE_STATUS', 'PCS_SAL_TYPE', 'IS_OR_NOT'], - components: { pagination, crudOperation, rrOperation, Treeselect, Dialog }, + components: { pagination, crudOperation, rrOperation, Treeselect, UploadDialog, Dialog }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { - return CRUD({ title: '销售订单', url: 'api/saleOrder', idField: 'sale_id', sort: 'sale_id,desc', + return CRUD({ + title: '销售订单', + url: 'api/mpsSaleOrder', + idField: 'sale_id', + sort: 'sale_id,desc', optShow: { add: false, edit: false, @@ -172,17 +259,16 @@ export default { reset: true, download: false }, - crudMethod: { ...crudSaleOrder }}) + crudMethod: { ...crudSaleOrder } + }) }, data() { return { classes3: [], + uploadShow: false, dialogShow: false, - permission: { - }, - queryTypeOptions: [ - { key: 'sale_code', display_name: '销售单号' } - ] + permission: {}, + queryTypeOptions: [{ key: 'sale_code', display_name: '销售单号' }] } }, created() { @@ -191,7 +277,7 @@ export default { methods: { queryClassId() { const param = { - 'class_idStr': this.class_idStr + class_idStr: this.class_idStr } crudClassstandard.queryClassById(param).then(res => { this.classes = res.content.map(obj => { @@ -205,6 +291,9 @@ export default { importin() { this.dialogShow = true }, + tableChanged3() { + this.crud.toQuery() + }, buildTree(classes) { classes.forEach(data => { if (data.children) { @@ -249,6 +338,4 @@ export default { } - + 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 b47b5e4e..da02a3b3 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/index.vue +++ b/mes/qd/src/views/wms/product_manage/workorder/index.vue @@ -10,7 +10,7 @@ label-width="90px" label-suffix=":" > - + - + - + @@ -275,7 +275,7 @@ - + - + - + - + - + - - - + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js index a617dae5..51cc68bb 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js +++ b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js @@ -41,7 +41,7 @@ export function submits(data) { } export function unSubmits(data) { return request({ - url: 'api/produceWorkorder/submits', + url: 'api/produceWorkorder/unSubmits', method: 'post', data }) @@ -112,7 +112,6 @@ export function reportQuery(data) { }) } - export function reportQuery3(data) { return request({ url: '/api/produceWorkorder/reportQuery3',