diff --git a/mes/hd/nladmin-system/pom.xml b/mes/hd/nladmin-system/pom.xml index d94cd6b5..4032a6fd 100644 --- a/mes/hd/nladmin-system/pom.xml +++ b/mes/hd/nladmin-system/pom.xml @@ -23,6 +23,7 @@ 1.31.0 5.7.14 0.11.1 + 1.2.83 1.9 @@ -228,6 +229,11 @@ lombok true + + com.alibaba + fastjson + ${fastjson.version} + cn.dev33 sa-token-dao-redis 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/common/utils/OptionRecord.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java index ad950d05..89cee50c 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,15 @@ 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/mybatis/MybatisPlusConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java index 35066896..ed5a9007 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/MybatisPlusConfig.java @@ -20,7 +20,7 @@ import javax.sql.DataSource; public class MybatisPlusConfig { @Autowired - DataSource dataSource; + private DataSource dataSource; /** * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除) 添加自增插件 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..a173056e 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,8 +17,10 @@ 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.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.Executor; @@ -26,14 +28,17 @@ 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 { - - /** 注入配置类 */ +@EnableAsync +public class AsyncTaskExecutePool implements AsyncConfigurer{ + /** + * 注入配置类 + */ private final AsyncTaskProperties config; public AsyncTaskExecutePool(AsyncTaskProperties config) { @@ -60,11 +65,41 @@ 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(config.getAwaitTerminationSeconds()); + // 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/config/thread/AsyncTaskProperties.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java index bba91140..4819c720 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/thread/AsyncTaskProperties.java @@ -38,4 +38,7 @@ public class AsyncTaskProperties { private int keepAliveSeconds; private int queueCapacity; + + private int awaitTerminationSeconds; + } 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..28fc975d --- /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/masterdata_manage/service/material/IMdMeMaterialbaseService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/IMdMeMaterialbaseService.java index 048cfe18..ed28454b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/IMdMeMaterialbaseService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/IMdMeMaterialbaseService.java @@ -1,8 +1,10 @@ package org.nl.wms.masterdata_manage.service.material; import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; import java.util.List; @@ -16,5 +18,5 @@ import java.util.List; */ public interface IMdMeMaterialbaseService extends IService { - List getPdaBcpGetMaterial(JSONObject whereJson); + List getPdaBcpGetMaterial(PdaQuery whereJson, PageQuery pageQuery); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.java index db5153bd..321aaedd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.java @@ -2,7 +2,10 @@ package org.nl.wms.masterdata_manage.service.material.dao.mapper; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; import java.util.List; import java.util.Map; @@ -17,5 +20,5 @@ import java.util.Map; */ public interface MdMeMaterialbaseMapper extends BaseMapper { - List getPdaBcpGetMaterial(JSONObject map); + List getPdaBcpGetMaterial(@Param("query") PdaQuery map, @Param("pageQuery") PageQuery pageQuery); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml index 5bce5642..87010c96 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml @@ -4,16 +4,20 @@ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java index 536ddbcf..b9563a48 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/impl/MdMeMaterialbaseServiceImpl.java @@ -2,9 +2,11 @@ package org.nl.wms.masterdata_manage.service.material.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.masterdata_manage.service.material.dao.mapper.MdMeMaterialbaseMapper; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; import org.springframework.stereotype.Service; import java.util.List; @@ -21,7 +23,7 @@ import java.util.List; public class MdMeMaterialbaseServiceImpl extends ServiceImpl implements IMdMeMaterialbaseService { @Override - public List getPdaBcpGetMaterial(JSONObject whereJson) { - return this.baseMapper.getPdaBcpGetMaterial(whereJson); + public List getPdaBcpGetMaterial(PdaQuery whereJson, PageQuery pageQuery) { + return this.baseMapper.getPdaBcpGetMaterial(whereJson,pageQuery); } } 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..eba55a5f 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,147 @@ 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 188f1f10..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' @@ -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..ab305e98 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 @@ -48,6 +48,7 @@ import java.util.Map; @Api(tags = "工单管理") @RequestMapping("/api/produceWorkorder") @Slf4j +@SaIgnore public class PdmProduceWorkorderController { private final IPdmProduceWorkorderService iPdmProduceWorkorderService; @@ -89,7 +90,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 +100,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 +173,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/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls index 442ec9d8..ff2eb728 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/pdm.xls differ 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..4a8fb901 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 @@ -1,7 +1,5 @@ - package org.nl.wms.product_manage.备份pdm.service.impl; - import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; @@ -9,18 +7,20 @@ 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.http.HttpStatus; +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; @@ -33,206 +33,250 @@ import java.util.Map; @Service @RequiredArgsConstructor @Slf4j -public class FactoryCalendarServiceImpl implements FactoryCalendarService { +public class FactoryCalendarServiceImpl implements FactoryCalendarService{ + @Override + public Map queryAll(Map whereJson, Pageable page) { + String search = MapUtil.getStr(whereJson, "search"); + HashMap map = new HashMap<>(); + map.put("flag", "1"); + if(StrUtil.isNotEmpty(search)) { + map.put("search", "%" + search + "%"); + } + JSONObject json = WQL.getWO("QPDM_FACTORYCALENDAR").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time desc"); + return json; + } - @Override - public Map queryAll(Map whereJson, Pageable page) { - String search = MapUtil.getStr(whereJson, "search"); - HashMap map = new HashMap<>(); + @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); + } - map.put("flag", "1"); - if (StrUtil.isNotEmpty(search)) map.put("search", "%" + search + "%"); + @Override + @Transactional(rollbackFor = Exception.class) + public void create(JSONObject whereJson) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + //插入主表 + String factorycalendar_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + whereJson.put("factorycalendar_id", factorycalendar_id); + whereJson.put("is_active", "0"); + whereJson.put("create_id", currentUserId); + whereJson.put("create_name", nickName); + whereJson.put("create_time", DateUtil.now()); + WQLObject.getWQLObject("PDM_BI_FactoryCalendar").insert(whereJson); + //插入明细表 + this.insertDtlTransactionally(whereJson); + } - JSONObject json = WQL.getWO("QPDM_FACTORYCALENDAR").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "update_time desc"); - return json; - } + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject whereJson) { + String factorycalendar_id = whereJson.getString("factorycalendar_id"); + //查询旧的终止年份 + JSONObject old_jo = WQLObject.getWQLObject("PDM_BI_FactoryCalendar").query("factorycalendar_id = '" + factorycalendar_id + "'").uniqueResult(0); + int old_year = old_jo.getIntValue("endfactory_year"); + int new_year = whereJson.getIntValue("endfactory_year"); + if(old_year >= new_year) { + throw new BadRequestException("新的终止年份不能小于等于之前的终止年份!"); + } + String new_start = (old_year + 1) + "-01-01"; + whereJson.put("factorycale_startdate", new_start); + //插入明细表 + this.insertDtlTransactionally(whereJson); + } - @Override - public void create(JSONObject whereJson) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - //插入主表 - String factorycalendar_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - whereJson.put("factorycalendar_id", factorycalendar_id); - whereJson.put("is_active", "0"); - whereJson.put("create_id", currentUserId); - whereJson.put("create_name", nickName); - whereJson.put("create_time", DateUtil.now()); - WQLObject.getWQLObject("PDM_BI_FactoryCalendar").insert(whereJson); + @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class) + public void insertDtlTransactionally(JSONObject row) { + insertDtl(row); + } - //插入明细表 - this.insertDtl(whereJson); - - } - - @Override - public void update(JSONObject whereJson) { - String factorycalendar_id = whereJson.getString("factorycalendar_id"); - - //查询旧的终止年份 - JSONObject old_jo = WQLObject.getWQLObject("PDM_BI_FactoryCalendar").query("factorycalendar_id = '" + factorycalendar_id + "'").uniqueResult(0); - - int old_year = old_jo.getIntValue("endfactory_year"); - int new_year = whereJson.getIntValue("endfactory_year"); - - if (old_year >= new_year) { - throw new BadRequestException("新的终止年份不能小于等于之前的终止年份!"); - } - - String new_start = (old_year + 1) + "-01-01"; - whereJson.put("factorycale_startdate", new_start); - //插入明细表 - this.insertDtl(whereJson); - } - - @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) { - JSONObject param = new JSONObject(); - param.put("factorycalendardtl_id", String.valueOf(factorycalendardtl_id)); - param.put("is_delete", "1"); - param.put("update_optid", currentUserId); - param.put("update_optname", nickName); - param.put("update_time", DateUtil.now()); - wo.update(param); - } - } - - @Override - public JSONObject getDtl(JSONObject whereJson) { - String factorycalendar_id = whereJson.getString("factorycalendar_id"); - String date = whereJson.getString("date"); - JSONObject jo = WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").query("factorycalendar_id = '" + factorycalendar_id + "' AND factory_date ='" + date + "'").uniqueResult(0); - return jo; - } - - @Override - public void updateActive(JSONObject whereJson) { - String factorycalendar_id = whereJson.getString("factorycalendar_id"); - String is_active = whereJson.getString("is_active"); - HashMap map = new HashMap<>(); - map.put("is_active", is_active); - 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 factorycalendar_id = whereJson.getString("factorycalendar_id"); - HashMap map = new HashMap<>(); - map.put("work_type", holidayType); - if (holidayType.equals("00")) { - map.put("factorydate_type", "01"); - } else { - map.put("factorydate_type", "03"); - } - WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").update(map, "factorycalendar_id = '" + factorycalendar_id + "' AND factory_date = '" + holidayDate + "'"); - } - - @Override - public void updateDtlActive(JSONObject whereJson) { - String is_active = whereJson.getString("is_active"); - if (is_active.equals("1")){ - //查询是否存在已经启用的日历 - JSONObject mst = WQLObject.getWQLObject("PDM_BI_FactoryCalendar").query("is_active = '1' AND is_delete = '0'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(mst)){ - throw new BadRequestException("工厂日历只能启用一个!"); - } - } - 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"); + @Async("taskExecutor") + public void insertDtl(JSONObject row) { + try { + 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("1".equals(row.getString("is_sun"))) { + 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("1".equals(row.getString("is_mon"))) { + 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("1".equals(row.getString("is_tue"))) { + 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("1".equals(row.getString("is_wed"))) { + 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("1".equals(row.getString("is_thu"))) { + 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("1".equals(row.getString("is_fri"))) { + 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("1".equals(row.getString("is_sau"))) { + 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", "休息日"); + } + default: + break; } - 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"); - } - } + WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").insert(dtl); + a = DateUtil.format(DateUtil.offsetDay(DateUtil.parse(a), 1), "yyyy/MM/dd"); + } + } + catch(Exception e) { + throw new BadRequestException(HttpStatus.BAD_REQUEST, "操作工厂日历表失败!"); + } + } + + @Override + public void deleteAll(Long[] ids) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + WQLObject wo = WQLObject.getWQLObject("pdm_bi_factorycalendar"); + for(Long factorycalendar_id : ids) { + JSONObject param = new JSONObject(); + param.put("factorycalendar_id", String.valueOf(factorycalendar_id)); + param.put("is_delete", "1"); + param.put("update_optid", currentUserId); + param.put("update_optname", nickName); + param.put("update_time", DateUtil.now()); + wo.update(param); + } + } + + @Override + public JSONObject getDtl(JSONObject whereJson) { + String factorycalendar_id = whereJson.getString("factorycalendar_id"); + String date = whereJson.getString("date"); + JSONObject jo = WQLObject.getWQLObject("PDM_BI_FactoryCalendarDtl").query("factorycalendar_id = '" + factorycalendar_id + "' AND factory_date ='" + date + "'").uniqueResult(0); + return jo; + } + + @Override + public void updateActive(JSONObject whereJson) { + String factorycalendar_id = whereJson.getString("factorycalendar_id"); + String is_active = whereJson.getString("is_active"); + HashMap map = new HashMap<>(); + map.put("is_active", is_active); + WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(map, "factorycalendar_id = '" + factorycalendar_id + "'"); + } + + @Override + public void updateDtlStatus(JSONObject whereJson) { + 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 + "'"); + } + + @Override + public void updateDtlActive(JSONObject whereJson) { + String is_active = whereJson.getString("is_active"); + if(is_active.equals("1")) { + //查询是否存在已经启用的日历 + JSONObject mst = WQLObject.getWQLObject("PDM_BI_FactoryCalendar").query("is_active = '1' AND is_delete = '0'").uniqueResult(0); + if(ObjectUtil.isNotEmpty(mst)) { + throw new BadRequestException("工厂日历只能启用一个!"); + } + } + WQLObject.getWQLObject("PDM_BI_FactoryCalendar").update(whereJson); + } } 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/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls index 4f177eb0..d00588e9 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/备份pdm/wql/pdm.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/SHUTEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/SHUTEnum.java index 412a5561..93d0a4f1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/SHUTEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/SHUTEnum.java @@ -19,6 +19,8 @@ public enum SHUTEnum { BUSI_CLASSS_CODE(MapOf.of("拆盘", "01", "拼盘", "02")), //单据类型 BILL_TYPE(MapOf.of("普通拆盘", "51", "普通拼盘", "52")), + //单据类型 + REGION_CODE(MapOf.of("半成品拼盘区域", "A1_BCP_PP")), //单据状态 BILL_STATUS(MapOf.of("生成", "10", "提交", "20", "执行中", "30", "确认", "60", "完成", "99")), //单据状态 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java index 38d01ae4..d435c1d2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java @@ -17,6 +17,8 @@ public enum PDAEnum { SECT_CODE(MapOf.of("半成品库区", "KQ005")), //库区id SECT_ID(MapOf.of("成品库区", "1528631043496742912")), + //物料类别 + MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")), ; private Map code; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpInController.java index 75adfcf0..eaad000d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpInController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpInController.java @@ -4,7 +4,9 @@ package org.nl.wms.storage_manage.pda.controller; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.ApiOperation; import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; import org.nl.wms.storage_manage.pda.service.PdaStBcpInService; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -52,8 +54,8 @@ public class PdaStBcpInController { @PostMapping("/getMaterial") @Log("查询物料") @ApiOperation("查询物料") - public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(pdaStBcpInService.getMaterial(whereJson), HttpStatus.OK); + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson, PageQuery pageQuery) { + return new ResponseEntity<>(pdaStBcpInService.getMaterial(whereJson,pageQuery), HttpStatus.OK); } @PostMapping("/callVehicle") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpOutController.java index 1057d0e3..92a5b70c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpOutController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStBcpOutController.java @@ -57,8 +57,8 @@ public class PdaStBcpOutController { } @PostMapping("/createIn") - @Log("确认入库") - @ApiOperation("确认入库") + @Log("确认出库") + @ApiOperation("确认出库") public ResponseEntity createIn(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaStBcpOutService.createIn(whereJson), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStCpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStCpInController.java index 006aacad..9db1b201 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStCpInController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStCpInController.java @@ -50,8 +50,8 @@ public class PdaStCpInController { } @PostMapping("/getMaterial") - @Log("查询入库点下拉框") - @ApiOperation("查询入库点下拉框") + @Log("查询单据物料") + @ApiOperation("查询单据物料") public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { return new ResponseEntity<>(pdaStCpInService.getMaterial(whereJson), HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStBcpInService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStBcpInService.java index ed00c916..53a6254e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStBcpInService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStBcpInService.java @@ -1,6 +1,8 @@ package org.nl.wms.storage_manage.pda.service; import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; /** *

@@ -29,7 +31,7 @@ public interface PdaStBcpInService { * @param whereJson / * @return JSONObject / */ - JSONObject getMaterial(JSONObject whereJson); + JSONObject getMaterial(JSONObject whereJson, PageQuery pageQuery); /** * 查询入库点下拉框 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/dto/PdaQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/dto/PdaQuery.java new file mode 100644 index 00000000..5b72f50f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/dto/PdaQuery.java @@ -0,0 +1,25 @@ +package org.nl.wms.storage_manage.pda.service.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.wms.storage_manage.semimanage.service.shutFrame.dao.StIvtShutframeinvBcp; + +/* + * @author ZZQ + * @Date 2023/5/4 19:49 + */ +@Data +public class PdaQuery extends BaseQuery { + + + private String material_code; + + @Override + public void paramMapping() { + super.doP.put("material_code", QParam.builder().k(new String[]{"material_code"}).type(QueryTEnum.LK).build()); + } + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpCheckServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpCheckServiceImpl.java index 0a895b11..3a304eed 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpCheckServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpCheckServiceImpl.java @@ -4,11 +4,13 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.storage_manage.CHECKEnum; import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.pda.PDAEnum; import org.nl.wms.storage_manage.pda.service.PdaStBcpCheckService; @@ -80,7 +82,9 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { @Override @Transactional - public JSONObject create(JSONObject whereJson) { + public JSONObject create(JSONObject whereJson1) { + + JSONObject whereJson = whereJson1.getJSONObject("from"); // 组织主表数据 JSONObject param = new JSONObject(); @@ -103,7 +107,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { row.put("struct_name", json.getString("struct_name")); row.put("storagevehicle_code", json.getString("storagevehicle_code")); row.put("material_id", json.getString("material_id")); - row.put("base_qty", json.getString("base_qty")); + row.put("base_qty", json.getString("canuse_qty")); row.put("qty_unit_id", json.getString("qty_unit_id")); row.put("qty_unit_name", json.getString("qty_unit_name")); @@ -146,7 +150,14 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { @Override @Transactional public JSONObject sendTask(JSONObject whereJson) { - iStIvtCheckmstBcpService.issueTask(whereJson); + JSONObject row = whereJson.getJSONObject("row"); + + if (!row.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) { + throw new BadRequestException("当前明细已盘点不可下发!"); + } + + row.put("point_code", whereJson.getString("point_code")); + iStIvtCheckmstBcpService.issueTask(row); JSONObject result = new JSONObject(); result.put("data", ""); @@ -157,7 +168,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { @Override @Transactional public JSONObject confirm(JSONObject whereJson) { - JSONArray rows = whereJson.getJSONArray("rows"); + JSONArray rows = whereJson.getJSONArray("row"); List dtlList = JSON.parseArray(JSON.toJSONString(rows), StIvtCheckdtlBcp.class); @@ -175,7 +186,7 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { param.put("row",row); param.put("rows", JSONArray.parseArray(JSON.toJSONString(list))); - iStIvtCheckmstBcpService.confirm(param); + iStIvtCheckmstBcpService.pdaConfirm(param); } JSONObject result = new JSONObject(); @@ -186,7 +197,13 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { @Override @Transactional - public JSONObject confirmOffer(JSONObject whereJson) { + public JSONObject confirmOffer(JSONObject whereJson1) { + JSONObject whereJson = whereJson1.getJSONObject("row"); + + if (whereJson.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) { + throw new BadRequestException("请先盘点"); + } + JSONObject param = new JSONObject(); JSONObject form = new JSONObject(); @@ -204,7 +221,13 @@ public class PdaStBcpCheckServiceImpl implements PdaStBcpCheckService { @Override @Transactional - public JSONObject confirmFinance(JSONObject whereJson) { + public JSONObject confirmFinance(JSONObject whereJson1) { + JSONObject whereJson = whereJson1.getJSONObject("row"); + + if (whereJson.getString("status").equals(CHECKEnum.DTL_STATUS.code("生成"))) { + throw new BadRequestException("请先盘点"); + } + JSONObject param = new JSONObject(); JSONObject form = new JSONObject(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java index d762ab20..e0268238 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpInServiceImpl.java @@ -10,6 +10,10 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.github.pagehelper.Page; +import com.github.pagehelper.PageHelper; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.publish.BussEventMulticaster; import org.nl.common.publish.event.PointEvent; @@ -17,6 +21,7 @@ import org.nl.common.utils.IdUtil; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.util.SpringContextHolder; 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.master.IMdPbMeasureunitService; import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit; import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; @@ -25,6 +30,7 @@ import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattr import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.masterdata_manage.备份master.constant.MaterOptTypeEnum; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; @@ -34,16 +40,21 @@ import org.nl.wms.storage_manage.IOSEnum; import org.nl.wms.storage_manage.IVTEnum; import org.nl.wms.storage_manage.pda.PDAEnum; import org.nl.wms.storage_manage.pda.service.PdaStBcpInService; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; import org.nl.wms.storage_manage.semimanage.service.iostorInv.IStIvtIostorinvBcpService; import org.nl.wms.system_manage.service.dict.ISysDictService; import org.nl.wms.system_manage.service.dict.dao.Dict; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.bind.annotation.RequestBody; +import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.function.Consumer; +import java.util.stream.Collectors; /** *

@@ -80,6 +91,9 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { @Autowired private IStIvtIostorinvBcpService iStIvtIostorinvBcpService; // PC半成品入库服务 + @Autowired + private IMdPbClassstandardService iMdPbClassstandardService; // 类别服务 + @Override public JSONObject getBcpStor() { List storList = storattrService.list( @@ -105,8 +119,25 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { } @Override - public JSONObject getMaterial(JSONObject whereJson) { - List list = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson); + public JSONObject getMaterial(JSONObject whereJson1, PageQuery pageQuery) { + PdaQuery whereJson = new PdaQuery(); + whereJson.setMaterial_code(whereJson1.getString("material_code")); + int size = whereJson1.getIntValue("size"); + + // 处理物料分类 list1.size() < size ? list1.size() : size + Set childIdStr = iMdPbClassstandardService.getAllChildIdSet(PDAEnum.MATERIAL_CLASS.code("管件半成品")); + + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(whereJson1.getString("material_code"))) { + List list1 = iMdMeMaterialbaseService.list( + new QueryWrapper().lambda() + .in(MdMeMaterialbase::getMaterial_type_id, childIdStr) + ); + list = list1.subList(0, Math.min(list1.size(), size)); + } else { + List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery); + list = list1.subList(0, Math.min(list1.size(), size)); + } JSONObject result = new JSONObject(); result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); @@ -200,7 +231,8 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { @Override @Transactional - public JSONObject createIn(JSONObject whereJson) { + public JSONObject createIn(JSONObject from) { + JSONObject whereJson = from.getJSONObject("from"); // 组织数据 JSONObject param = new JSONObject(); @@ -253,7 +285,7 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { @Override @Transactional public JSONObject confirm(JSONObject whereJson) { - iStIvtIostorinvBcpService.confirm(whereJson); + iStIvtIostorinvBcpService.confirm(whereJson.getJSONObject("row")); JSONObject result = new JSONObject(); result.put("data", ""); @@ -278,6 +310,8 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { structattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle,false) + .set(StIvtStructattr::getStoragevehicle_code,"") .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code1()) ); @@ -293,6 +327,8 @@ public class PdaStBcpInServiceImpl implements PdaStBcpInService { structattrService.update( new UpdateWrapper().lambda() .set(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .set(StIvtStructattr::getIs_emptyvehicle,false) + .set(StIvtStructattr::getStoragevehicle_code,"") .eq(StIvtStructattr::getStruct_code, taskDao.getPoint_code1()) ); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpOutServiceImpl.java index 100f3cd5..3a2d67c9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpOutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpOutServiceImpl.java @@ -120,7 +120,9 @@ public class PdaStBcpOutServiceImpl implements PdaStBcpOutService { @Override @Transactional - public JSONObject createIn(JSONObject whereJson) { + public JSONObject createIn(JSONObject whereJson1) { + JSONObject whereJson = whereJson1.getJSONObject("from"); + // 组织数据 JSONObject param = new JSONObject(); param.put("biz_date", DateUtil.today()); @@ -185,7 +187,8 @@ public class PdaStBcpOutServiceImpl implements PdaStBcpOutService { @Override @Transactional public JSONObject confirm(JSONObject whereJson) { - iStIvtIostorinvBcpOutService.confirm(whereJson); + JSONObject row = whereJson.getJSONObject("row"); + iStIvtIostorinvBcpOutService.confirm(row); JSONObject result = new JSONObject(); result.put("data", ""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpShutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpShutServiceImpl.java index efb921eb..f9e3cd5b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpShutServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStBcpShutServiceImpl.java @@ -4,10 +4,12 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.modules.common.exception.BadRequestException; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtBsrealstorattrService; import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtBsrealstorattr; import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.SHUTEnum; import org.nl.wms.storage_manage.pda.service.PdaStBcpShutService; import org.nl.wms.storage_manage.semimanage.service.shutFrame.IStIvtShutframeinvBcpService; import org.nl.wms.system_manage.service.dict.ISysDictService; @@ -55,7 +57,7 @@ public class PdaStBcpShutServiceImpl implements PdaStBcpShutService { @Override public JSONObject getBillType() { - List dictList = iSysDictService.getDictByName("SHUTFRAME_BILL_STATUS"); + List dictList = iSysDictService.getDictByName("ST_INV_TYPE_SF"); JSONObject result = new JSONObject(); result.put("data", JSONArray.parseArray(JSON.toJSONString(dictList))); @@ -76,7 +78,14 @@ public class PdaStBcpShutServiceImpl implements PdaStBcpShutService { @Override @Transactional public JSONObject confirm(JSONObject whereJson) { - iStIvtShutframeinvBcpService.confirmOne(whereJson); + + JSONObject row = whereJson.getJSONObject("row"); + + if (!row.getString("work_status").equals(SHUTEnum.WORK_STATUS.code("移出确认"))) { + throw new BadRequestException("执行状态不为【移出确认】!"); + } + + iStIvtShutframeinvBcpService.confirmOne(row); JSONObject result = new JSONObject(); result.put("data", ""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java index 6cd160be..63a6f50d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStCpInServiceImpl.java @@ -114,7 +114,9 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { @Override @Transactional - public JSONObject confirmIn(JSONObject whereJson) { + public JSONObject confirmIn(JSONObject whereJson1) { + JSONObject whereJson = whereJson1.getJSONObject("from"); + /* * 入库单创建 */ @@ -141,7 +143,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { JSONObject paramDiv = createDivData(whereJson); // 2.调用PC成品入库服务分配货位 - iStIvtIostorinvCpService.divStruct(whereJson); + iStIvtIostorinvCpService.divStruct(paramDiv); /* * 设置起点 @@ -180,7 +182,7 @@ public class PdaStCpInServiceImpl implements PdaStCpInService { @Override @Transactional public JSONObject confirm(JSONObject whereJson) { - iStIvtIostorinvCpService.confirm(whereJson); + iStIvtIostorinvCpService.confirm(whereJson.getJSONObject("row")); JSONObject result = new JSONObject(); result.put("data", ""); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvCpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvCpMapper.xml index af51c100..6793d23e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvCpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/productmanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvCpMapper.xml @@ -7,9 +7,10 @@ mst.*, dis.material_code, dis.material_name, - dis.net_weight, + dis.net_weight AS unit_weight, dis.point_code, dis.struct_code, + dis.material_spec, dis.storagevehicle_code FROM st_ivt_iostorinv_cp mst @@ -18,6 +19,7 @@ a.iostorinv_id, MAX(b.material_code) AS material_code, MAX(b.material_name) AS material_name, + MAX(b.material_spec) AS material_spec, MAX(b.net_weight) AS net_weight, MAX(a.point_code) AS point_code, MAX(a.struct_code) AS struct_code, @@ -37,10 +39,10 @@ and mst.stor_id = #{stor_id} - and mst.create_time <= #{begin_time} + and mst.create_time >= #{begin_time} - and mst.create_time >= #{end_time} + and mst.create_time <= #{end_time} and mst.bill_type = #{bill_type} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/IStIvtCheckmstBcpService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/IStIvtCheckmstBcpService.java index 3c491215..61789b06 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/IStIvtCheckmstBcpService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/IStIvtCheckmstBcpService.java @@ -45,6 +45,8 @@ public interface IStIvtCheckmstBcpService extends IService { void confirm(JSONObject jo); + void pdaConfirm(JSONObject jo); + void process0(JSONObject jo); void process1(JSONObject jo); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/dao/mapper/xml/StIvtCheckmstBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/dao/mapper/xml/StIvtCheckmstBcpMapper.xml index 1b2ffa05..2efa569e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/dao/mapper/xml/StIvtCheckmstBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/dao/mapper/xml/StIvtCheckmstBcpMapper.xml @@ -7,7 +7,7 @@ dtl.*, mb.material_code, mb.material_spec, - dtl.base_qty / mb.net_weight AS qty, + ROUND(dtl.base_qty / mb.net_weight,3) AS qty, mst.check_type, mst.create_time, mst.create_name @@ -26,10 +26,10 @@ and mst.stor_id = #{stor_id} - and mst.create_time <= #{begin_time} + and mst.create_time >= #{begin_time} - and mst.create_time >= #{end_time} + and mst.create_time <= #{end_time} and (mb.material_code LIKE '%${material_code}%' or @@ -40,7 +40,7 @@ attr.struct_name LIKE '%${struct_code}%') - and attr.struct_code LIKE '%${storagevehicle_code}%' + and attr.storagevehicle_code LIKE '%${storagevehicle_code}%' diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/impl/StIvtCheckmstBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/impl/StIvtCheckmstBcpServiceImpl.java index 63362e7b..244206b2 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/impl/StIvtCheckmstBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/check/impl/StIvtCheckmstBcpServiceImpl.java @@ -274,6 +274,94 @@ public class StIvtCheckmstBcpServiceImpl extends ServiceImpl().eq("check_id", form.getString("check_id")).in("status", new String[]{"10", "30"})); + if (jo_mst == null) { + throw new BadRequestException("盘点单状态异常!"); + } + //定义需要需要更新的的点位集合 + HashSet set = new HashSet<>(); + for (int i = 0; i < rows.size(); i++) { + JSONObject jo = rows.getJSONObject(i); + + String status = jo.getString("status"); + StIvtCheckdtlBcp dtl = jo.toJavaObject(StIvtCheckdtlBcp.class); + double base_qty = jo.getDoubleValue("base_qty"); + //已盘点过的明细不再处理 + if ("05,06,07,99".contains(status)) { + checkdtlBcpService.updateById(dtl); + continue; + } else { + checkdtlBcpService.remove( + new QueryWrapper().lambda() + .eq(StIvtCheckdtlBcp::getCheckdtl_id, jo.getString("checkdtl_id")) + ); + } + + dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点")); + dtl.setCheck_optid(SecurityUtils.getCurrentUserId()); + dtl.setCheck_optname(SecurityUtils.getCurrentNickName()); + dtl.setCheck_time(DateUtil.now()); + double fac_qty = jo.getDoubleValue("fac_qty"); + //判断盈亏 + if (fac_qty > base_qty) { + dtl.setCheck_result("2"); + } else if (fac_qty < base_qty) { + dtl.setCheck_result("1"); + } else { + dtl.setCheck_result("0"); + dtl.setStatus(CHECKEnum.DTL_STATUS.code("确认完成")); + } + if (StrUtil.isEmpty(jo.getString("checkdtl_id"))) { + jo.put("checkdtl_id", IdUtil.getStringId()); + } + checkdtlBcpService.save(dtl); + set.add(dtl.getStruct_id()); + + // 判断是否已下发,是则生成回去的任务 + if (dtl.getIs_down().equals("1") && dtl.getStatus().equals(CHECKEnum.DTL_STATUS.code("确认完成"))) { + createBackTask(dtl,jo_mst.getWorkshop_id()); + dtl.setStatus(CHECKEnum.DTL_STATUS.code("已盘点")); + dtl.setIs_down("2"); + checkdtlBcpService.updateById(dtl); + } + + } + + jo_mst.setIs_nok(false); + List dtl_list = checkdtlBcpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).ne("check_result", "0")); + if (dtl_list.size() != 0) { + jo_mst.setIs_nok(true); + } + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("盘点中")); + List finish_list = checkdtlBcpService.list(new QueryWrapper().eq("check_id", form.getString("check_id")).in("status", new String[]{"99", "07"})); + //说明全部确认 + if (finish_list.size() == jo_mst.getDtl_num().intValue()) { + // 判断是否有任务 + List collect = finish_list.stream() + .filter(item -> Integer.parseInt(item.getIs_down()) > 0) + .collect(Collectors.toList()); + + if (ObjectUtil.isEmpty(collect)) { + checkdtlBcpService.update(new UpdateWrapper().set("status", "99").eq("check_id", form.getString("check_id"))); + + jo_mst.setStatus(CHECKEnum.BILL_STATUS.code("完成")); + jo_mst.setConfirm_optid(SecurityUtils.getCurrentUserId()); + jo_mst.setConfirm_optname(SecurityUtils.getCurrentNickName()); + jo_mst.setConfirm_time(DateUtil.now()); + //锁定起点点位、仓位 + set.forEach(struct_id -> structattrService.update(new UpdateWrapper().set("lock_type", "0").set("inv_code", "").eq("struct_id", struct_id))); + } + + } + this.updateById(jo_mst); + } + /* 创建回去的任务 */ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvBcpMapper.xml index 527d6de7..645eed43 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/iostorInv/dao/mapper/xml/StIvtIostorinvBcpMapper.xml @@ -9,7 +9,7 @@ mater.material_spec, task.task_code, task.task_status, - (dtl.unit_weight * dtl.plan_qty) AS weight_qty + ROUND(dtl.plan_qty / dtl.unit_weight,3 ) AS weight_qty FROM st_ivt_iostorinv_bcp dtl LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id @@ -49,7 +49,7 @@ dtl.*, mater.material_code, mater.material_spec, - dtl.plan_qty / dtl.unit_weight AS qty + ROUND(dtl.plan_qty / dtl.unit_weight,3) AS qty FROM st_ivt_iostorinv_bcp dtl LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id @@ -63,12 +63,7 @@ and dtl.stor_id = #{stor_id} - - and dtl.create_time <= #{begin_time} - - - and dtl.create_time >= #{end_time} - + and (mater.material_code LIKE '%${material_code}%' or mater.material_name LIKE '%${material_code}%') diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/dao/mapper/xml/StIvtShutframeinvBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/dao/mapper/xml/StIvtShutframeinvBcpMapper.xml index 60df610b..f357b266 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/dao/mapper/xml/StIvtShutframeinvBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/dao/mapper/xml/StIvtShutframeinvBcpMapper.xml @@ -44,6 +44,7 @@ dtl.fact_qty, dtl.turnin_struct_code, dtl.storagevehicle_code_in, + dtl.work_status, dtl.qty, mb.material_code, mb.material_spec @@ -58,10 +59,10 @@ and mst.stor_id = #{stor_id} - and mst.create_time <= #{begin_time} + and mst.create_time >= #{begin_time} - and mst.create_time >= #{end_time} + and mst.create_time <= #{end_time} and mst.bill_type = #{bill_type} @@ -71,7 +72,7 @@ mb.material_name LIKE '%${material_code}%') - and (dtl.storagevehicle_id_in LIKE '%${storagevehicle_id_in}%' or + and (dtl.storagevehicle_code_in LIKE '%${storagevehicle_id_in}%' or dtl.storagevehicle_code LIKE '%${storagevehicle_id_in}%') diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java index 26ee3db8..4abd11a7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframedtlBcpServiceImpl.java @@ -27,6 +27,7 @@ import java.math.BigDecimal; import java.util.Comparator; import java.util.LinkedList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -47,7 +48,7 @@ public class StIvtShutframedtlBcpServiceImpl extends ServiceImpl list = rows.stream() - .sorted(Comparator.comparing(row -> ((JSONObject) row).getDoubleValue("canuse_qty")).reversed()).collect(Collectors.toList()); + .sorted(Comparator.comparing(row -> (Integer)((Map) row).get("canuse_qty")).reversed()).collect(Collectors.toList()); rows = JSONArray.parseArray(JSON.toJSONString(list)); StIvtStructattr first_struct = null; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java index ef313ead..937dd0a7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/shutFrame/impl/StIvtShutframeinvBcpServiceImpl.java @@ -303,7 +303,7 @@ public class StIvtShutframeinvBcpServiceImpl extends ServiceImpl(); - map.put("region_code", "A1_BCP_PD"); + map.put("region_code", SHUTEnum.REGION_CODE.code("半成品拼盘区域")); List point_list = pointMapper.canUsePoint(map); if (point_list.size() < 2) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml index dc58fff2..7c937536 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanage/service/structIvt/dao/mapper/xml/StIvtStructivtBcpMapper.xml @@ -172,10 +172,12 @@