diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/ConstantParam.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/ConstantParam.java index 77874934..b110bde0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/ConstantParam.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/ConstantParam.java @@ -6,7 +6,7 @@ package org.nl.common; */ public class ConstantParam { //深坑清洗区域编码 - public static String SK_REGION = "QSQX"; + public static String SK_REGION = "A1_SKQX"; //发货区编码 public static String FHQ = "KQ001"; public static String RK_POINT = "A1_RK01"; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index c17cfef7..f1027a42 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -40,8 +40,8 @@ public enum AcsTaskEnum { STATUS_FINISH("2","完成"), STATUS_CANNEL("3","取消"), //专机请求 - REQUEST_CALLTYPE_FULL("1","专机满料请求"), - REQUEST_CALLTYPE_EMP("2","专机缺料请求"), + REQUEST_CALLTYPE_FULL("2","专机满料请求"), + REQUEST_CALLTYPE_EMP("1","专机缺料请求"), REQUEST_PLOTTER_SEND_FULL("3","刻字满料请求"), REQUEST_PLOTTER_CALL_EMP("4","刻字缺空框请求"), REQUEST_WARP_CALL_FULL("5","包装缺料请求"), 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 69e439a3..5545b9e6 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 @@ -69,6 +69,9 @@ public enum StatusEnum { IOS_CREATE("01","生成",""), IOS_RUNNING("02","执行中",""), IOS_FINISH("99","完成",""), + //载具超限 + OVERSTRUCT_STANDARD("1","标准",""), + OVERSTRUCT_LIMIT("2","超限",""), ; private String code; 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 new file mode 100644 index 00000000..dd2c6e11 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/OptionRecord.java @@ -0,0 +1,55 @@ +package org.nl.common.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.nl.config.thread.ThreadPoolExecutorUtil; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.system.service.ql.IPdmQlOptionService; +import org.nl.system.service.ql.dao.PdmQlOption; + +import java.util.Date; +import java.util.Map; +import java.util.concurrent.ThreadPoolExecutor; + +/* + * @author ZZQ + * @Date 2023/4/25 15:40 + */ +public class OptionRecord { + + private final static ThreadPoolExecutor EXECUTOR = ThreadPoolExecutorUtil.getPoll(); + + public static void record(OptionEnum type, Buss classname, String order, Map option){ + EXECUTOR.execute(()->{ + IPdmQlOptionService bean = SpringContextHolder.getBean(IPdmQlOptionService.class); + PdmQlOption qlOption = new PdmQlOption(); + if (option !=null){ + qlOption.setOptionDate(JSON.toJSONString(option)); + } + qlOption.setOrderno(order); + qlOption.setType(type.name()); + qlOption.setCreateTime(new Date()); + qlOption.setCreateId(SecurityUtils.getCurrentUserId()); + qlOption.setCreateId(SecurityUtils.getCurrentNickName()); + qlOption.setBussclass(classname.name()); + bean.save(qlOption); + }); + } + + @Getter + @AllArgsConstructor + public enum OptionEnum{ + ADDOP, + DELETEOP, + UPDATEOP, + } + @Getter + @AllArgsConstructor + public enum Buss{ + WORKORDER, + MATERIAL, + VECHILE, + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java index eb103b37..579487cd 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/utils/RedissonUtils.java @@ -8,6 +8,7 @@ import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import java.util.concurrent.TimeUnit; +import java.util.function.Supplier; /* * @author ZZQ @@ -21,7 +22,7 @@ public class RedissonUtils { * @param seconds 尝试获取锁的等待时间,允许为空 */ @SneakyThrows - public static void lock(LockProcess process, String key, Integer seconds){ + public static void lock(LockProcess process, String key, Integer seconds){ RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class); RLock lock = redissonClient.getLock(key); boolean isLock; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java new file mode 100644 index 00000000..0b2d8b5d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/ConventConfig.java @@ -0,0 +1,56 @@ +package org.nl.config; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.druid.pool.DruidDataSource; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.common.DataTypeEnum; +import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl; +import org.nl.wms.sch.tasks.SpeMachineryTask; +import org.nl.wms.sch.tasks.WashMachineryTask; +import org.nl.wms.sch.tasks.callMaterial.WrapCallMaterialTask; +import org.nl.wms.sch.tasks.sendEmpty.WrapSendEmptyTask; +import org.nl.wms.sch.tasks.sendMaterial.PlotterSendMaterialTask; +import org.springframework.beans.BeansException; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.beans.factory.config.BeanPostProcessor; +import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.system.ApplicationPid; +import org.springframework.context.SmartLifecycle; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +import javax.sql.DataSource; +import java.sql.DriverManager; +import java.sql.SQLException; + +@Configuration +@Slf4j +public class ConventConfig implements SmartLifecycle { + + + @Override + public void start() { + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_FULL, SpringContextHolder.getBean(SpeMachineryTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_EMP, SpringContextHolder.getBean(SpeMachineryTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WASH_EMP, SpringContextHolder.getBean(WashMachineryTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_PLOTTER_SEND_FULL, SpringContextHolder.getBean(PlotterSendMaterialTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_CALL_FULL, SpringContextHolder.getBean(WrapCallMaterialTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_WARP_SEND_EMP, SpringContextHolder.getBean(WrapSendEmptyTask.class)); + System.out.println("初始化Task_Collent完成"+AcsToWmsServiceImpl.Task_Collent.size()); + } + + @Override + public void stop() { + + } + + @Override + public boolean isRunning() { + return false; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/DataBaseConfig.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/DataBaseConfig.java deleted file mode 100644 index e32f07a3..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/DataBaseConfig.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.nl.config; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.druid.pool.DruidDataSource; -import lombok.extern.slf4j.Slf4j; -import org.nl.wms.common.DataTypeEnum; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; - -import javax.sql.DataSource; -import java.sql.DriverManager; -import java.sql.SQLException; - -//@Configuration -@Slf4j -public class DataBaseConfig { - - @Primary - @Bean(name = "dataSource") - @ConfigurationProperties(prefix = "spring.datasource.druid") - public DataSource dataSource() { - return new DruidDataSource(); - } - -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/ql/PdmQlOptionController.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/ql/PdmQlOptionController.java new file mode 100644 index 00000000..6096aad2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/ql/PdmQlOptionController.java @@ -0,0 +1,21 @@ +package org.nl.system.controller.ql; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 操作记录表 前端控制器 + *

+ * + * @author generator + * @since 2023-04-25 + */ +@RestController +@RequestMapping("/pdmQlOption") +public class PdmQlOptionController { + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/IPdmQlOptionService.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/IPdmQlOptionService.java new file mode 100644 index 00000000..44dfe7d5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/IPdmQlOptionService.java @@ -0,0 +1,16 @@ +package org.nl.system.service.ql; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.system.service.ql.dao.PdmQlOption; + +/** + *

+ * 操作记录表 服务类 + *

+ * + * @author generator + * @since 2023-04-25 + */ +public interface IPdmQlOptionService extends IService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/PdmQlOption.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/PdmQlOption.java new file mode 100644 index 00000000..539b7d90 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/PdmQlOption.java @@ -0,0 +1,71 @@ +package org.nl.system.service.ql.dao; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.time.LocalDateTime; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 操作记录表 + *

+ * + * @author generator + * @since 2023-04-25 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("pdm_ql_option") +public class PdmQlOption implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 项目id + */ + private String optionId; + + /** + * 检测类型 + */ + private String type; + + /** + * 单据 + */ + private String orderno; + + /** + * 数据 + */ + private String optionDate; + /** + * 业务类 + */ + private String bussclass; + + /** + * 创建人姓名 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建人 + */ + private String createId; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.java new file mode 100644 index 00000000..bef30b5e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.java @@ -0,0 +1,16 @@ +package org.nl.system.service.ql.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.ql.dao.PdmQlOption; + +/** + *

+ * 操作记录表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-04-25 + */ +public interface PdmQlOptionMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.xml new file mode 100644 index 00000000..59e9f798 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/dao/mapper/PdmQlOptionMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/impl/PdmQlOptionServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/impl/PdmQlOptionServiceImpl.java new file mode 100644 index 00000000..9ee94dc5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/ql/impl/PdmQlOptionServiceImpl.java @@ -0,0 +1,20 @@ +package org.nl.system.service.ql.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.system.service.ql.IPdmQlOptionService; +import org.nl.system.service.ql.dao.PdmQlOption; +import org.nl.system.service.ql.dao.mapper.PdmQlOptionMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 操作记录表 服务实现类 + *

+ * + * @author generator + * @since 2023-04-25 + */ +@Service +public class PdmQlOptionServiceImpl extends ServiceImpl implements IPdmQlOptionService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java index 98a176c4..c3b2ae17 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/impl/StoragevehicleinfoServiceImpl.java @@ -92,49 +92,24 @@ public class StoragevehicleinfoServiceImpl implements StoragevehicleinfoService if (!ObjectUtil.isEmpty(jsonObject)) { throw new BadRequestException("此载具已存在"); } - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - - - String storagevehicle_type = (String) map.get("storagevehicle_type"); - String code = ""; - switch (storagevehicle_type) { - case "00": - code = "VEHICCLE_CODE_XMTPT"; - break; - case "01": - code = "VEHICCLE_CODE_CDMTP"; - break; - case "02": - code = "VEHICCLE_CODE_TLD"; - break; - case "03": - code = "VEHICCLE_CODE_TTP"; - break; - case "04": - code = "VEHICCLE_CODE_XMTPC"; - break; - case "05": - code = "VEHICCLE_CODE_LX"; - break; - } JSONArray resultCodeArr = new JSONArray(); int num = MapUtil.getInt(map, "num"); for (int i = 0; i < num; i++) { StoragevehicleinfoDto dto = new StoragevehicleinfoDto(); dto.setStoragevehicle_id(IdUtil.getSnowflake(1, 1).nextId()); - dto.setStoragevehicle_code(CodeUtil.getNewCode(code)); - dto.setCreate_id(currentUserId); + dto.setStoragevehicle_code((String) map.get("storagevehicle_code")); + dto.setCreate_id(SecurityUtils.getCurrentUserId()); dto.setStoragevehicle_name(dto.getStoragevehicle_code()); - dto.setCreate_name(nickName); - dto.setUpdate_id(currentUserId); - dto.setUpdate_name(nickName); + dto.setCreate_name(SecurityUtils.getCurrentNickName()); + dto.setUpdate_id(SecurityUtils.getCurrentUserId()); + dto.setUpdate_name(SecurityUtils.getCurrentNickName()); dto.setUpdate_time(DateUtil.now()); dto.setCreate_time(DateUtil.now()); + dto.setOverstruct_type((String) map.get("overstruct_type")); dto.setStoragevehicle_type((String) map.get("storagevehicle_type")); JSONObject json = JSONObject.parseObject(JSON.toJSONString(dto)); wo.insert(json); - resultCodeArr.add(dto.getStoragevehicle_code()); + resultCodeArr.add(dto); } return resultCodeArr; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls index 490d5c3a..cf19a466 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdme.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls index 52df3b86..d7f777eb 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdpb.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index a2020825..f96bbad7 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls differ diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index a8eb0377..c34bbfab 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -18,6 +18,7 @@ import org.nl.wms.pda.service.CacheLineHandService; import org.nl.wms.sch.tasks.SpeMachineryTask; import org.nl.wms.sch.tasks.TaskScheduleService; import org.nl.wms.sch.tasks.WashMachineryTask; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -30,16 +31,12 @@ import java.util.Map; * @date 2021-07-21 **/ @RestController -@RequiredArgsConstructor @Api(tags = "acs接收wms") @RequestMapping("/api/acsToWms/task") @Slf4j @SaIgnore public class AcsToWmsController { private final AcsToWmsService acsToWmsService; - private final SpeMachineryTask speMachineryTask; - private final CacheLineHandService cacheLineHandService; - private final TaskScheduleService taskScheduleService; private final WashMachineryTask washMachineryTask; @PostMapping("/apply") @@ -74,7 +71,7 @@ public class AcsToWmsController { @Log("ACS给WMS下发工单完成状态") @ApiOperation("ACS给WMS下发工单完成状态") @SaIgnore - public ResponseEntity orderFinish(@RequestBody JSONObject param) { + public ResponseEntity orderStatus(@RequestBody JSONObject param) { return new ResponseEntity<>(acsToWmsService.orderStatus(param), HttpStatus.OK); } @@ -136,4 +133,11 @@ public class AcsToWmsController { washMachineryTask.createTask(new JSONObject(MapOf.of("device_code","QX03"))); return null; } + @PostMapping("/taskPublish") + @Log("向wms反实施数量") + @ApiOperation("向wms反订单实施数量") + @SaIgnore + public void taskScheduleService(){ + taskScheduleService.taskPublish(); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 9e63bbde..0482a961 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -14,11 +14,14 @@ import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; +import org.nl.common.utils.OptionRecord; import org.nl.common.utils.RedissonUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.AcsToWmsService; import org.nl.wms.pda.service.CacheLineHandService; +import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.service.TaskService; import org.nl.wms.sch.service.dto.TaskDto; import org.nl.wms.sch.tasks.SpeMachineryTask; @@ -27,66 +30,54 @@ import org.nl.wms.sch.tasks.callMaterial.WrapCallMaterialTask; import org.nl.wms.sch.tasks.sendEmpty.WrapSendEmptyTask; import org.nl.wms.sch.tasks.sendMaterial.PlotterSendMaterialTask; import org.nl.wms.sch.tasks.WashMachineryTask; +import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import javax.annotation.PostConstruct; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; +import java.util.function.Supplier; @Service -@RequiredArgsConstructor @Slf4j public class AcsToWmsServiceImpl implements AcsToWmsService{ - @Autowired - private TaskService taskService; - private final CacheLineHandService cacheLineHandService; - private final SpeMachineryTask speMachineryTask; - private final WashMachineryTask washMachineryTask; - private final PlotterSendMaterialTask plotterSendMaterialTask; - private final PlotterCallEmptyTask plotterCallEmptyTask; - private final WrapCallMaterialTask wrapCallMaterialTask; - private final WrapSendEmptyTask wrapSendEmptyTask; + public static Map Task_Collent = new HashMap<>(); + @Autowired + @Lazy + private TaskService taskService; + @Autowired + private CacheLineHandService cacheLineHandService; + + + @Override + @Transactional public Map apply(JSONObject param) { + Assert.notNull(param,"请求参数不存在"); Map result = MapOf.of("status", HttpStatus.OK.value(), "message", "ACS向WMS申请任务成功!"); - String type = param.getString("type"); - AcsTaskEnum taskEnum = AcsTaskEnum.getType(type, "REQUEST_"); + AcsTaskEnum taskEnum = AcsTaskEnum.getType(param.getString("type"), "REQUEST_"); + try { RedissonUtils.lock(()->{ - switch (taskEnum){ - //1.专机设备满料请求 2.专机设备缺料请求:专机 - case REQUEST_CALLTYPE_FULL: case REQUEST_CALLTYPE_EMP: - speMachineryTask.createTask(param); - break; - //清洗机缺料请求: - case REQUEST_WASH_EMP: - washMachineryTask.createTask(param); - break; - case REQUEST_PLOTTER_SEND_FULL: - plotterSendMaterialTask.createTask(param); - break; - case REQUEST_PLOTTER_CALL_EMP: - plotterCallEmptyTask.createTask(param); - break; - case REQUEST_WARP_CALL_FULL: - wrapCallMaterialTask.createTask(param); - break; - case REQUEST_WARP_SEND_EMP: - wrapSendEmptyTask.createTask(param); - break; - default: - throw new BadRequestException("任务请求类型错误!"); - } - },type,5); + //业务处理 + Task_Collent.get(taskEnum).createTask(param); + + },param.getString("type"),5); }catch (Exception ex){ result.put("status", HttpStatus.BAD_REQUEST.value()); result.put("message",ex.getMessage()); @@ -94,6 +85,13 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ return result; } + public static void main(String[] args) { + ArrayList list = new ArrayList<>(); + list.forEach(a->{ + a.getClass(); + }); + } + /** * 更新缓存线的点位实时任务信息 * ACS给WMS发送缓存线的实时任务编号 @@ -205,7 +203,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ public Map washOrderFinish(JSONObject param) { JSONObject result = new JSONObject(); try { - washMachineryTask.updateTaskStatus(param,StatusEnum.TASK_FINISH.getCode()); + SpringContextHolder.getBean(WashMachineryTask.class).updateTaskStatus(param,StatusEnum.TASK_FINISH.getCode()); } catch (Exception e){ result.put("status", 400); result.put("message", e.getMessage()); @@ -220,21 +218,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ public Map orderStatus(JSONObject orderJson) { JSONObject result = new JSONObject(); try { - String workorder_id = orderJson.getString("workorder_id"); - String order_status = orderJson.getString("status"); - String real_qty = orderJson.getString("real_qty"); - WQLObject wo = WQLObject.getWQLObject("PDM_produce_workOrder"); JSONObject map = new JSONObject(); - map.put("workorder_id", workorder_id); - map.put("order_status", order_status); - map.put("update_id", 1001001); - map.put("real_qty", real_qty); + map.put("workorder_id", orderJson.getString("workorder_id")); + map.put("workorder_status", orderJson.getString("status")); + map.put("update_id", "1"); + map.put("real_qty", orderJson.getString("real_qty")); map.put("current_device_code", ""); map.put("update_name", "acs"); map.put("update_time", DateUtil.now()); map.put("realproduceend_date", DateUtil.now()); - wo.update(map, "workorder_id = '" + workorder_id + "'"); - + WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'"); + OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status"))); } catch (Exception e){ result.put("status", 400); result.put("message", e.getMessage()); @@ -256,7 +250,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ String workorder_code = param.getString("workorder_code"); String status_type = param.getString("status_type"); String start_time = param.getString("start_time"); - String err_status_id = param.getString("err_status_id"); + String err_status_id = param.getString("error_code");//关联pdm_bi_devicerunerrorlink获取异常信息 JSONObject lastRecord = devRecordTab.query("device_code = '" + device_code + "' order by order_num desc limit 1").uniqueResult(0); if (lastRecord!=null){ lastRecord.put("end_time",DateUtil.now()); @@ -269,6 +263,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ } @Override + @Async public void feedDevQty(Map param) { WQLObject deviceTab = WQLObject.getWQLObject("pdm_bi_device"); if (CollectionUtils.isEmpty(param)){ @@ -277,8 +272,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ Iterator iterator = param.keySet().iterator(); while (iterator.hasNext()){ String deviceCode = (String)iterator.next(); - String qty = String.valueOf(param.get(deviceCode)); - deviceTab.update(MapOf.of("deviceinstor_qty",qty),"device_code = '"+deviceCode+"'"); + if (!StringUtils.isEmpty(deviceCode)){ + String qty = String.valueOf(param.get(deviceCode)); + deviceTab.update(MapOf.of("deviceinstor_qty",qty),"device_code = '"+deviceCode+"'"); + } } } @@ -310,6 +307,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ } @Override + @Async public void feedOrderRealQty(JSONObject param) { WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); if (CollectionUtils.isEmpty(param)){ @@ -317,10 +315,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ } Iterator iterator = param.keySet().iterator(); while (iterator.hasNext()){ - String workorder_id = iterator.next(); - String real_qty = param.getString(workorder_id); - wo.update(MapOf.of("real_qty",real_qty),"workorder_id = '"+workorder_id+"'"); + String workorderCode = iterator.next(); + String real_qty = param.getString(workorderCode); + wo.update(MapOf.of("real_qty",real_qty),"workorder_code = '"+workorderCode+"'"); } } - } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index 3790e1cc..57522e89 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -2,41 +2,23 @@ package org.nl.wms.ext.acs.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.digest.MD5; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.ConstantParam; -import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.utils.PointLockUtils; -import org.nl.wms.sch.tasks.SpeMachineryTask; -import org.redisson.api.RLock; -import org.redisson.api.RReadWriteLock; import org.redisson.api.RedissonClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.TransactionDefinition; -import org.springframework.transaction.TransactionStatus; -import org.springframework.transaction.support.DefaultTransactionDefinition; -import org.springframework.transaction.support.DefaultTransactionStatus; -import java.lang.reflect.Method; -import java.util.Arrays; -import java.util.HashMap; -import java.util.Iterator; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; -import java.util.concurrent.locks.ReentrantReadWriteLock; -import java.util.function.Function; import java.util.stream.Collectors; /* @@ -68,40 +50,40 @@ public class AgvInstService { //4.有则创建agv指令, // 没有则创建缓存架任务 public void fullMaster(JSONObject task){ - final String OPT_NAME = "满料请求:"; - WQLObject basePoint = WQLObject.getWQLObject("sch_base_point"); WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); WQLObject cacheLineSearch = WQLObject.getWQLObject("SCH_cacheLine_region_relation"); String point_code = task.getString("start_point_code"); String quantity = task.getString("quantity"); - JSONObject devicePoint = basePoint.query("point_code = '" + point_code + "' and is_delete = 0 and is_used = 1").uniqueResult(0); + JSONObject devicePoint = WQLObject.getWQLObject("sch_base_point").query("point_code = '" + point_code + "' and is_delete = 0 and is_used = 1").uniqueResult(0); String nextPoint; //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: String cacheVehile = ""; if (devicePoint.getString("next_region_code").equals(ConstantParam.SK_REGION)){ - JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","7","region_code", devicePoint.getString("next_region_code"),"qty",quantity)).process().getResultJSONArray(0); + //查询生坑重量是否超限:深坑需要乘以系数 + JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","7","region_code", devicePoint.getString("next_region_code"),"qty",Integer.valueOf(quantity)*ConstantParam.MATERAIL_RATIO)).process().getResultJSONArray(0); if (nextPointList.size() == 0){ - throw new BadRequestException(OPT_NAME+"深坑区域:"+devicePoint.getString("next_region_code")+"无可用点位"); + throw new BadRequestException("深坑清洗储料仓:"+devicePoint.getString("next_region_code")+"无可用点位"); } nextPoint = nextPointList.getJSONObject(0).getString("point_code"); }else { + //专机的话:需要判断专机上料口物料是否满足数量 JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","3","region_code", devicePoint.getString("next_region_code"),"qty",quantity)).process().getResultJSONArray(0); if (nextPointList.size() == 0){ JSONObject cacheLine = cacheLineSearch.query("region_code = '"+devicePoint.getString("region_code")+"'").uniqueResult(0); nextPoint = cacheLine.getString("cacheline_code"); //满料请求:查询缓存线空载具列表 - cacheVehile = getCacheVehile(nextPoint, null); + cacheVehile = getEmpCacheVehile(nextPoint, null); if (StringUtils.isBlank(cacheVehile)) { - throw new BadRequestException(OPT_NAME+"缓存线:"+nextPoint+"没有可用空载具"); + throw new BadRequestException("缓存线:"+nextPoint+"没有可用空载具"); } }else { nextPoint = nextPointList.getJSONObject(0).getString("point_code"); } } if (StringUtils.isBlank(nextPoint)){ - throw new BadRequestException(OPT_NAME+"设备:"+point_code+"没有可用点位"); + throw new BadRequestException("设备:"+point_code+"没有可用点位"); } - basePoint.update(MapOf.of("lock_type",StatusEnum.LOCK_ON.getCode(),"point_code = '"+nextPoint+"'")); + WQLObject.getWQLObject("sch_base_point").update(MapOf.of("task_id",task.getString("task_id"),"lock_type",StatusEnum.LOCK_ON.getCode(),"point_code = '"+nextPoint+"'")); task.put("vehicle_code",cacheVehile); task.put("next_point_code",nextPoint); task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); @@ -113,42 +95,34 @@ public class AgvInstService { //2.根据当前设备绑定的物料id,从缓存线中获取相同物料对应载具列表 //3.agv根据对应载具列表行进扫码匹配:匹配到对应物料则创建点对点任务 public void callMatter(JSONObject task){ - final String OPT_NAME = "专机缺料请求:"; - WQLObject basePointTable = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject cacheLineTable = WQLObject.getWQLObject("SCH_cacheLine_region_relation"); - WQLObject taskTable = WQLObject.getWQLObject("SCH_base_task"); //参数 - String point_code = task.getString("next_point_code"); String material_id = task.getString("material_id"); - - JSONObject devicePoint = basePointTable.query("point_code = '" + point_code + "' and is_delete = 0 and is_used = 1").uniqueResult(0); - - JSONObject cacheLine = cacheLineTable.query("region_code = '"+devicePoint.getString("region_code")+"' and is_active = '"+StatusEnum.STATUS_TRUE.getCode()+"'").uniqueResult(0); - Assert.notNull(cacheLine, String.format(OPT_NAME+"区域%s对应缓存线信息不存在", devicePoint.getString("region_code"))); + JSONObject devicePoint = WQLObject.getWQLObject("SCH_BASE_Point").query("point_code = '" + targetDevice + "' and is_delete = 0 and is_used = 1").uniqueResult(0); + JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getString("region_code")+"' and is_active = '"+StatusEnum.STATUS_TRUE.getCode()+"'").uniqueResult(0); + Assert.notNull(cacheLine, String.format("区域%s对应缓存线信息不存在", devicePoint.getString("region_code"))); //缓存线位置编码 :缺料请求获取缓存线满载具列表 String startPoint = cacheLine.getString("cacheline_code"); - String cacheVehile = getCacheVehile(startPoint, material_id); + String cacheVehile = getEmpCacheVehile(startPoint, material_id); if (StringUtils.isBlank(cacheVehile)) { - throw new BadRequestException(OPT_NAME+"缓存线:"+startPoint+"没有可用载具"); + throw new BadRequestException("缓存线:"+startPoint+"没有物料"+material_id+"对应可用载具"); } //判断当前物料载具已经任务分配数量:如果>物料已经分配任务。说明满了,不允许再分配 - JSONArray allocateTask = taskTable.query("point_code1 = '" + startPoint + "' and material_id = '" + material_id + "' and task_status <" + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + JSONArray allocateTask = WQLObject.getWQLObject("SCH_base_task").query("point_code1 = '" + startPoint + "' and material_id = '" + material_id + "' and task_status <" + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); if (allocateTask.size()>=cacheVehile.split(",").length){ - log.error(OPT_NAME+"callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(o-> ((JSONObject)o).getString("task_id")).collect(Collectors.joining(","))); - throw new BadRequestException(String.format(OPT_NAME+"缓存线%s上含物料%s的载具已分配完",startPoint,material_id)); + log.error("callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(o-> ((JSONObject)o).getString("task_id")).collect(Collectors.joining(","))); + throw new BadRequestException(String.format("缓存线%s上含物料%s的载具已分配完",startPoint,material_id)); } task.put("vehicle_code",cacheVehile); task.put("start_point_code",startPoint); task.put("return_point_code",startPoint); task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); task.put("update_time", DateUtil.now()); - taskTable.update(task); + WQLObject.getWQLObject("SCH_base_task").update(task); } - public String getCacheVehile(String cacheLine,String materialId){ + public String getEmpCacheVehile(String cacheLine, String materialId){ WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - StringBuffer sql = new StringBuffer("vehicle_status = '"); JSONArray runingTask = taskTable.query("point_code2 = '" + cacheLine + "' and task_status < '" + StatusEnum.TASK_FINISH.getCode() + "'").getResultJSONArray(0); String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); JSONArray result = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "6", "vehicle_status", status, "material_id", materialId)).process().getResultJSONArray(0); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java index a74fd217..c27a263f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/rest/ProduceWorkorderController.java @@ -48,7 +48,7 @@ public class ProduceWorkorderController { produceWorkorderService.create(dto); return new ResponseEntity<>(HttpStatus.CREATED); } - @PostMapping("/submits") + @PostMapping("/create") @Log("新增工单管理") @ApiOperation("新增工单管理") //@PreAuthorize("@el.check('produceWorkorder:add')") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java index 43dd4c7f..c25b0c46 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/impl/ProduceshiftorderServiceImpl.java @@ -14,9 +14,11 @@ import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.nl.common.enums.StatusEnum; import org.nl.common.enums.WorkerOrderEnum; import org.nl.common.utils.MapOf; +import org.nl.common.utils.OptionRecord; import org.nl.common.utils.api.CommonResult; import org.nl.common.utils.api.RestBusinessTemplate; import org.nl.modules.common.exception.BadRequestException; @@ -323,28 +325,44 @@ public class ProduceshiftorderServiceImpl implements ProduceshiftorderService{ @Override @Transactional(rollbackFor = Exception.class) public CommonResult> openStart(JSONObject param) { - String currentUserId = SecurityUtils.getCurrentUserId(); - String nickName = SecurityUtils.getCurrentNickName(); - WQLObject wo = WQLObject.getWQLObject("pdm_produce_workorder"); //获取前台传入的开工的工单信息 String workorder_id = param.getString("workorder_id"); - String device_code = param.getString("device_code"); //1-创建、2-下发、3-生产中、4-暂停、5-完成 - JSONObject result = wo.query("current_device_code = '" + device_code + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); + JSONObject result = WQLObject.getWQLObject("pdm_produce_workorder").query("current_device_code = '" + param.getString("device_code") + "' and workorder_status in ('2','3','4') and workorder_id != '" + workorder_id + "'").uniqueResult(0); //判断该工单状态 if(ObjectUtil.isNotEmpty(result)) { throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); } - //TODO:开工时修改生产班次工单表 生产设备、以及工单状态 - wo.update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", currentUserId, "update_name", nickName, "update_time", DateUtil.now())); JSONArray array = new JSONArray(); - JSONObject order = new JSONObject(MapOf.of("workorder_id", workorder_id, "type", WorkerOrderEnum.SEND.getCode())); + JSONObject order = packageForm(workorder_id); array.add(order); //下发acs - Map resp = wmsToAcsService.orderStatusUpdate(array); + WQLObject.getWQLObject("pdm_produce_workorder").update(MapOf.of("workorder_id", workorder_id, "workorder_status", WorkerOrderEnum.SEND.getCode(), "update_id", SecurityUtils.getCurrentUserId(), "update_name", SecurityUtils.getCurrentNickName(), "update_time", DateUtil.now())); + Map resp = wmsToAcsService.order(array); + //TODO:记录表记录操作 + OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,workorder_id,MapOf.of("workorder_status", WorkerOrderEnum.SEND.getCode())); return RestBusinessTemplate.execute(() -> resp); } + @NotNull + private JSONObject packageForm(String workorder_id) { + JSONObject workOrder = WQLObject.getWQLObject("pdm_produce_workorder").query(" workorder_id = '" + workorder_id + "'").uniqueResult(0); + JSONObject form = new JSONObject(); + JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + workOrder.getString("material_id") + "'").uniqueResult(0); + JSONObject device_code = WQLObject.getWQLObject("pdm_bi_device").query("device_code = '" +workOrder.getString("current_device_code")+ "'").uniqueResult(0); + form.put("workorder_id",workOrder.get("workorder_id")); + form.put("workorder_code",workOrder.get("workorder_code")); + form.put("qty", workOrder.getString("plan_qty")); + form.put("outupperlimit_qty",device_code.getString("outupperlimit_qty")); + form.put("material_id",workOrder.get("material_id")); + form.put("material_name",material.get("material_name")); + form.put("material_code",material.get("material_code")); + form.put("material_spec",material.get("material_spec")); + form.put("device_code",workOrder.getString("current_device_code")); + form.put("is_needmove",workOrder.getString("is_needmove")); + return form; + } + /** * 报工操作 * diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQinspectionPointController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQinspectionPointController.java new file mode 100644 index 00000000..6ac51a82 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQinspectionPointController.java @@ -0,0 +1,66 @@ +package org.nl.wms.ql.controller.inspection; + + +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.wms.ql.service.inspection.IMdQlInspectionpointService; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dto.InspectionQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +/** + *

+ * 物料检测项点 前端控制器 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@RestController +@RequestMapping("/api/mdQlInspectionpoint") +public class MdQinspectionPointController { + + @Autowired + private IMdQlInspectionpointService inspectionpointService; + + @GetMapping() + public ResponseEntity query(InspectionQuery query, PageQuery pageQuery){ + return new ResponseEntity<>(TableDataInfo.build(inspectionpointService.page(query,pageQuery)),HttpStatus.OK); + } + + @PostMapping("/create") + public ResponseEntity create(@RequestBody JSONObject req){ + Assert.notNull(req,"参数不能为空"); + inspectionpointService.create(req); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/update") + public ResponseEntity update(@RequestBody JSONObject req){ + Assert.notNull(req,"参数不能为空"); + MdQlInspectionpoint form = req.toJavaObject(MdQlInspectionpoint.class); + form.setUpdateId(SecurityUtils.getCurrentUserId()); + form.setUpdateName(SecurityUtils.getCurrentNickName()); + form.setUpdateTime(new Date()); + inspectionpointService.updateById(form); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/delete") + public ResponseEntity delete(@RequestBody List ids){ + Assert.notNull(ids,"参数不能为空"); + inspectionpointService.removeByIds(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQlMaterialinspectionController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQlMaterialinspectionController.java new file mode 100644 index 00000000..2b72dfa2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/inspection/MdQlMaterialinspectionController.java @@ -0,0 +1,87 @@ +package org.nl.wms.ql.controller.inspection; + + +import cn.dev33.satoken.annotation.SaIgnore; +import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.google.common.collect.Lists; +import org.jetbrains.annotations.NotNull; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.ql.service.inspection.IMdQlInspectionpointService; +import org.nl.wms.ql.service.inspection.IMdQlMaterialinspectionService; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; +import org.nl.wms.ql.service.inspection.dto.MaterialInspectionQuery; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.TransactionDefinition; +import org.springframework.transaction.TransactionStatus; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.DefaultTransactionDefinition; +import org.springframework.util.CollectionUtils; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + *

+ * 物料检测项点 前端控制器 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@RestController +@RequestMapping("/api/materialInspection") +public class MdQlMaterialinspectionController { + + @Autowired + private IMdQlInspectionpointService inspectionpointService; + @Autowired + private IMdQlMaterialinspectionService materialinspectionService; + + + @GetMapping("/mst") + @SaIgnore + public ResponseEntity query(MaterialInspectionQuery query, PageQuery pageQuery){ + return new ResponseEntity<>(TableDataInfo.build(materialinspectionService.pageQuery(query,pageQuery)),HttpStatus.OK); + } + + @PostMapping("/create") + public ResponseEntity create(@RequestBody JSONObject req){ + Assert.notNull(req,"参数不能为空"); + materialinspectionService.create(req); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/update") + public ResponseEntity update(@RequestBody JSONObject req){ + Assert.notNull(req,"参数不能为空"); + MdQlMaterialinspection form = req.toJavaObject(MdQlMaterialinspection.class); + form.setUpdateId(SecurityUtils.getCurrentUserId()); + form.setUpdateName(SecurityUtils.getCurrentNickName()); + form.setUpdateTime(new Date()); + materialinspectionService.updateById(form); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/delete") + public ResponseEntity delete(@RequestBody List ids){ + Assert.notNull(ids,"参数不能为空"); + inspectionpointService.removeByIds(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/report/MdMeInspectionsheetController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/report/MdMeInspectionsheetController.java new file mode 100644 index 00000000..5c32a740 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/controller/report/MdMeInspectionsheetController.java @@ -0,0 +1,21 @@ +package org.nl.wms.ql.controller.report; + + +import org.springframework.web.bind.annotation.RequestMapping; + +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 质检报告 前端控制器 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@RestController +@RequestMapping("/mdMeInspectionsheet") +public class MdMeInspectionsheetController { + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlInspectionpointService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlInspectionpointService.java new file mode 100644 index 00000000..69b1989b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlInspectionpointService.java @@ -0,0 +1,24 @@ +package org.nl.wms.ql.service.inspection; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dto.InspectionQuery; + +/** + *

+ * 检测项点 服务类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface IMdQlInspectionpointService extends IService { + + void create(JSONObject form); + + Page page(InspectionQuery query, PageQuery pageQuery); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlMaterialinspectionService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlMaterialinspectionService.java new file mode 100644 index 00000000..f05295b2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/IMdQlMaterialinspectionService.java @@ -0,0 +1,22 @@ +package org.nl.wms.ql.service.inspection; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; +import org.nl.wms.ql.service.inspection.dto.MaterialInspectionQuery; + +/** + *

+ * 物料检测项点 服务类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface IMdQlMaterialinspectionService extends IService { + void create(JSONObject form); + Page pageQuery(MaterialInspectionQuery query, PageQuery pageQuery); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlInspectionpoint.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlInspectionpoint.java new file mode 100644 index 00000000..fb2c75c2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlInspectionpoint.java @@ -0,0 +1,87 @@ +package org.nl.wms.ql.service.inspection.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import java.util.Date; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 检测项点 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_ql_inspectionpoint") +public class MdQlInspectionpoint implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 项目id + */ + @TableId(value = "inspection_id", type = IdType.NONE) + private String inspectionId; + + /** + * 项目编码 + */ + private String inspectionCode; + + /** + * 项目名称 + */ + private String name; + + /** + * 检测类型 + */ + private String inspectionType; + + /** + * 标准值 + */ + private String standard; + + /** + * 创建人姓名 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + /** + * 创建人 + */ + private String createId; + + /** + * 修改人 + */ + private String updateId; + + /** + * 修改人姓名 + */ + private String updateName; + /** + * 备注 + */ + private String remark; + + /** + * 修改时间 + */ + private Date updateTime; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlMaterialinspection.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlMaterialinspection.java new file mode 100644 index 00000000..3f146c32 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/MdQlMaterialinspection.java @@ -0,0 +1,81 @@ +package org.nl.wms.ql.service.inspection.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 物料检测项点 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_ql_materialinspection") +public class MdQlMaterialinspection implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 物料id + */ + @TableId(value = "material_code") + private String material_code; + /** + * 检测项名称 + */ + private String name; + + /** + * 项目集合{"项目编号":"true"/123.000~123.500} + */ + private String inspections; + + /** + * 版本号 + */ + private String version; + + /** + * 创建人 + */ + private String createId; + + /** + * 创建人姓名 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改人 + */ + private String updateId; + + /** + * 修改人姓名 + */ + private String updateName; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 是否启用 + */ + private Boolean isUsed; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/TypeHandler/InspectionArrayHandler.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/TypeHandler/InspectionArrayHandler.java new file mode 100644 index 00000000..f3d5af8e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/TypeHandler/InspectionArrayHandler.java @@ -0,0 +1,44 @@ +package org.nl.wms.ql.service.inspection.dao.TypeHandler; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jdk.nashorn.internal.parser.JSONParser; +import org.apache.ibatis.type.*; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; + +import java.sql.CallableStatement; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.List; + +/* + * @author ZZQ + * @Date 2023/4/24 09:50 + */ +@MappedJdbcTypes(JdbcType.VARCHAR) +@MappedTypes(JSONArray.class) +public class InspectionArrayHandler extends BaseTypeHandler> { + @Override + public void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException { + ps.setString(i, JSON.toJSONString(parameter)); + } + + @Override + public List getNullableResult(ResultSet rs, String columnName) throws SQLException { + return JSONArray.parseArray(rs.getString(columnName),MdQlInspectionpoint.class); + } + + @Override + public List getNullableResult(ResultSet rs, int columnIndex) throws SQLException { + return JSONArray.parseArray(rs.getString(columnIndex),MdQlInspectionpoint.class); + + } + + @Override + public List getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { + return JSONArray.parseArray(cs.getString(columnIndex),MdQlInspectionpoint.class); + + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlInspectionpointMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlInspectionpointMapper.java new file mode 100644 index 00000000..dafea380 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlInspectionpointMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.ql.service.inspection.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; + +/** + *

+ * 检测项点 Mapper 接口 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface MdQlInspectionpointMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.java new file mode 100644 index 00000000..4fab6aad --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.java @@ -0,0 +1,22 @@ +package org.nl.wms.ql.service.inspection.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; +import org.nl.wms.ql.service.inspection.dto.MaterialInspectionQuery; +import org.nl.wms.ql.service.inspection.dto.MdQlMaterialinspectionDto; + +import java.util.List; + +/** + *

+ * 物料检测项点 Mapper 接口 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface MdQlMaterialinspectionMapper extends BaseMapper { + + List pageQuery(@Param("query") MaterialInspectionQuery query); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.xml new file mode 100644 index 00000000..8cee7ee9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dao/mapper/MdQlMaterialinspectionMapper.xml @@ -0,0 +1,27 @@ + + + + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/InspectionQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/InspectionQuery.java new file mode 100644 index 00000000..634b14ee --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/InspectionQuery.java @@ -0,0 +1,19 @@ +package org.nl.wms.ql.service.inspection.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.system.service.dept.dao.SysDept; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; + +import java.util.List; + +/* + * @author ZZQ + * @Date 2022/12/15 4:20 下午 + */ +@Data +public class InspectionQuery extends BaseQuery { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MaterialInspectionQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MaterialInspectionQuery.java new file mode 100644 index 00000000..18baf548 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MaterialInspectionQuery.java @@ -0,0 +1,15 @@ +package org.nl.wms.ql.service.inspection.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; + +/* + * @author ZZQ + * @Date 2022/12/15 4:20 下午 + */ +@Data +public class MaterialInspectionQuery extends BaseQuery { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MdQlMaterialinspectionDto.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MdQlMaterialinspectionDto.java new file mode 100644 index 00000000..905f94da --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/dto/MdQlMaterialinspectionDto.java @@ -0,0 +1,83 @@ +package org.nl.wms.ql.service.inspection.dto; + +import com.alibaba.fastjson.JSONArray; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +/** + *

+ * 物料检测项点 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Data +public class MdQlMaterialinspectionDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 物料id + */ + private String materialCode; + /** + * 检测项名称 + */ + private String name; + + /** + * 项目集合{"项目编号":"true"/123.000~123.500} + */ + private List inspections; + + /** + * 版本号 + */ + private String version; + + /** + * 创建人 + */ + private String createId; + + /** + * 创建人姓名 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改人 + */ + private String updateId; + + /** + * 修改人姓名 + */ + private String updateName; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 是否启用 + */ + private Boolean isUsed; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlInspectionpointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlInspectionpointServiceImpl.java new file mode 100644 index 00000000..7400d978 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlInspectionpointServiceImpl.java @@ -0,0 +1,48 @@ +package org.nl.wms.ql.service.inspection.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.jsonwebtoken.lang.Assert; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.system.util.CodeUtil; +import org.nl.system.service.dept.dao.SysDept; +import org.nl.wms.ql.service.inspection.IMdQlInspectionpointService; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dao.mapper.MdQlInspectionpointMapper; +import org.nl.wms.ql.service.inspection.dto.InspectionQuery; +import org.springframework.stereotype.Service; + +import java.util.Date; + +/** + *

+ * 检测项点 服务实现类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Service +public class MdQlInspectionpointServiceImpl extends ServiceImpl implements IMdQlInspectionpointService { + + + @Override + public void create(JSONObject form) { + Assert.notNull(form,"请求参数不能为空"); + MdQlInspectionpoint param = form.toJavaObject(MdQlInspectionpoint.class); + param.setInspectionId(IdUtil.getStringId()); + param.setInspectionCode(CodeUtil.getNewCode("INSPECTION_POINT")); + param.setCreateName(SecurityUtils.getCurrentNickName()); + param.setCreateId(SecurityUtils.getCurrentUserId()); + param.setCreateTime(new Date()); + this.save(param); + } + + @Override + public Page page(InspectionQuery query, PageQuery pageQuery) { + return this.page(pageQuery.build(MdQlInspectionpoint.class), query.build()); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlMaterialinspectionServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlMaterialinspectionServiceImpl.java new file mode 100644 index 00000000..8c19ac6f --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/inspection/impl/MdQlMaterialinspectionServiceImpl.java @@ -0,0 +1,55 @@ +package org.nl.wms.ql.service.inspection.impl; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.pagehelper.PageHelper; +import io.jsonwebtoken.lang.Assert; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.common.utils.SecurityUtils; +import org.nl.system.service.user.dto.SysUserDetail; +import org.nl.wms.ql.service.inspection.IMdQlMaterialinspectionService; +import org.nl.wms.ql.service.inspection.dao.MdQlInspectionpoint; +import org.nl.wms.ql.service.inspection.dao.MdQlMaterialinspection; +import org.nl.wms.ql.service.inspection.dao.mapper.MdQlMaterialinspectionMapper; +import org.nl.wms.ql.service.inspection.dto.MaterialInspectionQuery; +import org.nl.wms.ql.service.inspection.dto.MdQlMaterialinspectionDto; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; +import java.util.List; + +/** + *

+ * 物料检测项点 服务实现类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Service +public class MdQlMaterialinspectionServiceImpl extends ServiceImpl implements IMdQlMaterialinspectionService { + + @Resource + MdQlMaterialinspectionMapper mdQlMaterialinspectionMapper; + @Override + public void create(JSONObject form) { + Assert.notNull(form,"请求参数不能为空"); + MdQlMaterialinspection param = form.toJavaObject(MdQlMaterialinspection.class); + param.setInspections(IdUtil.getStringId()); + param.setCreateName(SecurityUtils.getCurrentNickName()); + param.setCreateId(SecurityUtils.getCurrentUserId()); + param.setCreateTime(new Date()); + this.save(param); + } + + @Override + public Page pageQuery(MaterialInspectionQuery query, PageQuery pageQuery) { + return this.page(pageQuery.build(MdQlMaterialinspection.class), query.build()); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/IMdMeInspectionsheetService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/IMdMeInspectionsheetService.java new file mode 100644 index 00000000..27f0499d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/IMdMeInspectionsheetService.java @@ -0,0 +1,16 @@ +package org.nl.wms.ql.service.report; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.wms.ql.service.report.dao.MdMeInspectionsheet; + +/** + *

+ * 质检报告 服务类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface IMdMeInspectionsheetService extends IService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/MdMeInspectionsheet.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/MdMeInspectionsheet.java new file mode 100644 index 00000000..89664d96 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/MdMeInspectionsheet.java @@ -0,0 +1,90 @@ +package org.nl.wms.ql.service.report.dao; + +import com.baomidou.mybatisplus.annotation.TableName; +import java.util.Date; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 质检报告 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("md_me_inspectionsheet") +public class MdMeInspectionsheet implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 质检id + */ + private String inspectionsheetId; + + /** + * 质检编号 + */ + private String inspectionsheetCode; + + /** + * 物料id + */ + private String materialId; + + /** + * 批次 + */ + private String pcsn; + + /** + * 质检单类型 + */ + private String type; + + /** + * 检测项目集合 + */ + private String inspections; + + /** + * 创建人 + */ + private String createId; + + /** + * 创建人姓名 + */ + private String createName; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 修改人 + */ + private String updateId; + + /** + * 修改人姓名 + */ + private String updateName; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 是否删除 + */ + private Boolean isDeleted; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.java new file mode 100644 index 00000000..d8eccc86 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.ql.service.report.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.wms.ql.service.report.dao.MdMeInspectionsheet; + +/** + *

+ * 质检报告 Mapper 接口 + *

+ * + * @author generator + * @since 2023-04-23 + */ +public interface MdMeInspectionsheetMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.xml new file mode 100644 index 00000000..3b53658d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/dao/mapper/MdMeInspectionsheetMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/impl/MdMeInspectionsheetServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/impl/MdMeInspectionsheetServiceImpl.java new file mode 100644 index 00000000..ad326b70 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ql/service/report/impl/MdMeInspectionsheetServiceImpl.java @@ -0,0 +1,21 @@ +package org.nl.wms.ql.service.report.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.ql.service.report.IMdMeInspectionsheetService; +import org.nl.wms.ql.service.report.dao.MdMeInspectionsheet; +import org.nl.wms.ql.service.report.dao.mapper.MdMeInspectionsheetMapper; +import org.springframework.stereotype.Service; + +/** + *

+ * 质检报告 服务实现类 + *

+ * + * @author generator + * @since 2023-04-23 + */ +@Service +public class MdMeInspectionsheetServiceImpl extends ServiceImpl implements IMdMeInspectionsheetService { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java index 9d806747..a0b71893 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/service/impl/PointServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.function.Consumer; /** * @author ldjun @@ -266,13 +267,17 @@ public class PointServiceImpl implements PointService { @Override public List selectPoint(String type) { List list = new ArrayList<>(); - Map map = new HashMap<>(); - map.put("text","ARK01"); - map.put("value","A区入库01"); - list.add(map); if (!StringUtils.isEmpty(type)){ if (type.equals("1")){ JSONArray result = this.getPoint(MapOf.of("area_type", ConstantParam.RK_POINT)); + if (result.size()>0){ + result.forEach(o -> { + Map map1 = new HashMap<>(); + map1.put("value",((JSONObject)o).getString("point_code")); + map1.put("text",((JSONObject)o).getString("point_name")); + list.add(map1); + }); + } } if (type.equals("2")){ Pageable pageable =PageRequest.of(0,999); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java index bfa64e94..06d3d36a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/SpeMachineryTask.java @@ -2,7 +2,6 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -12,6 +11,7 @@ import org.nl.common.ConstantParam; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.IdUtil; import org.nl.common.utils.MapOf; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; @@ -65,29 +65,23 @@ public class SpeMachineryTask extends AbstractAcsTask { @Override public String createTask(JSONObject param) { - WQLObject taskTab = WQLObject.getWQLObject("sch_base_task"); - WQLObject workOrder = WQLObject.getWQLObject("PDM_produce_workOrder"); - String workorder = param.getString("workorder_code");// - String point_code = param.getString("device_code"); - String quantity = param.getString("quantity"); - String type = param.getString("type"); - JSONObject order = workOrder.query("workorder_code = '" + workorder + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); - Assert.notNull(order, String.format("下发工单%s不存在未完成工单", workorder)); + + JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); + Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); JSONObject form = null; - if (AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type)){ - JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); - form = new JSONObject(MapOf.of("start_point_code",point_code, + + if (AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(param.getString("type"))){ + JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", param.getString("device_code"), "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); + form = new JSONObject(MapOf.of("start_point_code",param.getString("device_code"), "next_point_code","","return_point_code", empPoint,"vehicle_code", - "","product_area","quantity", quantity,order.getString("product_area"),"type",type,"material_id", order.getString("material_id"))); + "","product_area","quantity", param.getString("quantity"),order.getString("product_area"),"type",param.getString("type"),"material_id", order.getString("material_id"))); } - if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(type)){ + if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(param.getString("type"))){ form = new JSONObject(MapOf.of("start_point_code","", - "next_point_code",point_code,"return_point_code", "","vehicle_code", - "","product_area","quantity", quantity,order.getString("product_area"),"type",type,"material_id", order.getString("material_id"))); + "next_point_code",param.getString("device_code"),"return_point_code", "","vehicle_code", + "","product_area","quantity", param.getString("quantity"),order.getString("product_area"),"type",param.getString("type"),"material_id", order.getString("material_id"))); } - JSONObject task = new JSONObject(); - String taskdtl_id = IdUtil.getSnowflake(1, 1).nextId() + ""; - packageParam(type, form, task, taskdtl_id); + JSONObject task = packageParam(param.getString("type"), form); WQLObject.getWQLObject("SCH_BASE_Task").insert(task); try { pointConfirm(task); @@ -95,42 +89,39 @@ public class SpeMachineryTask extends AbstractAcsTask { }catch (Exception ex){ task.put("task_status",TaskStatusEnum.SURE_START_ERROR.getCode()); task.put("remark",ex.getMessage()); - taskTab.update(task); + WQLObject.getWQLObject("sch_base_task").update(task); } - return taskdtl_id; + return task.getString("task_id"); } - private void packageParam(String type, JSONObject form, JSONObject task, String taskdtl_id) { + private JSONObject packageParam(String type, JSONObject reqestPram) { + JSONObject task = new JSONObject(); 参数封装:{ - String task_name = form.getString("task_name"); - String start_point_code = form.getString("point_code1"); - String next_point_code = form.getString("point_code2"); - String vehicle_code = form.getString("vehicle_code"); - String vehicle_code2 = form.getString("vehicle_code2"); - String material_id = form.getString("material_id"); - task.put("task_id", taskdtl_id); - task.put("task_name", task_name); + task.put("task_id", IdUtil.getStringId()); + task.put("task_name", reqestPram.getString("task_name")); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); task.put("task_type", type); task.put("task_status", TaskStatusEnum.CREATED.getCode()); - task.put("point_code1", start_point_code); - task.put("point_code2", next_point_code); - task.put("vehicle_code2", vehicle_code2); - task.put("vehicle_code", vehicle_code); - task.put("material_id", material_id); + task.put("point_code1", reqestPram.getString("point_code1")); + task.put("point_code2", reqestPram.getString("point_code2")); + task.put("vehicle_code2", reqestPram.getString("vehicle_code2")); + task.put("vehicle_code", reqestPram.getString("vehicle_code")); + task.put("material_id", reqestPram.getString("material_id")); task.put("handle_class", this.getClass().getName()); task.put("finished_type", "1"); - task.put("is_delete", "0"); - String currentUserId = SecurityUtils.getCurrentUserId(); - task.put("create_id", currentUserId); + task.put("is_delete", StatusEnum.LOCK_OFF.getCode()); + task.put("create_id", SecurityUtils.getCurrentUserId()); task.put("create_name", SecurityUtils.getCurrentNickName()); - task.put("update_optid", currentUserId); - task.put("update_optname", SecurityUtils.getCurrentNickName()); + task.put("update_id", currentUserId); + task.put("update_name", SecurityUtils.getCurrentNickName()); task.put("create_time", DateUtil.now()); task.put("update_time", DateUtil.now()); - task.put("priority", "1");} + task.put("priority", "1"); + } + return task; } + @Override public void cancel(String taskId) { log.info(OPT_NAME+"cancel taskID:{}",taskId); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/WashMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/WashMachineryTask.java index c2e72603..e87a4918 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/WashMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/tasks/WashMachineryTask.java @@ -12,6 +12,7 @@ import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.checkerframework.checker.units.qual.A; +import org.jetbrains.annotations.NotNull; import org.nl.common.ConstantParam; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; @@ -97,51 +98,26 @@ public class WashMachineryTask extends AbstractAcsTask { @Override @SneakyThrows public String createTask(JSONObject param) { - WQLObject pointTab = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject materialTab = WQLObject.getWQLObject("md_me_materialbase"); - String pointCode = param.getString("device_code"); - JSONObject device = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "8", "point_code", pointCode)).process().uniqueResult(0); + //清洗机设备 + JSONObject device = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "8", "point_code", param.getString("device_code"))).process().uniqueResult(0); //is_used = '0'人工下料:入料仓上线inupperlimit_qty;is_artificial人工 - Double inupperlimitQty = device.getDouble("inupperlimit_qty"); - String deviceCode = device.getString("device_code"); - String artificial = device.getString("is_artificial").equals("1")?"0":"1"; - JSONArray points = pointTab.query("region_code = 'SKQX' and material_id is not null and point_status = '2' and is_used = '"+artificial+"' order by vehicle_qty desc").getResultJSONArray(0); + JSONArray points = WQLObject.getWQLObject("SCH_BASE_Point").query("region_code = "+ConstantParam.SK_REGION+" and material_id is not null and point_status = '2' and is_used = '"+(device.getString("is_artificial").equals("1")?"0":"1")+"' order by vehicle_qty desc").getResultJSONArray(0); //查询深坑相同物料类型的点位:深坑单位:重量 if (points.size()>0){ - Map> materialCollent = points.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("material_id"))); - //查询清洗设备最大重量 - Resource resource = loader.getResource("classpath:/groovyFile.groovy"); - Script script = groovyShell.parse(resource.getFile()); - ArrayList result = (ArrayList)script.invokeMethod("getPoints", new Object[]{points, materialCollent, inupperlimitQty}); - //确认acs参数 创建工单下发acs - if (!CollectionUtils.isEmpty(result)){ - String material_id = result.get(0).getString("material_id"); - JSONObject material = materialTab.query("material_id = '" + material_id + "' and is_delete = 0").uniqueResult(0); - Double qty = result.stream().mapToDouble(value -> value.getDouble("qty")).sum(); - PdmProduceWashorder washorder = new PdmProduceWashorder(); - washorder.setWorkorderId(IdUtil.getStringId()); - washorder.setWorkorderCode(IdUtil.getStringId()); - washorder.setIsNeedmove("0"); - washorder.setDeviceCode(deviceCode); - washorder.setMaterialWeight(new BigDecimal(qty)); - washorder.setMaterialCode(material.getString("material_code")); - washorder.setCreateTime(DateUtil.now()); - washorder.setInDevices(result.stream().map(a->a.getString("point_code")).collect(Collectors.joining(","))); - washorder.setProductArea(device.getString("product_area")); - washorder.setCreateId("1"); - washorder.setCreateName("acs"); - washorder.setStatus(StatusEnum.TASK_CREATE.getCode()); + ArrayList SKPoints = getDistributeSKPoint(device, points); + //确认acs参数 创建工单下发acs + if (!CollectionUtils.isEmpty(SKPoints)){ + PdmProduceWashorder washorder = packageParam(device, SKPoints); //下发" JSONArray request = new JSONArray(); - JSONObject jsonObject = new JSONObject(MapOf.of("workorder_id", washorder.getWorkorderId() + request.add(new JSONObject(MapOf.of("workorder_id", washorder.getWorkorderId() , "workorder_code", washorder.getWorkorderCode() , "qty", washorder.getMaterialWeight() , "material_code", washorder.getMaterialCode() - , "device_code", pointCode + , "device_code", param.getString("device_code") , "is_needmove", "0" , "in_devices", washorder.getInDevices() - )); - request.add(jsonObject); + ))); Map response = wmsToAcsService.order(request); if (response.get("status").equals(HttpStatus.BAD_REQUEST)){ washorder.setErrorInfo((String) response.get("message")); @@ -154,6 +130,38 @@ public class WashMachineryTask extends AbstractAcsTask { return null; } + private ArrayList getDistributeSKPoint(JSONObject device, JSONArray points) throws IOException { + Map> materialCollent = points.stream() + .collect(Collectors.groupingBy(o -> ((JSONObject) o) + .getString("material_id"))); + //查询清洗设备最大重量 + Resource resource = loader.getResource("classpath:/groovyFile.groovy"); + Script script = groovyShell.parse(resource.getFile()); + ArrayList result = (ArrayList)script.invokeMethod("getPoints", new Object[]{points, materialCollent, device.getDouble("inupperlimit_qty")}); + return result; + } + + @NotNull + private PdmProduceWashorder packageParam(JSONObject device, ArrayList SKPoints) { + + JSONObject material = WQLObject.getWQLObject("md_me_materialbase").query("material_id = '" + SKPoints.get(0).getString("material_id") + "' and is_delete = 0").uniqueResult(0); + + PdmProduceWashorder washorder = new PdmProduceWashorder(); + washorder.setWorkorderId(IdUtil.getStringId()); + washorder.setWorkorderCode(IdUtil.getStringId()); + washorder.setIsNeedmove("0"); + washorder.setDeviceCode(device.getString("device_code")); + washorder.setMaterialWeight(new BigDecimal(SKPoints.stream().mapToDouble(value -> value.getDouble("qty")).sum())); + washorder.setMaterialCode(material.getString("material_code")); + washorder.setCreateTime(DateUtil.now()); + washorder.setInDevices(SKPoints.stream().map(a->a.getString("point_code")).collect(Collectors.joining(","))); + washorder.setProductArea(device.getString("product_area")); + washorder.setCreateId("1"); + washorder.setCreateName("acs"); + washorder.setStatus(StatusEnum.TASK_CREATE.getCode()); + return washorder; + } + @Override public void cancel(String taskId) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch_point.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch_point.wql index 6e1f57a7..6e1498ba 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch_point.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/sch/wql/sch_point.wql @@ -96,7 +96,7 @@ sch_base_point LEFT JOIN pdm_bi_device ON sch_base_point.device_code = pdm_bi_device.device_code LEFT JOIN sch_base_task ON sch_base_point.point_code = point_code2 and task_status<7 - WHERE 1=1 + WHERE sch_base_point.lock_type = '0' and is_used = '1' OPTION 输入.region_code <> "" sch_base_point.region_code = 输入.region_code ENDOPTION @@ -167,7 +167,7 @@ sch_base_point.* from sch_base_point left JOIN sch_base_task ON sch_base_point.point_code = point_code2 and task_status < 7 - where 1=1 + where sch_base_point.lock_type = '0' and is_used = '1' OPTION 输入.region_code <> "" sch_base_point.region_code = 输入.region_code ENDOPTION diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/ProductInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/ProductInController.java index d3427272..cdd349e3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/ProductInController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/rest/ProductInController.java @@ -1,5 +1,6 @@ package org.nl.wms.st.in.rest; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import io.swagger.annotations.Api; @@ -13,6 +14,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.sql.DataSource; +import java.sql.Connection; import java.util.Map; @RestController diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/ProductInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/ProductInServiceImpl.java index c9a61998..00e2bcc3 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/ProductInServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/in/service/impl/ProductInServiceImpl.java @@ -11,8 +11,10 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.StatusEnum; -import org.nl.common.handler.LockProcess; +import org.nl.common.utils.MapOf; import org.nl.common.utils.RedissonUtils; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; @@ -22,6 +24,7 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.modules.wql.util.WqlUtil; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.nl.wms.basedata.master.service.StoragevehicleinfoService; import org.nl.wms.basedata.st.service.StorattrService; import org.nl.wms.basedata.st.service.StructattrService; import org.nl.wms.basedata.st.service.dto.StructattrDto; @@ -35,9 +38,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; +import java.util.*; /** * PC端出入库新增 @@ -55,6 +56,8 @@ public class ProductInServiceImpl implements ProductInService { private final StorPublicService storPublicService; + private final StoragevehicleinfoService storagevehicleinfoService; + @Override public Map pageQuery(Map whereJson, Pageable page) { @@ -64,6 +67,7 @@ public class ProductInServiceImpl implements ProductInService { String begin_time = MapUtil.getStr(whereJson, "begin_time"); String end_time = MapUtil.getStr(whereJson, "end_time"); String bill_status = MapUtil.getStr(whereJson, "bill_status"); + String bill_type = MapUtil.getStr(whereJson, "bill_type"); JSONObject map = new JSONObject(); map.put("flag", "1"); @@ -71,7 +75,7 @@ public class ProductInServiceImpl implements ProductInService { map.put("begin_time",begin_time); map.put("end_time",end_time); map.put("bill_status",bill_status); - map.put("bill_type", "0001"); + map.put("bill_type", bill_type); if (ObjectUtil.isNotEmpty(bill_code)) map.put("bill_code","%"+bill_code+"%"); JSONObject jo = WQL.getWO("QST_IVT_PRODUCTIN_01").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "create_time desc"); @@ -165,10 +169,10 @@ public class ProductInServiceImpl implements ProductInService { row.put("assign_qty", row.getDoubleValue("plan_qty")); row.put("plan_qty", row.getDoubleValue("plan_qty")); String plan_qty = row.getString("plan_qty"); - total_qty += Double.parseDouble(plan_qty); - + if (!StringUtils.isEmpty(plan_qty)){ + total_qty += Double.parseDouble(plan_qty); + } WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").insert(row); - // 插入分配表 JSONObject dis = new JSONObject(); dis.put("iostorinvdis_id", IdUtil.getSnowflake(1, 1).nextId() + ""); @@ -351,7 +355,7 @@ public class ProductInServiceImpl implements ProductInService { @Transactional(rollbackFor = Exception.class) @Override public void divStruct(JSONObject whereJson) { - WQLObject pointTab = WQLObject.getWQLObject("sch_base_point"); + WQLObject structattrTab = WQLObject.getWQLObject("st_ivt_structattr"); WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); String currentUserId = SecurityUtils.getCurrentUserId(); @@ -372,7 +376,7 @@ public class ProductInServiceImpl implements ProductInService { //查询主表信息 JSONObject mst = WQLObject.getWQLObject("st_ivt_iostorinv").query("iostorinv_id = '" + map.get("iostorinv_id") + "'").uniqueResult(0); - JSONObject jsonDis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinvdis_id = '" + map.getString("iostorinvdis_id") + "'").uniqueResult(0); + JSONObject jsonDis = WQLObject.getWQLObject("ST_IVT_IOStorInvDis").query("iostorinv_id = '" + map.getString("iostorinv_id") + "'").uniqueResult(0); // 校验是否已分配 if (ObjectUtil.isNotEmpty(jsonDis.getString("struct_id"))) { throw new BadRequestException("该明细已分配,无法继续分配!"); @@ -388,8 +392,8 @@ public class ProductInServiceImpl implements ProductInService { JSONObject jsonParam = new JSONObject(); JSONObject jsonPoint = new JSONObject(); if (whereJson.containsKey("sect_id")) { - jsonParam.put("sect_code", whereJson.get("sect_code")); - jsonParam.put("stor_id", whereJson.get("stor_id")); + jsonParam.put("sect_code", whereJson.get("sect_id")); + jsonParam.put("product_area", whereJson.get("stor_id")); jsonParam.put("material_id", jsonDtl.getString("material_id")); jsonPoint = this.autoDis(jsonParam); is_length = jsonPoint.getString("is_length"); @@ -401,19 +405,22 @@ public class ProductInServiceImpl implements ProductInService { throw new BadRequestException("未查询到适用点位!"); } - region_code = jsonPoint.getString("region_code"); - region_name = jsonPoint.getString("region_name"); - point_id = jsonPoint.getString("point_id"); - point_code = jsonPoint.getString("point_code"); - point_name = jsonPoint.getString("point_name"); + region_code = jsonPoint.getString("sect_code"); + region_name = jsonPoint.getString("sect_name"); + point_id = jsonPoint.getString("struct_id"); + point_code = jsonPoint.getString("struct_code"); + point_name = jsonPoint.getString("struct_name"); } else { // 指定货位: 判断所选货位是否满足物料 // 判断物料是否超长 - JSONObject jsonMater = materTab.query("material_id = '" + map.getString("material_id") + "'").uniqueResult(0); - - String length_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_LENGTH_UP").getValue(); - double material_length = jsonMater.getDoubleValue("length"); - double material_length_up = Double.valueOf(length_up); + double material_length= 0; + double material_length_up=9999; + if (!StringUtils.isEmpty(map.getString("material_id"))){ + JSONObject jsonMater = materTab.query("material_id = '" + map.getString("material_id") + "'").uniqueResult(0); + String length_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_LENGTH_UP").getValue(); + material_length = jsonMater.getDoubleValue("length"); + material_length_up = Double.valueOf(length_up); + } if (material_length > material_length_up) { throw new BadRequestException("物料超长,请自动分配"); @@ -434,18 +441,17 @@ public class ProductInServiceImpl implements ProductInService { dis_map.put("struct_name", point_name); //锁定货位 - JSONObject jsonPoint1 = pointTab.query("point_id = '" + point_id + "'").uniqueResult(0); - jsonPoint1.put("lock_type", StatusEnum.LOCK_ON.getCode()); - pointTab.update(jsonPoint1); + JSONObject jsonPoint1 = structattrTab.query("struct_id = '" + point_id + "'").uniqueResult(0); + structattrTab.update(MapOf.of("lock_type", StatusEnum.LOCK_ON.getCode()),"struct_id = '" + point_id + "'"); // 判断是否需要锁定两个货位 if (StrUtil.equals(is_length, "1")) { - JSONObject jsonPoint2 = pointTab.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0); + JSONObject jsonPoint2 = structattrTab.query("struct_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0); jsonPoint2.put("lock_type", StatusEnum.LOCK_ON.getCode()); - pointTab.update(jsonPoint2); + structattrTab.update(jsonPoint2); } - // 更新分配明细 - WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map, "iostorinvdtl_id = '" + map.get("iostorinvdtl_id") + "'"); + // 更新分配明细iostorinv_id -> 1646796745134444544 + WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(dis_map, "iostorinv_id = '" + map.get("iostorinv_id") + "'"); /* * 更新库存 @@ -500,38 +506,23 @@ public class ProductInServiceImpl implements ProductInService { @Override public void unDivStruct(JSONObject jo) { WQLObject dis_wql = WQLObject.getWQLObject("ST_IVT_IOStorInvDis"); - WQLObject point_table = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject materTab = WQLObject.getWQLObject("md_me_materialbase"); + WQLObject structattrTable = WQLObject.getWQLObject("st_ivt_structattr"); + WQLObject vehicleTable = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); - JSONArray rows = jo.getJSONArray("tableMater"); - JSONObject whereJson = rows.getJSONObject(0); + JSONObject iosInvDisInfo = jo.getJSONArray("tableMater").getJSONObject(0); + String StructCodes = getReleaseStructByVehicleLimit(structattrTable, vehicleTable, iosInvDisInfo); //解锁原货位点位 - JSONObject jsonPoint1 = point_table.query("point_code = '" + whereJson.getString("struct_code") + "'").uniqueResult(0); - jsonPoint1.put("lock_type", StatusEnum.LOCK_OFF.getCode()); - point_table.update(jsonPoint1); - - // 判断此物料是否超长 - JSONObject jsonMater = materTab.query("material_id = '" + whereJson.getString("material_id") + "'").uniqueResult(0); - - String length_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_LENGTH_UP").getValue(); - double material_length = jsonMater.getDoubleValue("length"); - double material_length_up = Double.valueOf(length_up); - - if (material_length > material_length_up) { - // 超长则解锁对应点位 - JSONObject jsonPoint2 = point_table.query("point_id = '" + jsonPoint1.getString("control_point") + "'").uniqueResult(0); - jsonPoint2.put("lock_type", StatusEnum.LOCK_OFF.getCode()); - point_table.update(jsonPoint2); - } + structattrTable.update(MapOf.of("lock_type", StatusEnum.LOCK_OFF.getCode()),"struct_code in ('"+StructCodes+"')"); //减去原货位的待入数 - JSONArray dis_rows = dis_wql.query("struct_code = '" + whereJson.get("struct_code") + "' AND work_status < '99'").getResultJSONArray(0); + JSONArray dis_rows = dis_wql.query("struct_code = '" + iosInvDisInfo.get("struct_code") + "' AND work_status < '99'").getResultJSONArray(0); if (dis_rows.size() <= 0) { throw new BadRequestException("数据参数有误!"); } - JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id = '" + dis_rows.getJSONObject(0).getString("iostorinv_id") + "'").uniqueResult(0); + JSONObject mst_jo = WQLObject.getWQLObject("ST_IVT_IOStorInv").query("iostorinv_id" + + " = '" + dis_rows.getJSONObject(0).getString("iostorinv_id") + "'").uniqueResult(0); for (int i = 0; i < dis_rows.size(); i++) { JSONObject i_form = new JSONObject(); JSONObject dis_row = dis_rows.getJSONObject(i); @@ -557,12 +548,12 @@ public class ProductInServiceImpl implements ProductInService { map.put("struct_code", ""); map.put("struct_name", ""); map.put("work_status", "00"); - WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(map, "iostorinvdtl_id = '" + whereJson.getString("iostorinvdtl_id") + "'"); + WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(map, "iostorinvdtl_id = '" + iosInvDisInfo.getString("iostorinvdtl_id") + "'"); //修改明细状态 HashMap dtl_map = new HashMap<>(); dtl_map.put("bill_status", "10"); - WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").update(dtl_map, "iostorinvdtl_id = '" + whereJson.get("iostorinvdtl_id") + "'"); + WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").update(dtl_map, "iostorinvdtl_id = '" + iosInvDisInfo.get("iostorinvdtl_id") + "'"); //更新主表状态 JSONArray dtl_rows = WQLObject.getWQLObject("ST_IVT_IOStorInvDtl").query("iostorinv_id = '" + mst_jo.get("iostorinv_id") + "' AND bill_status IN ('20','30')").getResultJSONArray(0); @@ -574,6 +565,17 @@ public class ProductInServiceImpl implements ProductInService { WQLObject.getWQLObject("ST_IVT_IOStorInv").update(mst_jo); } + private String getReleaseStructByVehicleLimit(WQLObject structattrTable, WQLObject vehicleTable, JSONObject iosInvDisInfo) { + String StructCode = iosInvDisInfo.getString("struct_code"); + if (vehicleTable.query("storagevehicle_code = '" + iosInvDisInfo.getString("storagevehicle_code") + "'").uniqueResult(0).getString("occupystruct_qty").equals(StatusEnum.OVERSTRUCT_STANDARD.getCode())){ + String controlStruct = structattrTable.query("struct_code = '" + StructCode + "'").uniqueResult(0).getString("control_point"); + if (!StringUtils.isEmpty(controlStruct)){ + StructCode = StructCode +"','"+controlStruct; + } + } + return StructCode; + } + @Transactional(rollbackFor = Exception.class) @Override public void divPoint(JSONObject whereJson) { @@ -597,7 +599,7 @@ public class ProductInServiceImpl implements ProductInService { ProductInTask task = new ProductInTask(); JSONObject task_form = new JSONObject(); - task_form.put("task_type", "010501"); + task_form.put("task_type", AcsTaskEnum.TASK_STRUCT_IN.getCode()); task_form.put("start_device_code", point_code); task_form.put("next_device_code", ios_dis.getString("struct_code")); task_form.put("vehicle_code", map.getString("storagevehicle_code")); @@ -613,25 +615,57 @@ public class ProductInServiceImpl implements ProductInService { //in_point data @Override + @Transactional public void createPdaTask(JSONObject param) { Assert.notEmpty(new Object[]{param,param.getJSONArray("data")},"参数不能为空"); + WQLObject structattrTab = WQLObject.getWQLObject("st_ivt_structattr"); + WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); + WQLObject vehicleMaterialTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis"); + WQLObject ioStorInv = WQLObject.getWQLObject("ST_IVT_IOStorInv"); + + RedissonUtils.lock(() -> { String point = param.getString("point"); String vehicle_code = param.getString("vehicle_code"); - JSONArray data = param.getJSONArray("data"); - //"data": [ - // { - // "sale_code":"DD1213213", - // "order_line_code":"L_DD1213213", - // "material_spec":"SP/232", - // "in_qry": "123", - // "material_code": "24021962S", - // "material_name": "三通法兰" - // } - // ] + JSONArray data = param.getJSONArray("arr"); + JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + vehicle_code + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); + if (ObjectUtil.isEmpty(jsonVehicle)) throw new BadRequestException("载具不存在"); + JSONArray vehicleMaterial = vehicleMaterialTab.query("storagevehicle_code = '" + vehicle_code + "' and material_id IS not NULL ").getResultJSONArray(0); + if (vehicleMaterial.size()>0){ + throw new BadRequestException("载具已被占用"); + } + //创建出入库表单 + String iostorinvId = this.insertDtl(new JSONObject(MapOf.of("tableData", data, "product_code", "A1" + , "bill_type", "0002", "biz_date", DateUtil.now().substring(0, 10), "bill_status", "10"))); + //绑定载具 + disTab.update(MapOf.of("storagevehicle_id",jsonVehicle.getString("storagevehicle_id") + ,"storagevehicle_code", jsonVehicle.getString("storagevehicle_code")),"iostorinv_id = '" + iostorinvId + "'"); + JSONObject structatt = ioStorInv.query("iostorinv_id = '" + iostorinvId + "'").uniqueResult(0); + //分配点位 + JSONArray tableMater = new JSONArray(); + tableMater.add(structatt); + JSONObject dtl_row = new JSONObject(); + dtl_row.put("material_id",""); + this.divStruct(new JSONObject(MapOf.of("dtl_row",dtl_row,"stor_id","A1","sect_id","KQ001", + "checked",true,"product_area","A1","sect_code","RCK001","tableMater",tableMater))); + //创建任务 + JSONObject disInfo = disTab.query("iostorinv_id = '" + iostorinvId + "'").uniqueResult(0); + ProductInTask task = new ProductInTask(); + JSONObject task_form = new JSONObject(); + task_form.put("task_type", AcsTaskEnum.TASK_STRUCT_IN.getCode()); + task_form.put("start_device_code", point); + task_form.put("next_device_code", disInfo.getString("struct_code")); + task_form.put("vehicle_code", disInfo.getString("storagevehicle_code")); + task_form.put("product_area", "A1"); + String task_id = task.createTask(task_form); + HashMap map = MapOf.of("point_code", disInfo.getString("struct_code"), "struct_id", disInfo.getString("struct_id"), "struct_name", disInfo.getString("struct_name"), + "task_id", task_id, "work_status", "01"); + //跟新明细表状态 + WQLObject.getWQLObject("ST_IVT_IOStorInvDis").update(map, "iostorinv_id = '" + iostorinvId + "'"); - },"pda#createPdaTask",3); + },"pda#createPdaTask",5); } @Override @@ -648,16 +682,24 @@ public class ProductInServiceImpl implements ProductInService { JSONObject struct_jo = new JSONObject(); String material_id = whereJson.getString("material_id"); String sect_code = whereJson.getString("sect_code"); - String product_area = whereJson.getString("stor_id"); - - JSONObject jsonMater = materTab.query("material_id = '" + material_id + "'").uniqueResult(0); + String product_area = whereJson.getString("product_area"); // 判断物料是否超长 + double material_length= 0; + double material_length_up=9999; + double material_weight = 0; + double material_weight_up = 9999; + String weight_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_WEIGHT_UP").getValue(); String length_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_LENGTH_UP").getValue(); - double material_length = jsonMater.getDoubleValue("length"); - double material_length_up = Double.valueOf(length_up); + if (!StringUtils.isEmpty(material_id)){ + JSONObject jsonMater = materTab.query("material_id = '" + material_id + "'").uniqueResult(0); + material_length = jsonMater.getDoubleValue("length"); + material_length_up = Double.valueOf(length_up); + material_weight = jsonMater.getDoubleValue("net_weight"); + material_weight_up = Double.valueOf(weight_up); + } - if (material_length > material_length_up) { + if (material_length > 99999 /*material_length_up*/) { // 超长:找一层两个货位:超长判断 JSONArray pointArr = WQL.getWO("QST_IVT_DIS_01").addParam("flag", "1") .addParam("sect_code", sect_code) @@ -668,7 +710,6 @@ public class ProductInServiceImpl implements ProductInService { // 查询此点位对应的点位是否是无货未锁定状态 JSONObject jsonControlPoint = pointTab.query("point_id = '" + json.getString("control_point") + "' and is_delete = '0' and is_used = '1' and point_status = '1' and lock_type = '0'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonControlPoint)) { json.put("is_length", "1"); struct_jo = json; @@ -679,9 +720,6 @@ public class ProductInServiceImpl implements ProductInService { } } else { // 未超长:判断是否超重 - String weight_up = SpringContextHolder.getBean(SysParamServiceImpl.class).findByCode("MATERIAL_WEIGHT_UP").getValue(); - double material_weight = jsonMater.getDoubleValue("net_weight"); - double material_weight_up = Double.valueOf(weight_up); if (material_weight > material_weight_up) { // 超重: 尽量放在一层 @@ -711,20 +749,20 @@ public class ProductInServiceImpl implements ProductInService { @Override @Transactional(rollbackFor = Exception.class) - public void confirmvehicle(JSONObject whereJson) { + public void confirmvehicle(JSONObject form) { WQLObject vehicleTab = WQLObject.getWQLObject("md_pb_storagevehicleinfo"); - WQLObject vehicleMaterialTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); WQLObject disTab = WQLObject.getWQLObject("st_ivt_iostorinvdis"); - String storagevehicle_code = whereJson.getString("storagevehicle_code"); - // 校验载具是否存在 - JSONObject jsonVehicle = vehicleTab.query("storagevehicle_code = '" + storagevehicle_code + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonVehicle)) throw new BadRequestException("载具不存在"); - JSONArray vehicleMaterial = vehicleMaterialTab.query("storagevehicle_code = '" + storagevehicle_code + "' and material_id IS not NULL ").getResultJSONArray(0); - if (vehicleMaterial.size()>0){ - throw new BadRequestException("载具已被占用"); + + JSONObject jsonVehicle; + if (!StringUtils.isEmpty(form.getString("storagevehicle_code"))){ + jsonVehicle = vehicleTab.query("storagevehicle_code = '" + form.getString("storagevehicle_code") + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); + checkVehicle(form, jsonVehicle); // 校验载具是否存在 + }else { + jsonVehicle = storagevehicleinfoService.create(MapOf.of("overstruct_type", form.getString("overstruct_type"), "storagevehicle_code", UUID.randomUUID().toString(), "storagevehicle_type", "01","num",1)).getJSONObject(0); } + // 更新分配明细载具号 - JSONObject jsonDis = disTab.query("iostorinvdis_id = '" + whereJson.getString("iostorinvdis_id") + "'").uniqueResult(0); + JSONObject jsonDis = disTab.query("iostorinvdis_id = '" + form.getString("iostorinvdis_id") + "'").uniqueResult(0); // 校验此明细是否已经分配 if (ObjectUtil.isNotEmpty(jsonDis.getString("struct_id"))) { throw new BadRequestException("此明细已分配不可组盘!"); @@ -734,6 +772,27 @@ public class ProductInServiceImpl implements ProductInService { disTab.update(jsonDis); } + private void checkVehicle(JSONObject form, JSONObject jsonVehicle) { + WQLObject vehicleMaterialTab = WQLObject.getWQLObject("md_pb_storagevehicleext"); + if (ObjectUtil.isEmpty(jsonVehicle)) { + throw new BadRequestException("载具不存在"); + } + JSONArray vehicleMaterial = vehicleMaterialTab.query("storagevehicle_code = '" + form.getString("storagevehicle_code") + "' and material_id IS not NULL ").getResultJSONArray(0); + if (vehicleMaterial.size()>0){ + throw new BadRequestException("载具已被占用"); + } + } + + public static void main(String[] args) { + ArrayList list = new ArrayList<>(); + list.add("a"); + list.add("b"); + list.add("c"); + for (Object o : list) { + list.remove("a"); + } + } + @Override public JSONArray getDisTask(JSONObject whereJson) { //查询该明细下的所有入库分配明细 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_PRODUCTIN_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_PRODUCTIN_01.wql index 315af984..4b1c9b9b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_PRODUCTIN_01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_PRODUCTIN_01.wql @@ -125,7 +125,8 @@ mater.material_code, mater.material_name, mater.material_spec, - point.point_code + point.point_code, + '' as overstruct_type FROM ST_IVT_IOStorInvDis dis LEFT JOIN sch_base_point point ON point.point_id = dis.point_id diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_STORPUBLIC.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_STORPUBLIC.wql index 36db8c12..cc7ce0d6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_STORPUBLIC.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/QST_IVT_STORPUBLIC.wql @@ -49,7 +49,7 @@ ivt.* FROM st_ivt_structivt ivt - LEFT JOIN sch_base_point point ON point.point_id = ivt.struct_id + LEFT JOIN st_ivt_structattr point ON point.struct_id = ivt.struct_id WHERE 1=1 @@ -109,4 +109,4 @@ ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/ST_PUB_QUERY_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/ST_PUB_QUERY_01.wql index 284e2f15..ec171371 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/ST_PUB_QUERY_01.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/st/wql/ST_PUB_QUERY_01.wql @@ -134,4 +134,4 @@ ENDSELECT ENDQUERY - ENDIF \ No newline at end of file + ENDIF diff --git a/mes/qd/src/views/wms/basedata/pdm/workProcedure/index.vue b/mes/qd/src/views/wms/basedata/pdm/workProcedure/index.vue index e1bb2274..ee248f83 100644 --- a/mes/qd/src/views/wms/basedata/pdm/workProcedure/index.vue +++ b/mes/qd/src/views/wms/basedata/pdm/workProcedure/index.vue @@ -52,7 +52,7 @@ - + - + + width="710px" + > - + - + @@ -152,16 +153,16 @@ - + - + - + - +