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 index 59b8e0be..f5fd7990 100644 --- 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 @@ -4,7 +4,8 @@ import lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.impl.AcsToWmsServiceImpl; -import org.nl.wms.product_manage.sch.tasks.SpeMachineryTask; +import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeEmpTask; +import org.nl.wms.product_manage.sch.tasks.SpeMachinery.SpeFullTask; import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; import org.nl.wms.product_manage.sch.tasks.callMaterial.WrapCallMaterialTask; import org.nl.wms.product_manage.sch.tasks.sendEmpty.WrapSendEmptyTask; @@ -19,8 +20,8 @@ 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_CALLTYPE_FULL, SpringContextHolder.getBean(SpeFullTask.class)); + AcsToWmsServiceImpl.Task_Collent.put(AcsTaskEnum.REQUEST_CALLTYPE_EMP, SpringContextHolder.getBean(SpeEmpTask.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)); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java index 1c5522cb..91d8e99a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/config/mybatis/CodeGenerator.java @@ -57,10 +57,10 @@ public class CodeGenerator { mpg.setGlobalConfig(gc); // 数据源配置 DataSourceConfig dsc = new DataSourceConfig(); - dsc.setUrl("jdbc:mysql://192.168.81.252:3306/hl_one_mes?setUnicode=true&characterEncoding=utf8"); + dsc.setUrl("jdbc:mysql://192.168.46.5:3306/hl_one_mes_test?serverTimezone=GMT&setUnicode=true&characterEncoding=utf8"); dsc.setDriverName("com.mysql.cj.jdbc.Driver"); dsc.setUsername("root"); - dsc.setPassword("Root.123456"); + dsc.setPassword("123456"); mpg.setDataSource(dsc); // 包配置 PackageConfig pc = new PackageConfig(); 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 b043d2ef..b91a647c 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 @@ -1,25 +1,33 @@ package org.nl.wms.ext.acs.service.impl; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; -import cn.hutool.crypto.digest.MD5; -import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.nl.common.domain.ConstantParam; 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.common.utils.PointLockUtils; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehicleService; +import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; +import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; +import java.util.Date; +import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /* @@ -33,12 +41,18 @@ public class AgvInstService { @Autowired private ISchBasePointService basePointService; + @Autowired + private SchedulerService schedulerService; + @Autowired + private ISchProcessRouteService schProcessRouteService; + @Autowired + private IPdmBiDeviceService deviceService; + @Autowired + private ISchBaseTaskService taskService; + @Autowired + private ISchCachelineVehicleService cachelineVehicleService; + - public static void main(String[] args) { - String a = "HCX04JG04_SHCX04"; - MD5 md5 = MD5.create(); - System.out.println(md5.digest(a)); - } //满料请求点位确认 //1.判断当前设备路由表是否配置下一道路由设备,如果不是则说明直接到清洗 @@ -47,59 +61,79 @@ public class AgvInstService { //4.有则创建agv指令, // 没有则创建缓存架任务 public void fullMaster(JSONObject task){ - String point_code = task.getString("point_code1"); String quantity = task.getString("material_qty"); + //获取当前生产工序下一道工序 + Map workprodure = basePointService.findDeviceWorkprodure(task.getString("point_code")); + FlowElement next = getFlowElement(task,workprodure).next(); + String nextPoint = null; + //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: + String cacheVehile = ""; + Map query = MapOf.of("workprocedure_id", workprodure.get("workprocedure_id") + , "qty", quantity); + if (next.getName().equals("深坑清洗")){ + query.put("material_id",task.getString("material_id")); + } + List> list = deviceService.workproceduceDevices(query); + + if (!CollectionUtils.isEmpty(list)){ + nextPoint = list.get(0).get("point_code"); + }else { + if (next.getParams().get("cacheLine") == null){ + throw new BadRequestException("当前任务下一道工序无可用设备"); + } + nextPoint = next.getParams().get("cacheLine"); + cacheVehile = getCacheVehile(nextPoint, null); + } + if (StringUtils.isBlank(nextPoint)){ + throw new BadRequestException("逻辑非配错误,请检查代码"); + } + basePointService.update(new UpdateWrapper() + .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); + + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + schBaseTask.setVehicle_code(cacheVehile); + schBaseTask.setPoint_code2(nextPoint); + schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); + schBaseTask.setUpdate_time(new Date()); + taskService.updateById(schBaseTask); + }; + + public FlowElement getFlowElement(JSONObject task,Map workprodure){ + if (CollectionUtils.isEmpty(workprodure)){ + throw new BadRequestException("当前点位所属设备无对应工序"); + } + String point_code = task.getString("point_code1"); + String material_id = task.getString("material_id"); SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() .eq("point_code", point_code) .eq("is_delete", "0") .eq("is_used", "1") ); - String nextPoint; - //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: - String cacheVehile = ""; - if (devicePoint.getNext_region_code().equals(ConstantParam.SK_REGION)){ - //查询生坑重量是否超限:深坑需要乘以系数 - JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","7","region_code", devicePoint.getNext_region_code(),"qty",Integer.valueOf(quantity)*ConstantParam.MATERAIL_RATIO)).process().getResultJSONArray(0); - if (nextPointList.size() == 0){ - throw new BadRequestException("深坑清洗储料仓:"+devicePoint.getNext_region_code()+"无可用点位"); - } - nextPoint = nextPointList.getJSONObject(0).getString("point_code"); - }else { - //专机的话:需要判断专机上料口物料是否满足数量 - JSONArray nextPointList = WQL.getWO("sch_point").addParamMap(MapOf.of("flag","3","region_code", devicePoint.getNext_region_code(),"qty",quantity)).process().getResultJSONArray(0); - if (nextPointList.size() == 0){ - JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getRegion_code()+"'").uniqueResult(0); - nextPoint = cacheLine.getString("cacheline_code"); - //满料请求:查询缓存线空载具列表 - cacheVehile = getCacheVehile(nextPoint, null); - if (StringUtils.isBlank(cacheVehile)) { - throw new BadRequestException("缓存线:"+nextPoint+"没有可用空载具"); - } - }else { - nextPoint = nextPointList.getJSONObject(0).getString("point_code"); - } + SchProcessRoute processRoute = schProcessRouteService.findByMaterialId(material_id,devicePoint.getRegion_code()); + if (processRoute == null){ + throw new BadRequestException("当前没有配置对应工序调度线路:"+material_id+"/"+devicePoint.getRegion_code()); } - if (StringUtils.isBlank(nextPoint)){ - throw new BadRequestException("设备:"+point_code+"没有可用点位"); + //workprocedure_code,r.workprocedure_id + FlowElement flowElement = schedulerService.currentFlow(processRoute.getProcess_id(), workprodure.get("workprocedure_code")); + if (flowElement == null){ + throw new BadRequestException("当前工序调度线路:"+processRoute.getProcess_id()+"没有对应工序配置"+workprodure.get("workprocedure_code")); } - 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("point_code2",nextPoint); - task.put("task_status",StatusEnum.TASK_START_END_P.getCode()); - task.put("update_time", DateUtil.now()); - WQLObject.getWQLObject("sch_base_task").update(task); - }; + return flowElement; + } //缺料请求:上料位 //1.判断当前设备表对应的缓存线是否开放 //2.根据当前设备绑定的物料id,从缓存线中获取相同物料对应载具列表 //3.agv根据对应载具列表行进扫码匹配:匹配到对应物料则创建点对点任务 - public void callMatter(JSONObject task){ + public void empMatter(JSONObject task){ //参数 String targetDevice = task.getString("next_point_code"); String material_id = task.getString("material_id"); - 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"))); + SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() + .eq("point_code", targetDevice) + .eq("is_delete", "0") + .eq("is_used", "1")); + JSONObject cacheLine = WQLObject.getWQLObject("SCH_cacheLine_region_relation").query("region_code = '"+devicePoint.getRegion_code()+"' and is_active = '"+StatusEnum.STATUS_TRUE.getCode()+"'").uniqueResult(0); + Assert.notNull(cacheLine, String.format("区域%s对应缓存线信息不存在", devicePoint.getRegion_code())); //缓存线位置编码 :缺料请求获取缓存线满载具列表 String startPoint = cacheLine.getString("cacheline_code"); String cacheVehile = getCacheVehile(startPoint, material_id); @@ -107,27 +141,28 @@ public class AgvInstService { throw new BadRequestException("缓存线:"+startPoint+"没有物料"+material_id+"对应可用载具"); } //判断当前物料载具已经任务分配数量:如果>物料已经分配任务。说明满了,不允许再分配 - 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); + List allocateTask = taskService.list(new QueryWrapper().eq("point_code1", startPoint).eq("material_id", material_id).lt("task_status", StatusEnum.TASK_FINISH.getCode())); if (allocateTask.size()>=cacheVehile.split(",").length){ - log.error("callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(o-> ((JSONObject)o).getString("task_id")).collect(Collectors.joining(","))); + log.error("callMatter 缓存线:{}上含有物料:{}的载具分配完,任务id:{}",startPoint,material_id,allocateTask.stream().map(SchBaseTask::getTask_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()); - WQLObject.getWQLObject("SCH_base_task").update(task); + SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); + schBaseTask.setVehicle_code(cacheVehile); + schBaseTask.setPoint_code1(startPoint); + schBaseTask.setPoint_code3(startPoint); + schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); + schBaseTask.setUpdate_time(new Date()); + taskService.updateById(schBaseTask); } public String getCacheVehile(String cacheLine,String materialId){ - JSONArray runingTask = WQLObject.getWQLObject("sch_base_task").query("point_code2 = '" + cacheLine + "' and task_status < '" + StatusEnum.TASK_FINISH.getCode() + "'").getResultJSONArray(0); + int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); 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); - if (result.size()>0){ - if (result.size()>runingTask.size()){ - return result.stream().map(a -> ((JSONObject) a).getString("vehicle_code")).collect(Collectors.joining(",")); + List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); + if (vehicle.size()>0){ + if (vehicle.size()>count){ + return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); } } return ""; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/controller/oderExt/MpsSaleOrderIcExtController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/controller/oderExt/MpsSaleOrderIcExtController.java new file mode 100644 index 00000000..15c7e88d --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/controller/oderExt/MpsSaleOrderIcExtController.java @@ -0,0 +1,48 @@ +package org.nl.wms.mps.controller.oderExt; + + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import io.swagger.annotations.ApiOperation; +import org.nl.common.anno.Log; +import org.nl.wms.mps.service.orderExt.IMpsSaleOrderIcExtService; +import org.nl.wms.mps.service.orderExt.dao.MpsSaleOrderIcExt; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 生产订单扩展表 前端控制器 + *

+ * + * @author generator + * @since 2023-05-22 + */ +@RestController +@RequestMapping("/api/mpsSaleOrderIcExt") +public class MpsSaleOrderIcExtController { + + @Autowired + private IMpsSaleOrderIcExtService extService; + + @PostMapping + @Log("新增订单扩展表") + @ApiOperation("新增订单扩展表") + public ResponseEntity create(@RequestBody JSONObject whereJson) { + extService.create(whereJson); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/getExtList") + @Log("根据工单获取条码") + @ApiOperation("根据工单获取条码") + public ResponseEntity getExtList(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(extService.list(new QueryWrapper().eq("remark1",whereJson.getString("workorder_code"))),HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/IMpsSaleOrderIcExtService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/IMpsSaleOrderIcExtService.java new file mode 100644 index 00000000..1cb17175 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/IMpsSaleOrderIcExtService.java @@ -0,0 +1,20 @@ +package org.nl.wms.mps.service.orderExt; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.wms.mps.service.orderExt.dao.MpsSaleOrderIcExt; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 生产订单扩展表 服务类 + *

+ * + * @author generator + * @since 2023-05-22 + */ +public interface IMpsSaleOrderIcExtService extends IService { + + void create(JSONObject jo); + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/MpsSaleOrderIcExt.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/MpsSaleOrderIcExt.java new file mode 100644 index 00000000..34720da1 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/MpsSaleOrderIcExt.java @@ -0,0 +1,155 @@ +package org.nl.wms.mps.service.orderExt.dao; + +import java.math.BigDecimal; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 生产订单扩展表 + *

+ * + * @author generator + * @since 2023-05-22 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("mps_sale_order_ic_ext") +public class MpsSaleOrderIcExt implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 销售单标识 + */ + private String sale_id; + + /** + * 明细序号 + */ + private Integer seq_no; + + /** + * 包装袋类型 + */ + private String bag_type; + + /** + * 包装袋规格 + */ + private String bag_spec; + + /** + * 袋装量 + */ + private BigDecimal bag_qty; + + /** + * 包装箱类型 + */ + private String box_type; + + /** + * 包装箱规格 + */ + private String box_spec; + + /** + * 箱装量 + */ + private BigDecimal box_qty; + + /** + * 载具类型 + */ + private String storagevehicle_type; + + /** + * 载具规格 + */ + private String storagevehicle_spec; + + /** + * 载具装量 + */ + private BigDecimal storagevehicle_qty; + + /** + * 内唛数 + */ + private BigDecimal innermark_num; + + /** + * 外唛数 + */ + private BigDecimal outermark_num; + + /** + * 袋数 + */ + private BigDecimal bag_num; + + /** + * 箱数 + */ + private BigDecimal box_num; + + /** + * 托盘数 + */ + private BigDecimal storagevehicle_num; + + /** + * 条形码 + */ + private String bar_code; + + /** + * 备用1 + */ + private String remark1; + + /** + * 备用2 + */ + private String remark2; + + /** + * 备用3 + */ + private String remark3; + + /** + * 备用4 + */ + private String remark4; + + /** + * 备用5 + */ + private String remark5; + + /** + * 备用6 + */ + private String remark6; + + /** + * 备用7 + */ + private String remark7; + + /** + * 备用8 + */ + private String remark8; + + /** + * 备用9 + */ + private String remark9; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/MpsSaleOrderIcExtMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/MpsSaleOrderIcExtMapper.java new file mode 100644 index 00000000..08dfc802 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/MpsSaleOrderIcExtMapper.java @@ -0,0 +1,16 @@ +package org.nl.wms.mps.service.orderExt.dao.mapper; + +import org.nl.wms.mps.service.orderExt.dao.MpsSaleOrderIcExt; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 生产订单扩展表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-22 + */ +public interface MpsSaleOrderIcExtMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/xml/MpsSaleOrderIcExtMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/xml/MpsSaleOrderIcExtMapper.xml new file mode 100644 index 00000000..f3ff533a --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/dao/mapper/xml/MpsSaleOrderIcExtMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/impl/MpsSaleOrderIcExtServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/impl/MpsSaleOrderIcExtServiceImpl.java new file mode 100644 index 00000000..942cfe63 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/service/orderExt/impl/MpsSaleOrderIcExtServiceImpl.java @@ -0,0 +1,43 @@ +package org.nl.wms.mps.service.orderExt.impl; + +import cn.hutool.core.util.IdUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.wms.mps.service.orderExt.dao.MpsSaleOrderIcExt; +import org.nl.wms.mps.service.orderExt.dao.mapper.MpsSaleOrderIcExtMapper; +import org.nl.wms.mps.service.orderExt.IMpsSaleOrderIcExtService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 生产订单扩展表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-22 + */ +@Service +public class MpsSaleOrderIcExtServiceImpl extends ServiceImpl implements IMpsSaleOrderIcExtService { + + @Override + public void create(JSONObject jo) { + this.remove(new QueryWrapper().eq("remark1",jo.getString("workorder_code"))); + String workorder_code = jo.getString("workorder_code"); + int box_num = jo.getJSONObject("extra_map").getIntValue("box_num"); + String is_flip = jo.getJSONObject("extra_map").getString("is_flip"); + String target_roadway = jo.getJSONObject("extra_map").getString("target_roadway"); + + for (int i = 1; i <= box_num; i++) { + MpsSaleOrderIcExt ext = new MpsSaleOrderIcExt(); + ext.setSale_id(IdUtil.getSnowflake(1, 1).nextId() + ""); + ext.setSeq_no(1); + String pre = i < 10 ? "0000" : "000"; + String bar_code = workorder_code + is_flip + target_roadway + pre + i; + ext.setBar_code(bar_code); + ext.setRemark1(workorder_code); + this.save(ext); + } + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java index 2863e6f2..61ee34bf 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/rest/CacheLineHandController.java @@ -249,6 +249,15 @@ public class CacheLineHandController { return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/checkEnd") + @Log("修改缓存线盘点状态") + @ApiOperation("修改缓存线盘点状态") + public ResponseEntity checkEnd(@RequestBody JSONObject param) { + log.info("海亮缓存线手持服务 [盘点] 接口被请求, 请求参数-{}", param); + cacheLineHandService.check(param); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/agvInBoxExceptionQuery") @Log("AGV入箱异常-查询") @ApiOperation("AGV入箱异常-查询") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java index 54547374..a8217424 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/pda_manage/pda/service/impl/CacheLineHandServiceImpl.java @@ -890,7 +890,7 @@ public class CacheLineHandServiceImpl implements CacheLineHandService { @Override public void check(JSONObject param) { - String option = param.getString("option"); + String option = param.getString("check_option"); if (StrUtil.isEmpty(option)) { throw new BadRequestException("缺少关键参数option"); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java new file mode 100644 index 00000000..8aae9977 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -0,0 +1,241 @@ +package org.nl.wms.product_manage.sch.tasks.SpeMachinery; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.InterfaceLogType; +import org.nl.common.enums.StatusEnum; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.impl.AgvInstService; +import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.Map; + +/** + * 专机任务 + */ +@Slf4j +@Service +public class SpeEmpTask extends AbstractAcsTask { + + @Autowired + AgvInstService agvInstService; + private final Map SpeHandles= new HashMap<>(); + private static String OPT_NAME = "ACS回调# "; + + + public SpeEmpTask() { + SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe()); + SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache()); + SpeHandles.put(AcsTaskEnum.TASK_CACHELINE_OUT.name() ,new Cache2Spe()); + } + + @Override + public void updateTaskStatus(JSONObject param,String status) { + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + log.info(InterfaceLogType.ACS_TO_LMS.getDesc()); + // 指令执行中 + JSONObject task = taskTable.query("task_id = '" + param.getString("task_id") + "'").uniqueResult(0); + AcsTaskEnum taskType = AcsTaskEnum.getType(task.getString("task_type"),"TASK_"); + try { + SpeHandles.get(taskType.name()).handle(param,status,task); + }catch (Exception ex){ + log.error(OPT_NAME+"updateStatus error:{}",ex); + throw ex; + } + } + + @Override + @Transactional + public String createTask(JSONObject param) { + + String point_code = param.getString("device_code"); + String quantity = param.getString("quantity"); + String type = param.getString("type"); + 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"))); + JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); + if (ObjectUtil.isNotEmpty(chectIndDatabase)){ + Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + + } + JSONObject form = new JSONObject(MapOf.of("start_point_code","", + "next_point_code",point_code,"return_point_code", "","vehicle_code", + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); + String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; + + JSONObject task = packageParam(form, taskId); + WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + try { + pointConfirm(task); + //下发 + }catch (Exception ex){ + task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); + task.put("remark",ex.getMessage()); + WQLObject.getWQLObject("sch_base_task").update(task); + } + return taskId; + } + + private JSONObject packageParam(JSONObject form, String task_id) { + JSONObject task = new JSONObject(); + 参数封装:{ + AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_"); + task.put("task_id", task_id); + task.put("task_name", taskEnum.getDesc()); + task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); + task.put("task_type", form.getString("type")); + task.put("acs_task_type", AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode()); + task.put("task_status", TaskStatusEnum.CREATED.getCode()); + task.put("point_code1", form.getString("start_point_code")); + task.put("point_code2", form.getString("next_point_code")); + task.put("point_code3", form.getString("return_point_code")); + task.put("vehicle_code2", form.getString("vehicle_code2")); + task.put("vehicle_code", form.getString("vehicle_code")); + task.put("material_id", form.getString("material_id")); + task.put("material_qty", form.getString("quantity")); + task.put("handle_class", this.getClass().getName()); + task.put("finished_type", "1"); + task.put("is_delete", StatusEnum.LOCK_OFF.getCode()); + task.put("create_id", SecurityUtils.getCurrentUserId()); + task.put("create_name", SecurityUtils.getCurrentNickName()); + task.put("update_optid", SecurityUtils.getCurrentUserId()); + task.put("update_optname", SecurityUtils.getCurrentNickName()); + task.put("create_time", DateUtil.now()); + task.put("update_time", DateUtil.now()); + task.put("priority", "1");} + return task; + } + + @Override + public void cancel(String taskId) { + log.info(OPT_NAME+"cancel taskID:{}",taskId); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + //专机-专机 + //专机-缓存线 + //缓存线出库 + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+taskId+"'"); + + } + interface SpeStatusHandler{ + void handle(JSONObject param,String status,JSONObject task); + } + class Spe2Spe implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject pointTable = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device"); + + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + //到专机:更新设备上料位物料数量 + String point_code2 = task.getString("point_code2"); + JSONObject pointInfo = pointTable.query("point_code = '" + point_code2 + "'").uniqueResult(0); + JSONObject device = deviceTable.query("device_code = '" + pointInfo.getString("device_code") + "'").uniqueResult(0); + task.getDouble("material_qty"); + double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty"); + deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'"); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + log.error(OPT_NAME+"未定义任务状态:{}",sta); + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + class Spe2Cache implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject cacheVehTable = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + String workprocedureCode = param.getString("workorder_code"); + String inboxtxm = param.getString("inboxtxm"); + String outboxtxm = param.getString("outboxtxm"); + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.insert(MapOf.of("quantity", task.getString("material_qty"), + "material_id", task.getString("material_id"), + "vehicle_code", inboxtxm, + "vehicle_status", StatusEnum.CACHE_VEL_FULL.getCode(), + //工单,工序? + "workorder_code", workprocedureCode, + "create_time", DateUtil.now(), + "update_time", DateUtil.now() + //物料规格,物料名称 从物料信息表关联查询 + )); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + class Cache2Spe implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,JSONObject task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); + WQLObject cacheVehTable = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); + WQLObject pointTable = WQLObject.getWQLObject("SCH_BASE_Point"); + WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device"); + String outboxtxm = param.getString("outboxtxm"); + + switch (status){ + case STATUS_START: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + cacheVehTable.delete("vehicle_code = '" + outboxtxm + "'"); + break; + case STATUS_FINISH: + taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + + String point_code2 = task.getString("point_code2"); + JSONObject pointInfo = pointTable.query("point_code = '" + point_code2 + "'").uniqueResult(0); + JSONObject device = deviceTable.query("device_code = '" + pointInfo.getString("device_code") + "'").uniqueResult(0); + task.getDouble("material_qty"); + double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty"); + deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'"); + break; + case STATUS_CANNEL: + cancel(param.getString("task_id")); + break; + default: + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } + + @Override + public void pointConfirm(JSONObject param) { + agvInstService.empMatter(param); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java similarity index 88% rename from mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java rename to mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index 272d4877..92eee538 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachineryTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -1,4 +1,4 @@ -package org.nl.wms.product_manage.sch.tasks; +package org.nl.wms.product_manage.sch.tasks.SpeMachinery; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; @@ -11,9 +11,9 @@ import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; - import org.nl.common.utils.SecurityUtils; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; @@ -23,7 +23,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; - import java.util.HashMap; import java.util.Map; @@ -32,7 +31,7 @@ import java.util.Map; */ @Slf4j @Service -public class SpeMachineryTask extends AbstractAcsTask { +public class SpeFullTask extends AbstractAcsTask { @Autowired AgvInstService agvInstService; @@ -40,7 +39,7 @@ public class SpeMachineryTask extends AbstractAcsTask { private static String OPT_NAME = "ACS回调# "; - public SpeMachineryTask() { + public SpeFullTask() { SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe()); SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache()); SpeHandles.put(AcsTaskEnum.TASK_CACHELINE_OUT.name() ,new Cache2Spe()); @@ -73,23 +72,16 @@ public class SpeMachineryTask extends AbstractAcsTask { JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); if (ObjectUtil.isNotEmpty(chectIndDatabase)){ Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + } + 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); + JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code, + "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", + "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } - 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, - "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } - if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(type)){ - form = new JSONObject(MapOf.of("start_point_code","", - "next_point_code",point_code,"return_point_code", "","vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); - } String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = packageParam(form, taskId); WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + try { pointConfirm(task); //下发 @@ -246,12 +238,7 @@ public class SpeMachineryTask extends AbstractAcsTask { @Override public void pointConfirm(JSONObject param) { - String type = param.getString("task_type"); - if (AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type)){ - agvInstService.fullMaster(param); - } - if (AcsTaskEnum.REQUEST_CALLTYPE_EMP.getCode().equals(type)){ - agvInstService.callMatter(param); - } + agvInstService.fullMaster(param); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java index 3db7a58e..24dfcd5c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/IPdmBiDeviceService.java @@ -19,4 +19,13 @@ public interface IPdmBiDeviceService extends IService { List getNotWorkDeviceByWorkproceduceId(JSONObject param); + /** + * 获取生产工序对应可用设备 + * 重量/物料校验 + * @param param + * @return + */ + List workproceduceDevices(Map param); + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java index 1b0a47c1..43aa1b40 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/PdmBiDevice.java @@ -90,7 +90,7 @@ public class PdmBiDevice implements Serializable { private BigDecimal deviceinitinstor_qty; /** - * 设备实时来料仓数 + * 设备实时来料仓数:用于数量校验 */ private BigDecimal deviceinstor_qty; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java index 5549e533..1f9452da 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.java @@ -1,5 +1,6 @@ package org.nl.wms.product_manage.service.device.dao.mapper; +import com.alibaba.fastjson.JSONObject; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; @@ -17,4 +18,6 @@ import java.util.Map; public interface PdmBiDeviceMapper extends BaseMapper { List getNotWorkDevice(Map query); + + List workproceduceDevices(Map query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index f8e60447..fa038379 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -18,4 +18,22 @@ from PDM_produce_workOrder o where '5' > o.workorder_status and o.is_delete = '0' ) + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java index ec77959e..7b7009f0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/impl/PdmBiDeviceServiceImpl.java @@ -25,4 +25,9 @@ public class PdmBiDeviceServiceImpl extends ServiceImpl getNotWorkDeviceByWorkproceduceId(JSONObject param) { return this.baseMapper.getNotWorkDevice(param); } + + @Override + public List workproceduceDevices(Map param) { + return this.baseMapper.workproceduceDevices(param); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index db100b8a..56ec0f9e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -27,6 +27,9 @@ and ShiftOrder.shift_type_scode = #{query.shift_type_scode} + + and pro.workprocedure_code = #{query.workprocedure_code} + and ShiftOrder.product_area = #{query.product_area} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java index 4e43b6b5..9a15a8b1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/WorkorderQuery.java @@ -20,6 +20,7 @@ public class WorkorderQuery extends BaseQuery { private String workorder_code; private String material; private String workorder_status; + private String workprocedure_code; private String sale_id; private String shift_type_scode; private String product_series; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index 27a74b13..df9e9713 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -67,26 +67,26 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl page = PageHelper.startPage(pageQuery.getPage()+1, pageQuery.getSize()); + Page page = PageHelper.startPage(pageQuery.getPage() + 1, pageQuery.getSize()); List result = pdmProduceWorkorderMapper.pageQuery(query); TableDataInfo build = TableDataInfo.build(result); build.setTotalElements(page.getTotal()); @@ -95,7 +95,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", form.getString("workorder_id"))); if (one == null) { throw new BadRequestException("被删除或无权限,操作失败!"); @@ -128,48 +128,48 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl getDtl(JSONObject param) { - return this.baseMapper.getworkOrderDtl(param.getString("workorder_id")); + return this.baseMapper.getworkOrderDtl(param.getString("workorder_id")); } @Override public void down(List ids) { - if (ids == null || ids.size()==0){ + if (ids == null || ids.size() == 0) { return; } this.update(new UpdateWrapper() - .set("workorder_status",WorkerOrderEnum.SEND.getCode()) + .set("workorder_status", WorkerOrderEnum.SEND.getCode()) .set("down_id", SecurityUtils.getCurrentUserId()) - .set("down_name",SecurityUtils.getCurrentNickName()) - .set("down_time",new Date()) + .set("down_name", SecurityUtils.getCurrentNickName()) + .set("down_time", new Date()) .in("workorder_id", ids)); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0])); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); } @Override public void unDown(List ids) { - if (ids == null || ids.size()==0){ + if (ids == null || ids.size() == 0) { return; } List list = this.list(new QueryWrapper() .ne("workorder_status", WorkerOrderEnum.SEND.getCode()) .in("workorder_id", ids)); - if (list.size()>0){ + if (list.size() > 0) { throw new BadRequestException("只有下发状态的工单才能取消下发"); } this.update(new UpdateWrapper() - .set("workorder_status",WorkerOrderEnum.CREATE.getCode()) + .set("workorder_status", WorkerOrderEnum.CREATE.getCode()) .set("down_id", SecurityUtils.getCurrentUserId()) - .set("down_name",SecurityUtils.getCurrentNickName()) - .set("down_time",new Date()) + .set("down_name", SecurityUtils.getCurrentNickName()) + .set("down_time", new Date()) .in("workorder_id", ids)); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,ids.toArray(new String[0])); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, ids.toArray(new String[0])); } @Override @@ -178,10 +178,10 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() - .set("workorder_status",WorkerOrderEnum.FORCE_COMPLETE.getCode()) + .set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()) .set("update_id", SecurityUtils.getCurrentUserId()) - .set("update_name",SecurityUtils.getCurrentNickName()) - .set("update_time",new Date()) + .set("update_name", SecurityUtils.getCurrentNickName()) + .set("update_time", new Date()) .in("workorder_id", workorder_id)); JSONArray array = new JSONArray(); JSONObject map = new JSONObject(); @@ -190,13 +190,13 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl result = wmsToAcsService.orderStatusUpdate(array); if (!HttpStatus.OK.equals(result.get("status"))) { - throw new BadRequestException((String) result.get("message")); + throw new BadRequestException((String) result.get("message")); } - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,workorder_id); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id); } - public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String...ids) { + public void recordWorkOrder(OptionRecord.OptionEnum optionEnum, String... ids) { List workorders = this.list(new QueryWrapper().in("workorder_id", ids)); for (PdmProduceWorkorder one : workorders) { WorkorderRecord record = WorkorderRecord.builder() @@ -209,7 +209,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .eq("device_code", param.getString("device_code")) - .in("workorder_status","2","3","4") - .ne("workorder_id",param.getString("workorder_id"))); - if(ObjectUtil.isNotEmpty(result)) { + .in("workorder_status", "2", "3", "4") + .ne("workorder_id", param.getString("workorder_id"))); + if (ObjectUtil.isNotEmpty(result)) { throw new BadRequestException("已有工单选择该设备开工,请更换开工设备!"); } JSONArray array = new JSONArray(); - result = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - JSONObject order = packageForm(result); + + JSONObject order = packageForm(param); array.add(order); //下发acs - result.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode()); - Map resp = wmsToAcsService.order(array); - if (((int)resp.get("status")) == (HttpStatus.BAD_REQUEST.value())){ + Map resp = wmsToAcsService.order(array); + PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode()); + if (((int) resp.get("status")) == (HttpStatus.BAD_REQUEST.value())) { throw new BadRequestException(String.valueOf(resp.get("message"))); } - this.update(result,new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE,result.getWorkorder_id()); + this.update(workOrder, new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, result.getWorkorder_id()); return RestBusinessTemplate.execute(() -> resp); } @NotNull - private JSONObject packageForm(PdmProduceWorkorder workOrder) { + private JSONObject packageForm(JSONObject param) { + PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); JSONObject form = new JSONObject(); MdMeMaterialbase material = materialbaseService.getOne(new QueryWrapper().eq("material_id", workOrder.getMaterial_id())); PdmBiDevice device = deviceService.getOne(new QueryWrapper().eq("device_code", workOrder.getDevice_code())); - form.put("workorder_id",workOrder.getWorkorder_id()); - form.put("workorder_code",workOrder.getWorkorder_code()); + form.put("workorder_id", workOrder.getWorkorder_id()); + form.put("workorder_code", workOrder.getWorkorder_code()); form.put("qty", workOrder.getPlan_qty()); - form.put("outupperlimit_qty",device.getOutupperlimit_qty()); - form.put("material_id",workOrder.getMaterial_id()); - form.put("material_name",material.getMaterial_name()); - form.put("material_code",material.getMaterial_code()); - form.put("material_spec",material.getMaterial_spec()); - form.put("device_code",workOrder.getDevice_code()); - form.put("is_needmove",workOrder.getIs_needmove()); + form.put("outupperlimit_qty", device.getOutupperlimit_qty()); + form.put("material_id", workOrder.getMaterial_id()); + form.put("material_name", material.getMaterial_name()); + form.put("material_code", material.getMaterial_code()); + form.put("material_spec", material.getMaterial_spec()); + form.put("device_code", workOrder.getDevice_code()); + form.put("is_needmove", workOrder.getIs_needmove() ? 1 : 0); + if (param.containsKey("extra_map")) { + form.put("extra_map", param.getJSONObject("extra_map")); + } return form; } @Override @Transactional public Object report(JSONObject param) { - Assert.notNull(new Object[]{param,param.get("report_qty"),param.get("nok_qty"),param.getBigDecimal("repare_qty")},"请求参数不能为空"); + Assert.notNull(new Object[]{param, param.get("report_qty"), param.get("nok_qty"), param.getBigDecimal("repare_qty")}, "请求参数不能为空"); PdmProduceWorkorder workorder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); - if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode())||workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())){ - throw new BadRequestException(param.getString("workorder_id")+"当前工单已经完工不允许报工"); + if (workorder.getWorkorder_status().equals(WorkerOrderEnum.COMPLETE.getCode()) || workorder.getWorkorder_status().equals(WorkerOrderEnum.FORCE_COMPLETE.getCode())) { + throw new BadRequestException(param.getString("workorder_id") + "当前工单已经完工不允许报工"); } PdmProduceWorkorderrecord one = reportRecordService.getOne(new QueryWrapper() .eq("workorder_id", param.getString("workorder_id")).eq("report_status", ReportRecordStatus.CREATE.getCode())); - if ( one == null) { - throw new BadRequestException(param.getString("workorder_id")+"当前工单没有生成状态的报工记录"); + if (one == null) { + throw new BadRequestException(param.getString("workorder_id") + "当前工单没有生成状态的报工记录"); } workorder.setReport_qty(workorder.getReport_qty().add(param.getBigDecimal("report_qty"))); workorder.setNok_qty(workorder.getReport_qty().add(param.getBigDecimal("nok_qty"))); workorder.setRepare_qty(workorder.getReport_qty().add(param.getBigDecimal("repare_qty"))); - if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()){ + if (workorder.getPlan_qty().doubleValue() <= workorder.getReport_qty().doubleValue()) { workorder.setWorkorder_status(WorkerOrderEnum.COMPLETE.getCode()); } this.updateById(workorder); reportRecordService.update(new UpdateWrapper() - .set("report_qty",param.getBigDecimal("report_qty")) - .set("nok_qty",param.getBigDecimal("nok_qty")) - .set("repare_qty",param.getBigDecimal("repare_qty")) - .set("needproduct_qty",workorder.getPlan_qty().doubleValue()-workorder.getReport_qty().doubleValue()) - .eq("macoperate_id",one.getMacoperate_id())); + .set("report_qty", param.getBigDecimal("report_qty")) + .set("nok_qty", param.getBigDecimal("nok_qty")) + .set("repare_qty", param.getBigDecimal("repare_qty")) + .set("needproduct_qty", workorder.getPlan_qty().doubleValue() - workorder.getReport_qty().doubleValue()) + .eq("macoperate_id", one.getMacoperate_id())); return one.getMacoperate_id(); } @@ -584,7 +589,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl workreportRecords = param.toJavaList(PdmProduceWorkorderrecord.class); - if (!CollectionUtils.isEmpty(workreportRecords)){ + if (!CollectionUtils.isEmpty(workreportRecords)) { List macoperate_ids = workreportRecords.stream().map(PdmProduceWorkorderrecord::getMacoperate_id).collect(Collectors.toList()); List record = reportRecordService.list(new QueryWrapper() .in("macoperate_id", macoperate_ids)); @@ -598,7 +603,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl list = packageWorkorderQty(record, itemRecord); - this.baseMapper.batchUpdateByParam(list,entry.getKey()); + this.baseMapper.batchUpdateByParam(list, entry.getKey()); reportRecordService.updateBatchById(itemRecord); } } @@ -616,19 +621,19 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl list = new ArrayList<>(); Map nok_qty = new HashMap<>(); - nok_qty.put("field","nok_qty"); - nok_qty.put("value",Math.abs(new_nok_qty-old_nok_qty)); - nok_qty.put("add",new_nok_qty>old_nok_qty); + nok_qty.put("field", "nok_qty"); + nok_qty.put("value", Math.abs(new_nok_qty - old_nok_qty)); + nok_qty.put("add", new_nok_qty > old_nok_qty); list.add(nok_qty); Map repare_qty = new HashMap<>(); - repare_qty.put("field","repare_qty"); - repare_qty.put("value",Math.abs(new_repare_qty-old_repare_qty)); - repare_qty.put("add",new_repare_qty>old_repare_qty); + repare_qty.put("field", "repare_qty"); + repare_qty.put("value", Math.abs(new_repare_qty - old_repare_qty)); + repare_qty.put("add", new_repare_qty > old_repare_qty); list.add(repare_qty); Map report_qty = new HashMap<>(); - report_qty.put("field","report_qty"); - report_qty.put("value",Math.abs(new_report_qty-old_report_qty)); - report_qty.put("add",new_report_qty>old_report_qty); + report_qty.put("field", "report_qty"); + report_qty.put("value", Math.abs(new_report_qty - old_report_qty)); + report_qty.put("add", new_report_qty > old_report_qty); list.add(report_qty); return list; } @@ -646,16 +651,16 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl resp = wmsToAcsService.replaceDevice(array); + Map resp = wmsToAcsService.replaceDevice(array); String status = String.valueOf(resp.get("status")); String message = (String) resp.get("message"); - if(!status.equals("200")) { + if (!status.equals("200")) { throw new BadRequestException(message); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java index e56eed4f..07b3f1ad 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/scheduler/SchedulerController.java @@ -6,14 +6,23 @@ package org.nl.wms.scheduler_manage.controller.scheduler; */ import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.TableDataInfo; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; import org.nl.wms.scheduler_manage.service.scheduler.SchedulerService; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; +import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.List; @RestController @RequestMapping("/api/shceduler") @@ -23,6 +32,9 @@ public class SchedulerController { @Autowired SchedulerService schedulerService; + @Autowired + ISchProcessRouteService processRouteService; + @GetMapping("/all") public ResponseEntity allprocess(){ return new ResponseEntity<>(schedulerService.all(), HttpStatus.OK); @@ -36,4 +48,49 @@ public class SchedulerController { FlowElement element = schedulerService.currentFlow(process, flow); return new ResponseEntity<>(element, HttpStatus.OK); } + + + @GetMapping("/route") + public ResponseEntity route(String blurry){ + QueryWrapper query = new QueryWrapper<>(); + if (StringUtils.isNotEmpty(blurry)){ + query.like("process_id", blurry) + .or() + .like("process_name", blurry) + .or() + .like("material_spec", blurry); + } + List list = processRouteService.list(query); + return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); + } + + @PostMapping("/routeDelete") + public ResponseEntity routeDelete(@RequestBody String[] materialSpecs){ + processRouteService.removeByIds(Arrays.asList(materialSpecs)); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PostMapping("/routeCreate") + public ResponseEntity routeCreate(@RequestBody JSONObject form){ + SchProcessRoute route = form.toJavaObject(SchProcessRoute.class); + ProcessElement process = schedulerService.getProcess(route.getProcess_id()); + if (process == null){ + throw new BadRequestException("当前工序路由id"+route.getProcess_id()+"没有对应xml配置文件配置"); + } + route.setProcess_name(process.getName()); + processRouteService.save(route); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/routeUpdate") + public ResponseEntity routeUpdate(@RequestBody JSONObject form){ + SchProcessRoute route = form.toJavaObject(SchProcessRoute.class); + ProcessElement process = schedulerService.getProcess(route.getProcess_id()); + if (process == null){ + throw new BadRequestException("当前工序路由id"+route.getProcess_id()+"没有对应xml配置文件配置"); + } + route.setProcess_name(process.getName()); + processRouteService.updateById(route); + return new ResponseEntity<>(HttpStatus.OK); + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java index 0fce2d94..a684e26e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/ISchCachelineVehicleService.java @@ -3,6 +3,9 @@ package org.nl.wms.scheduler_manage.service.cacheline; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 服务类 @@ -13,4 +16,5 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ISchCachelineVehicleService extends IService { + List getCachelineVehicle(Map query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java index 6029a4a0..c3bd2e02 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/SchCachelineVehicleMapper.java @@ -3,6 +3,9 @@ package org.nl.wms.scheduler_manage.service.cacheline.dao.mapper; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehicle; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 Mapper 接口 @@ -13,4 +16,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; */ public interface SchCachelineVehicleMapper extends BaseMapper { + List getCachelineVehicle(Map query); + + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml index 995c0639..c15858b7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml @@ -2,4 +2,17 @@ + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java index 04565cc3..887d11e1 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/impl/SchCachelineVehicleServiceImpl.java @@ -6,6 +6,9 @@ import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehicleService import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; + /** *

* 缓存线载具条码表 服务实现类 @@ -17,4 +20,8 @@ import org.springframework.stereotype.Service; @Service public class SchCachelineVehicleServiceImpl extends ServiceImpl implements ISchCachelineVehicleService { + @Override + public List getCachelineVehicle(Map query) { + return this.baseMapper.getCachelineVehicle(query); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java index 065fabdd..f0168faa 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java @@ -39,4 +39,11 @@ public interface ISchBasePointService extends IService { */ void changeActive(JSONObject form); + /** + * 根据设备点位查询设备对应工序 + * @param point_code + * @return + */ + Map findDeviceWorkprodure(String point_code); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java index 9b266290..fb07e862 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java @@ -28,4 +28,6 @@ public interface SchBasePointMapper extends BaseMapper { * @return */ List selectPoint(Map map); + + Map getDeviceWorkprodure(String pointCode); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml index 9ef6d0fd..c4030f11 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml @@ -89,4 +89,11 @@ AND ruledis.load_series >= #{loadSeries} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java index 72567273..e6fda177 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java @@ -140,4 +140,12 @@ public class SchBasePointServiceImpl extends ServiceImpl + * 物料系列调度线路配置表 服务类 + *

+ * + * @author generator + * @since 2023-05-23 + */ +public interface ISchProcessRouteService extends IService { + + SchProcessRoute findByMaterialId(String materialId,String regionCode); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java index 21199dd0..1fd04bbe 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/SchedulerService.java @@ -10,8 +10,6 @@ import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.FlowElement; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl.ProcessElement; import org.springframework.beans.BeansException; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.io.FileSystemResourceLoader; import org.springframework.core.io.Resource; @@ -36,7 +34,6 @@ import java.util.function.Function; */ @Service public class SchedulerService implements BeanPostProcessor { - @Value("${schedulerFile}") private static Map converterMap =new HashMap<>(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java new file mode 100644 index 00000000..2b0faad0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/SchProcessRoute.java @@ -0,0 +1,38 @@ +package org.nl.wms.scheduler_manage.service.scheduler.dao; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; +import lombok.Data; +import lombok.EqualsAndHashCode; + +/** + *

+ * 物料系列调度线路配置表 + *

+ * + * @author generator + * @since 2023-05-23 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sch_process_route") +public class SchProcessRoute implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 规则(物料系列/区域) + */ + @TableId(value ="rule_code" ) + private String rule_code; + + /** + * 袋唯一标识 + */ + private String process_id; + + private String process_name; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java new file mode 100644 index 00000000..46d7f6e2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/SchProcessRouteMapper.java @@ -0,0 +1,17 @@ +package org.nl.wms.scheduler_manage.service.scheduler.dao.mapper; + +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * 物料系列调度线路配置表 Mapper 接口 + *

+ * + * @author generator + * @since 2023-05-23 + */ +public interface SchProcessRouteMapper extends BaseMapper { + + SchProcessRoute findByMaterialId(String materialId); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml new file mode 100644 index 00000000..97949c68 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/dao/mapper/xml/SchProcessRouteMapper.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java new file mode 100644 index 00000000..52464bd3 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/impl/SchProcessRouteServiceImpl.java @@ -0,0 +1,41 @@ +package org.nl.wms.scheduler_manage.service.scheduler.impl; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.wms.scheduler_manage.service.scheduler.dao.SchProcessRoute; +import org.nl.wms.scheduler_manage.service.scheduler.dao.mapper.SchProcessRouteMapper; +import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.system_manage.service.param.ISysParamService; +import org.nl.wms.system_manage.service.param.dao.Param; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** + *

+ * 物料系列调度线路配置表 服务实现类 + *

+ * + * @author generator + * @since 2023-05-23 + */ +@Service +public class SchProcessRouteServiceImpl extends ServiceImpl implements ISchProcessRouteService { + + @Autowired + ISysParamService iSysParamService; + + @Override + public SchProcessRoute findByMaterialId(String materialId, String regionCode) { + Param one = iSysParamService.getOne(new QueryWrapper().eq("code", "process_route")); + String value = one.getValue(); + if (value.equals("1")){ + return this.getOne(new QueryWrapper().eq("rule_code",regionCode)); + }else { + if (StringUtils.isNotEmpty(materialId)){ + return this.baseMapper.findByMaterialId(materialId); + } + } + return null; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java index 7b46ef69..e2aacb89 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowConverter.java @@ -36,9 +36,7 @@ public class FlowConverter implements BaseConverter { } if (XMLStreamConstants.START_ELEMENT == xtr.next()){ System.out.println(xtr.getLocalName()); - Map param = new HashMap(); - param.put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); - element.getParams().add(param); + element.getParams().put(xtr.getAttributeValue(null,"id"),xtr.getAttributeValue(null,"value")); i++; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java index 2877451d..d07b61b5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/scheduler/labelConverter/impl/FlowElement.java @@ -3,6 +3,7 @@ package org.nl.wms.scheduler_manage.service.scheduler.labelConverter.impl; import org.nl.wms.scheduler_manage.service.scheduler.labelConverter.BaseElement; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -16,7 +17,7 @@ public class FlowElement extends BaseElement { private FlowElement targetRef; private String sourceRefId; private String targetRefId; - private List> params = new ArrayList<>(); + private Map params = new HashMap<>(); @@ -54,11 +55,11 @@ public class FlowElement extends BaseElement { this.targetRefId = targetRefId; } - public List> getParams() { + public Map getParams() { return params; } - public void setParams(List> params) { + public void setParams(Map params) { this.params = params; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java index 897aeee2..4a6eb419 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/dao/SchBaseTask.java @@ -1,6 +1,8 @@ package org.nl.wms.scheduler_manage.service.task.dao; import java.math.BigDecimal; + +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.util.Date; @@ -28,6 +30,7 @@ public class SchBaseTask implements Serializable { /** * 任务标识 */ + @TableId(value = "task_id") private String task_id; /** diff --git a/mes/hd/nladmin-system/src/main/resources/scheduler.xml b/mes/hd/nladmin-system/src/main/resources/scheduler.xml index c434d833..cde694e2 100644 --- a/mes/hd/nladmin-system/src/main/resources/scheduler.xml +++ b/mes/hd/nladmin-system/src/main/resources/scheduler.xml @@ -2,8 +2,12 @@ - - + + + + + + diff --git a/mes/qd/src/views/wms/old_manage/old_package/index.vue b/mes/qd/src/views/wms/old_manage/old_package/index.vue index f5771f1e..f9ae5978 100644 --- a/mes/qd/src/views/wms/old_manage/old_package/index.vue +++ b/mes/qd/src/views/wms/old_manage/old_package/index.vue @@ -6,50 +6,119 @@ :inline="true" class="demo-form-inline" label-position="right" - label-width="80px" + label-width="120px" label-suffix=":" > - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + 开工 + + + 打印 + + - - - - - - - - + + + - - + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + @@ -257,7 +339,9 @@ import crudOperation from '@crud/CRUD.operation' import udOperation from '@crud/UD.operation' import pagination from '@crud/Pagination' import crudSectattr from '@/api/wms/basedata/st/sectattr' -/* import checkoutbill from "@/api/wms/st/core/outbill/checkoutbill";*/ +import crudProduceshiftorder from '@/views/wms/product_manage/workorder/produceshiftorder' +import { getLodop } from '@/assets/js/lodop/LodopFuncs' +import orderExt from '@/views/wms/product_manage/workorder/orderExt' const defaultForm = { struct_id: null, @@ -306,14 +390,22 @@ const defaultForm = { } export default { name: 'Structattr', - dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL'], + dicts: ['ST_HEIGHT_TYPE', 'd_lock_type', 'SCH_TASK_TYPE_DTL', 'IS_OR_NOT', 'MPS_BD_ORDERSTATUS', 'WORKORDER_CREATE_TYPE', 'PDM_BI_SHIFTTYPE'], components: { pagination, crudOperation, rrOperation, udOperation }, mixins: [presenter(), header(), form(defaultForm), crud()], cruds() { return CRUD({ title: '仓位', - optShow: { add: true, reset: true }, - url: 'api/structattr', + optShow: { + reset: true + }, + query: { + workorder_status: '2', + product_area: 'A2', + workprocedure_code: 'BZ', + is_error: '0' + }, + url: 'api/produceWorkorder', idField: 'struct_id', crudMethod: { ...crudStructattr } }) @@ -334,7 +426,10 @@ export default { } return { sects: [], + currentRow: null, invtypelist: [], + roadList: ['1', '2', '3', '4', '5', '6', '7'], + confirm_flag: true, permission: {}, rules: { struct_id: [ @@ -382,13 +477,11 @@ export default { crudSectattr.getSect({}).then(res => { this.sects = res.content }) - /* checkoutbill.getInvTypes().then(res => { - this.invtypelist = res - })*/ }, methods: { // 钩子:在获取表格数据之前执行,false 则代表不获取数据 [CRUD.HOOK.beforeRefresh]() { + this.currentRow = {} return true }, [CRUD.HOOK.afterToEdit](crud, form) { @@ -397,6 +490,33 @@ export default { val[1] = form.sect_id form.cascader = val }, + handleSelectionChange(val, row) { + if (val.length > 1) { + this.$refs.table.clearSelection() + this.$refs.table.toggleRowSelection(val.pop()) + this.buttonChange(row) + } else if (val.length === 1) { + this.buttonChange(row) + } else { + this.handleCurrentChange(null) + } + }, + buttonChange(currentRow) { + if (currentRow !== null) { + this.currentRow = currentRow + this.confirm_flag = false + } + }, + onSelectAll() { + this.$refs.table.clearSelection() + this.handleCurrentChange(null) + }, + handleCurrentChange(currentRow) { + if (currentRow === null) { + this.confirm_flag = true + this.currentRow = {} + } + }, sectChange(val) { this.form.sect_id = val[1] }, @@ -410,6 +530,23 @@ export default { taskdtl_typeFormat(row) { return this.dict.label.SCH_TASK_TYPE_DTL[row.taskdtl_type] }, + startWork() { + if (!this.crud.query.one_box_package_qty || !this.crud.query.one_package_qty || !this.crud.query.box_type || + !this.crud.query.target_roadway || !this.crud.query.is_flip || + !this.crud.query.tray_full_num) { + this.crud.notify('缺少开工必要参数,保证输入框内不能为空!', CRUD.NOTIFICATION_TYPE.INFO) + return + } + debugger + this.currentRow.extra_map = this.crud.query + this.currentRow.extra_map.package_qty = Math.ceil(this.currentRow.plan_qty / this.currentRow.extra_map.one_package_qty) + this.currentRow.extra_map.box_num = Math.ceil(this.currentRow.extra_map.package_qty / this.currentRow.extra_map.one_box_package_qty) + orderExt.add(this.currentRow).then(res => { + this.notify('操作成功', 'success') + }) + crudProduceshiftorder.openStart(this.currentRow).then(res => { + }) + }, sectQueryChange(val) { if (val.length === 1) { this.query.stor_id = val[0] @@ -425,6 +562,33 @@ export default { } this.crud.toQuery() }, + print() { + if (!this.currentRow) { + this.crud.notify('请选择一条工单记录进行打印', CRUD.NOTIFICATION_TYPE.INFO) + } + orderExt.getExtList(this.currentRow).then(res => { + debugger + const item = res[0] + // res.forEach((item) => { + const LODOP = getLodop() + LODOP.SET_SHOW_MODE('HIDE_DISBUTTIN_SETUP', 1)// 隐藏那些无效按钮 + // 打印纸张大小设置https://www.it610.com/article/2094844.html + LODOP.SET_PRINT_PAGESIZE(1, '80mm', '50mm', '') + // LODOP.ADD_PRINT_RECT('0mm', '0mm', '48mm', '28mm', 0, 1) + LODOP.ADD_PRINT_BARCODE('10mm', '12mm', '60mm', '25mm', '128Auto', item.bar_code) + LODOP.SET_PRINT_STYLEA(0, 'ShowBarText', 0) + LODOP.ADD_PRINT_TEXT('35mm', '22mm', '40mm', '20mm', item.bar_code.substring(0, 9)) + LODOP.SET_PRINT_STYLEA(0, 'FontSize', 20) + LODOP.ADD_PRINT_TEXT('42mm', '25mm', '40mm', '20mm', item.bar_code.substring(9, 16)) + console.log(item.barcode) + LODOP.SET_PRINT_STYLEA(0, 'FontSize', 20) + // LODOP.PRINT()// 打印 + // LODOP.PREVIEW() + }) + // }) + this.crud.notify('打印成功', CRUD.NOTIFICATION_TYPE.SUCCESS) + this.crud.toQuery() + }, // 改变状态 format_is_used(is_used) { return is_used === true diff --git a/mes/qd/src/views/wms/product_manage/workorder/orderExt.js b/mes/qd/src/views/wms/product_manage/workorder/orderExt.js new file mode 100644 index 00000000..5e0f8750 --- /dev/null +++ b/mes/qd/src/views/wms/product_manage/workorder/orderExt.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/mpsSaleOrderIcExt', + method: 'post', + data + }) +} + +export function getExtList(data) { + return request({ + url: 'api/mpsSaleOrderIcExt/getExtList', + method: 'post', + data + }) +} + +export default { add, getExtList } diff --git a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js index b35c8ca5..380581d2 100644 --- a/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js +++ b/mes/qd/src/views/wms/product_manage/workorder/produceshiftorder.js @@ -65,7 +65,7 @@ export function getTable(data) { export function openStart(data) { return request({ - url: 'api/produceWorkorder/openStart', + url: 'api/produceshiftorder/openStart', method: 'post', data }) diff --git a/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue new file mode 100644 index 00000000..655d7b66 --- /dev/null +++ b/mes/qd/src/views/wms/scheduler_manage/scheduler/index.vue @@ -0,0 +1,102 @@ + + + + + diff --git a/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js b/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js new file mode 100644 index 00000000..160ddcfb --- /dev/null +++ b/mes/qd/src/views/wms/scheduler_manage/scheduler/schedulerRoute.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function getRoutes() { + return request({ + url: '/api/shceduler/route', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: '/api/shceduler/routeCreate', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: '/api/shceduler/routeDelete', + method: 'post', + data: ids + }) +} + +export function edit(data) { + return request({ + url: '/api/shceduler/routeUpdate', + method: 'post', + data + }) +} + +export default { getRoutes, add, edit, del } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java index e1a89032..05dc4824 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDefination.java @@ -11,7 +11,7 @@ import java.util.LinkedList; import java.util.List; /** - * 开箱机 + * 刻字包装机 */ @Service public class HailiangOldLetteringPackageDeviceDefination implements OpcDeviceDriverDefination { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java index 058f9118..5a265278 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.Map; /** - * 老车间-刻字包装输送线 + * 老车间-刻字包装机 */ @Slf4j @Data @@ -76,10 +76,7 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr try { device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); - move = this.itemProtocol.getMove(); error = this.itemProtocol.getError(); - task = this.itemProtocol.getTask(); - barcode = this.itemProtocol.getBarcode(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); @@ -96,9 +93,6 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); } - if (task != last_task) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task + "复位请求标记"); - } } catch (Exception var17) { var17.printStackTrace(); @@ -117,12 +111,6 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr Instruction instruction = null; List toInstructions; - if(move == 1 && error == 0 && barcode.length() > 0){ - - } - - - } @@ -150,27 +138,27 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr } + @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); if (ealingOrderDto != null) { String is_foreward = ealingOrderDto.getIs_foreward(); Map map = new HashMap<>(); - map.put("to_clear", "1"); - map.put("to_is_foreward", is_foreward); - map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); - map.put("to_order", ealingOrderDto.getOrder_code()); + map.put("to_qty", dto.getQty()); + map.put("to_order", dto.getOrder_code()); + map.put("item_to_bz_qty", dto.getPackage_qty()); + map.put("item_to_box_qty", dto.getBox_num()); + map.put("to_one_box_qty", dto.getOne_box_package_qty()); + map.put("to_one_bag_qty", dto.getOne_package_qty()); + map.put("to_one_box_qty", dto.getOne_box_package_qty()); this.writing(map); } } @Override public void issuedOrderFinish(String autoFinish) { - if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { - this.writing("to_order_compel_finished", "1"); - } else { - this.writing("to_confirm_finished", "1"); - } + } @Override diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java index d8ca352a..f0e9d9b2 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java @@ -13,20 +13,32 @@ public class ItemProtocol { public static String item_heartbeat = "heartbeat"; public static String item_mode = "mode"; - public static String item_move = "move"; - public static String item_action = "action"; + public static String item_kz_mode = "kz_mode"; + public static String item_ds_mode = "ds_mode"; + public static String item_bz_mode = "bz_mode"; + public static String item_kz_status = "kz_status"; + public static String item_ds_status = "ds_status"; + public static String item_bz_status = "bz_status"; public static String item_error = "error"; - public static String item_direction = "direction"; - public static String item_vehicle_type = "vehicle_type"; - public static String item_task = "task"; - public static String item_barcode = "barcode"; - - - public static String item_to_command = "to_command"; - public static String item_to_target = "to_target"; - public static String item_to_vehicle_type = "to_vehicle_type"; - public static String item_to_task = "to_task"; + public static String item_kz_error = "kz_error"; + public static String item_ds_error = "ds_error"; + public static String item_bz_error = "bz_error"; + public static String item_kz_qty = "kz_qty"; + public static String item_ds_qty = "ds_qty"; + public static String item_bz_qty = "bz_qty"; + public static String item_order_finish = "order_finish"; + public static String item_order_compulsion_finish = "order_compulsion_finish"; + public static String item_order = "order"; + public static String item_to_order_qty = "to_order_qty"; + public static String item_to_bz_qty = "to_bz_qty"; + public static String item_to_box_qty = "to_box_qty"; + public static String item_to_one_box_qty = "to_one_box_qty"; + public static String item_to_one_bag_qty = "to_one_bag_qty"; + public static String item_to_finish = "to_finish"; + public static String item_to_compulsion_finish = "to_compulsion_finish"; + public static String item_to_order = "to_order"; + public static String item_to_clear = "to_clear"; private HailiangOldLetteringPackageDeviceDriver driver; @@ -43,45 +55,62 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_mode); } - public int getMove() { - return this.getOpcIntegerValue(item_move); + public int getKz_mode() { + return this.getOpcIntegerValue(item_kz_mode); } - public int getAction() { - return this.getOpcIntegerValue(item_action); + public int getDs_mode() { + return this.getOpcIntegerValue(item_ds_mode); } - public String getBarcode() { - return this.getOpcStringValue(item_barcode); + public int getBz_mode() { + return this.getOpcIntegerValue(item_bz_mode); + } + + public int getKz_status() { + return this.getOpcIntegerValue(item_kz_status); + } + + public int getDs_status() { + return this.getOpcIntegerValue(item_ds_status); + } + + public int getBz_status() { + return this.getOpcIntegerValue(item_bz_status); + } + + public int getKz_qty() { + return this.getOpcIntegerValue(item_kz_qty); + } + + public int getDs_qty() { + return this.getOpcIntegerValue(item_ds_qty); + } + + public int getBz_qty() { + return this.getOpcIntegerValue(item_bz_qty); } public int getError() { return this.getOpcIntegerValue(item_error); } - public int getVehicle_type() { - return this.getOpcIntegerValue(item_vehicle_type); + public int getKz_error() { + return this.getOpcIntegerValue(item_kz_error); } - public int getTask() { - return this.getOpcIntegerValue(item_task); + public int getDs_error() { + return this.getOpcIntegerValue(item_ds_error); } - public int getToCommand() { - return this.getOpcIntegerValue(item_to_command); + public int getBz_error() { + return this.getOpcIntegerValue(item_bz_error); } - public int getToTarget() { - return this.getOpcIntegerValue(item_to_target); + public int getOrder() { + return this.getOpcIntegerValue(item_order); } - public int getToVehicle_type() { - return this.getOpcIntegerValue(item_to_vehicle_type); - } - - public int getToTask() { - return this.getOpcIntegerValue(item_to_task); - } //是否有货 public int hasGoods(int move) { @@ -116,24 +145,38 @@ public class ItemProtocol { public static List getReadableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_heartbeat, "心跳", "VW0")); - list.add(new ItemDto(item_mode, "工作状态", "VW2", Boolean.valueOf(true))); - list.add(new ItemDto(item_move, "光电开关信号", "VW4")); - list.add(new ItemDto(item_action, "取放信号", "VW6")); - list.add(new ItemDto(item_direction, "电机方向", "VW8")); - list.add(new ItemDto(item_vehicle_type, "托盘类型", "VW10")); - list.add(new ItemDto(item_error, "报警信号", "VW12")); - list.add(new ItemDto(item_task, "任务号", "VD14")); - list.add(new ItemDto(item_barcode, "条码", "VB18.20")); + list.add(new ItemDto(item_heartbeat, "心跳", "DB600.W0")); + list.add(new ItemDto(item_mode, "工作模式", "DB600.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_kz_mode, "刻字机工作模式", "DB600.W4", Boolean.valueOf(true))); + list.add(new ItemDto(item_ds_mode, "点数机工作模式", "DB600.W6", Boolean.valueOf(true))); + list.add(new ItemDto(item_bz_mode, "包装机工作模式", "DB600.W8", Boolean.valueOf(true))); + list.add(new ItemDto(item_kz_status, "刻字机工作状态", "DB600.W10")); + list.add(new ItemDto(item_ds_status, "点数机工作状态", "DB600.W12")); + list.add(new ItemDto(item_bz_status, "包装机工作状态", "DB600.W14")); + list.add(new ItemDto(item_error, "报警信号", "DB600.W16")); + list.add(new ItemDto(item_kz_error, "刻字机报警信号", "DB600.W18")); + list.add(new ItemDto(item_ds_error, "点数机报警信号", "DB600.W20")); + list.add(new ItemDto(item_bz_error, "包装机报警信号", "DB600.W22")); + list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.W24")); + list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.W26")); + list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W28")); + list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W30")); + list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W32")); + list.add(new ItemDto(item_order, "工单号", "DB600.D34")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发作业命令", "VW2", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "下发目标站", "VW4")); - list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "VW6")); - list.add(new ItemDto(item_to_task, "任务号", "VD8")); + list.add(new ItemDto(item_to_order_qty, "下发工单数量", "DB610.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_bz_qty, "下发包装袋数", "DB610.W4")); + list.add(new ItemDto(item_to_box_qty, "下发箱数", "DB610.W6")); + list.add(new ItemDto(item_to_one_box_qty, "下发每箱袋数", "DB610.W8")); + list.add(new ItemDto(item_to_one_bag_qty, "下发每袋数量", "DB610.W10")); + list.add(new ItemDto(item_to_finish, "下发工单完成反馈", "DB610.W12")); + list.add(new ItemDto(item_to_compulsion_finish, "下发工单强制完成反馈", "DB610.W14")); + list.add(new ItemDto(item_to_order, "下发工单号", "DB610.D16")); + list.add(new ItemDto(item_to_clear, "下发清零", "DB610.W20")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java index 7507ab25..943ee369 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_receiving_station/HailiangOldPackageReceivingStationDeviceDriver.java @@ -34,7 +34,7 @@ import java.util.Map; @Slf4j @Data @RequiredArgsConstructor -public class HailiangOldPackageReceivingStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { +public class HailiangOldPackageReceivingStationDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor { protected ItemProtocol itemProtocol = new ItemProtocol(this); DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @@ -162,36 +162,4 @@ public class HailiangOldPackageReceivingStationDeviceDriver extends AbstractOpcD } - @Override - public void issuedOrderInfo(ProduceshiftorderDto dto) { - EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); - if (ealingOrderDto != null) { - String is_foreward = ealingOrderDto.getIs_foreward(); - Map map = new HashMap<>(); - map.put("to_clear", "1"); - map.put("to_is_foreward", is_foreward); - map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); - map.put("to_order", ealingOrderDto.getOrder_code()); - this.writing(map); - } - } - - @Override - public void issuedOrderFinish(String autoFinish) { - if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { - this.writing("to_order_compel_finished", "1"); - } else { - this.writing("to_confirm_finished", "1"); - } - } - - @Override - public void toStop() { - - } - - @Override - public void toStart() { - - } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java index 5fed8a06..4b4ccaa7 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java @@ -92,8 +92,8 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr this.writing("to_command", "0"); this.writing("to_target", "0"); } + requireSucess =false; } - if (error != last_error) { if (error != 0) { DeviceErrorLogDto dto = new DeviceErrorLogDto(); @@ -104,7 +104,6 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr } logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); } - if (task != last_task) { logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task + "复位请求标记"); } @@ -126,7 +125,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr Instruction instruction = null; List toInstructions; - if(move == 1 && error == 0 && barcode.length() > 0){ + if(move == 1 && error == 0 && barcode.length() > 0 && requireSucess == false ){ //2305281100001 if(barcode.trim().length() == 16){ if(isNumeric(barcode.trim())){ @@ -140,9 +139,10 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr int isFlip = Integer.parseInt(barcode.trim().substring(9,10)); int target = Integer.parseInt(barcode.trim().substring(10,11)); if(isFlip>0 && target>0){ - this.writing("to_command", String.valueOf(isFlip)); + this.writing("to_is_flip",String.valueOf(isFlip)); this.writing("to_target", String.valueOf(target)); - + this.writing("to_command","1"); + requireSucess = true; } else { message = "条码:"+ barcode + ",是否翻转:"+isFlip + "目标巷道:"+target; } @@ -165,6 +165,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr last_move = move; last_error = error; last_task = task; + last_barcode = barcode; } @@ -172,8 +173,33 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode == 1 ? "联机" : "未联机"); - jo.put("move", move == 1 ? "有货" : "无货"); + String mode = ""; + String action = ""; + String move = ""; + if (this.getMode() == 0) { + mode = "未联机"; + } else if (this.getMode() == 1) { + mode = "单机"; + } else if (this.getMode() == 2) { + mode = "联机"; + } else if (this.getMode() == 3) { + mode = "运行中"; + } + if (this.getMove() == 0) { + move = "无货"; + jo.put("hasGoods", false); + } else if (this.getMove() == 1) { + move = "有货"; + jo.put("hasGoods", true); + } else if (this.getMove() == 2) { + move = "有托盘有货"; + jo.put("move", move); + jo.put("hasGoods", true); + } + jo.put("move", move); + jo.put("mode", mode); + jo.put("isOnline", this.getIsonline()); + jo.put("isError", this.getIserror()); jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); jo.put("task", task); jo.put("barcode", barcode); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java index 3868dd53..2f0392a3 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/ItemProtocol.java @@ -19,15 +19,17 @@ public class ItemProtocol { public static String item_action = "action"; public static String item_error = "error"; public static String item_direction = "direction"; - public static String item_vehicle_type = "vehicle_type"; + public static String item_is_flip = "is_flip"; public static String item_task = "task"; public static String item_barcode = "barcode"; public static String item_to_command = "to_command"; public static String item_to_target = "to_target"; - public static String item_to_vehicle_type = "to_vehicle_type"; public static String item_to_task = "to_task"; + public static String item_to_is_flip = "to_is_flip"; + public static String item_to_barcode = "to_barcode"; + @@ -61,8 +63,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_error); } - public int getVehicle_type() { - return this.getOpcIntegerValue(item_vehicle_type); + public int getIsflip() { + return this.getOpcIntegerValue(item_is_flip); } public int getTask() { @@ -77,10 +79,6 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_to_target); } - public int getToVehicle_type() { - return this.getOpcIntegerValue(item_to_vehicle_type); - } - public int getToTask() { return this.getOpcIntegerValue(item_to_task); } @@ -123,7 +121,7 @@ public class ItemProtocol { list.add(new ItemDto(item_move, "光电开关信号", "DB600.W4")); list.add(new ItemDto(item_action, "取放信号", "DB600.W6")); list.add(new ItemDto(item_direction, "电机方向", "DB600.W8")); - list.add(new ItemDto(item_vehicle_type, "托盘类型", "DB600.W10")); + list.add(new ItemDto(item_is_flip, "是否翻转", "DB600.W10")); list.add(new ItemDto(item_error, "报警信号", "DB600.W12")); list.add(new ItemDto(item_task, "任务号", "DB600.D14")); list.add(new ItemDto(item_barcode, "条码", "DB600.STRING18.20")); @@ -132,10 +130,11 @@ public class ItemProtocol { public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_command, "下发作业命令", "DB601.W0", Boolean.valueOf(true))); - list.add(new ItemDto(item_to_target, "下发目标站", "DB601.W2")); - list.add(new ItemDto(item_to_vehicle_type, "下发托盘类型", "DB601.W4")); - list.add(new ItemDto(item_to_task, "任务号", "DB601.D6")); + list.add(new ItemDto(item_to_command, "下发作业命令", "DB610.W2", Boolean.valueOf(true))); + list.add(new ItemDto(item_to_target, "下发目标站", "DB610.W4")); + list.add(new ItemDto(item_to_is_flip, "下发是否翻转", "DB610.W6")); + list.add(new ItemDto(item_to_task, "下发任务号", "DB610.D8")); + list.add(new ItemDto(item_to_barcode, "下发条码", "DB610.STRING12.20")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java index 9bce7be5..7d5a0ea4 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java @@ -12,6 +12,7 @@ import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; +import org.nl.acs.history.ErrorUtil; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; @@ -185,6 +186,34 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_name", this.getDevice().getDevice_name()); + String mode = ""; + String action = ""; + String move = ""; + if (this.getMode() == 0) { + mode = "未联机"; + } else if (this.getMode() == 1) { + mode = "单机"; + } else if (this.getMode() == 2) { + mode = "联机"; + } else if (this.getMode() == 3) { + mode = "运行中"; + } + if (this.getMove() == 0) { + move = "无货"; + jo.put("hasGoods", false); + } else if (this.getMove() == 1) { + move = "有货"; + jo.put("hasGoods", true); + } else if (this.getMove() == 2) { + move = "有托盘有货"; + jo.put("hasGoods", true); + } + jo.put("isOnline", this.getIsonline()); + jo.put("isError", this.getIserror()); + jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); + jo.put("isOnline", this.itemProtocol.getIsonline()); + jo.put("message", message); return jo; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java index e7f623ac..8cdd07cb 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java @@ -1,5 +1,8 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -8,18 +11,25 @@ import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx.HailiangLetteringPackageSsxDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station.HailiangOldPalletizingStationDriver; +import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_auto_cache_line.HailiangAutoCacheLineDeviceDriver; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; +import org.nl.acs.history.ErrorUtil; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.order.service.ProduceshiftorderService; +import org.nl.acs.order.service.dto.ProduceshiftorderDto; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; @@ -52,6 +62,9 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + @Autowired + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + //心跳 int heartbeat = 0; int last_heartbeat = 0; @@ -87,7 +100,7 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive //请求码垛完成标志 Boolean stackingRequireSuccess = false; - + JSONArray barcodeArr = new JSONArray(); //当前设备状态 01代表 关机, 02代表 开机, 03代表 生产中, 04代表 待机, 05代表 异常 int status_type = 0; //上次设备状态 @@ -139,6 +152,9 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive logServer.deviceExecuteLog(this.device_code, "", "", "信号status:" + last_status + "->" + status); } if (action != last_action) { + vehicleInfoRequireSuccess = false; + singlePlacementRequireSuccess =false; + stackingRequireSuccess = false; logServer.deviceItemValue(this.device_code, "action", String.valueOf(action)); logServer.deviceExecuteLog(this.device_code, "", "", "信号action:" + last_action + "->" + action); } @@ -220,28 +236,92 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive //根据kep读取到的抓取工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 String getDeviceCode = getDeviceCodeList.get(getGetStation() - 1).replace("\"", ""); //根据抓取工位获取托盘信息 - JSONObject map = new JSONObject(); - map.put("getStation", getDeviceCode); - JSONObject resp = acsToWmsService.getVehicle(map); - int code = Integer.parseInt(resp.getString("code")); - String message = resp.getString("message"); - String getStation = resp.getString("getStation"); - String putStation = resp.getString("putStation"); - String encoder_qty = resp.getString("encoder_qty"); - String boxtype = resp.getString("boxtype"); - if (code == 200) { - //根据获取托盘信息返回的结果 得到对应抓取工位/放货工位设备编码所在的索引位置 - int getIndex = getDeviceCodeList.indexOf(getStation); - int putIndex = putDeviceCodeList.indexOf(putStation); - //将的到的索引 + 1 写入kep中 - this.writing("to_getStation", String.valueOf(getIndex + 1)); +// JSONObject map = new JSONObject(); +// map.put("getStation", getDeviceCode); +// JSONObject resp = acsToWmsService.getVehicle(map); +// int code = Integer.parseInt(resp.getString("code")); +// String message = resp.getString("message"); +// String getStation = resp.getString("getStation"); +// String putStation = resp.getString("putStation"); +// String encoder_qty = resp.getString("encoder_qty"); +// String boxtype = resp.getString("boxtype"); +// if (code == 200) { +// //根据获取托盘信息返回的结果 得到对应抓取工位/放货工位设备编码所在的索引位置 +// int getIndex = getDeviceCodeList.indexOf(getStation); +// int putIndex = putDeviceCodeList.indexOf(putStation); +// //将的到的索引 + 1 写入kep中 +// this.writing("to_getStation", String.valueOf(getIndex + 1)); +// this.writing("to_putStation", String.valueOf(putIndex + 1)); +// this.writing("to_boxtype", boxtype); +// this.writing("to_feedback", "1"); +// //获取托盘信息成功后 设为true 防止多次请求 等单次防止完成时设为false +// this.setVehicleInfoRequireSuccess(true); +// } else { +// log.warn("获取托盘信息失败!设备号:{},原因{}", device_code, message); +// } + + int getIndex = 0; + int putIndex = 0; + //获取取货位条码 + Device getDevice = deviceAppservice.findDeviceByCode(getDeviceCode); + HailiangLetteringPackageSsxDeviceDriver hailiangLetteringPackageSsxDeviceDriver; + if(getDevice.getDeviceDriver() instanceof HailiangLetteringPackageSsxDeviceDriver ) { + hailiangLetteringPackageSsxDeviceDriver = (HailiangLetteringPackageSsxDeviceDriver) getDevice.getDeviceDriver(); + String barcode = hailiangLetteringPackageSsxDeviceDriver.getBarcode(); + if (Objects.isNull(barcode)) { + message = "获取托盘信息,取货位:" + getDeviceCode + "条码为空"; + return false; + } + String order = barcode.trim().substring(0,9); + ProduceshiftorderDto dto =produceshiftorderService.findByCodeFromCache(order); + if(Objects.isNull(dto)){ + message = "获取托盘信息,工单号:" + order + "未找到对应工单"; + return false; + } + String boxType = dto.getBox_type(); + String tray_full_num = dto.getTray_full_num(); + String targetStation = null; + for(int i=0;i" + mode + "复位请求标记"); @@ -142,9 +132,19 @@ public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDri jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode == 1 ? "联机" : "未联机"); jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); - jo.put("now_order_num", now_order_num); - jo.put("task", task); - jo.put("order", order); + jo.put("qty", qty); + jo.put("status", this.itemProtocol.getStatus()==1 ? "未知":"工作中"); + jo.put("one_qty", this.itemProtocol.getOne_qty()); + jo.put("two_qty", this.itemProtocol.getTwo_qty()); + jo.put("three_qty", this.itemProtocol.getThree_qty()); + jo.put("four_qty", this.itemProtocol.getFour_qty()); + jo.put("five_qty", this.itemProtocol.getFive_qty()); + jo.put("one_status", this.itemProtocol.getStatus()); + jo.put("two_status", this.itemProtocol.getStatus()); + jo.put("three_status", this.itemProtocol.getStatus()); + jo.put("four_status", this.itemProtocol.getStatus()); + jo.put("five_status", this.itemProtocol.getStatus()); + jo.put("is_disable", this.itemProtocol.getIs_disable()); jo.put("isOnline", this.itemProtocol.getIsonline()); return jo; } @@ -154,36 +154,4 @@ public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDri } - @Override - public void issuedOrderInfo(ProduceshiftorderDto dto) { - EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); - if (ealingOrderDto != null) { - String is_foreward = ealingOrderDto.getIs_foreward(); - Map map = new HashMap<>(); - map.put("to_clear", "1"); - map.put("to_is_foreward", is_foreward); - map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); - map.put("to_order", ealingOrderDto.getOrder_code()); - this.writing(map); - } - } - - @Override - public void issuedOrderFinish(String autoFinish) { - if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { - this.writing("to_order_compel_finished", "1"); - } else { - this.writing("to_confirm_finished", "1"); - } - } - - @Override - public void toStop() { - - } - - @Override - public void toStart() { - - } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java index 0713e327..7b74a467 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/ItemProtocol.java @@ -41,6 +41,8 @@ public class ItemProtocol { public static String item_four_status = "four_status"; //前往5巷道状态 public static String item_five_status = "five_status"; + //是否禁用 + public static String item_is_disable = "is_disable"; //前往1巷道状态 @@ -55,6 +57,9 @@ public class ItemProtocol { public static String item_to_five_status = "to_five_status"; //清零 public static String item_to_clear = "to_clear"; + //禁用 + public static String item_to_is_disable = "to_is_disable"; + private HailiangOldUnboxingMachineDeviceDriver driver; @@ -122,6 +127,9 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_five_status); }; + public int getIs_disable() { + return this.getOpcIntegerValue(item_is_disable); + }; Boolean isonline; @@ -155,17 +163,20 @@ public class ItemProtocol { list.add(new ItemDto(item_three_status, "3号巷道状态", "DB600.W24")); list.add(new ItemDto(item_four_status, "4号巷道状态", "DB600.W26")); list.add(new ItemDto(item_five_status, "5号巷道状态", "DB600.W28")); + list.add(new ItemDto(item_is_disable, "是否禁用", "DB600.W30")); return list; } public static List getWriteableItemDtos() { ArrayList list = new ArrayList(); - list.add(new ItemDto(item_to_one_status, "禁用1号巷道状态", "DB601.W2")); - list.add(new ItemDto(item_to_two_status, "禁用2号巷道状态", "DB600.W4")); - list.add(new ItemDto(item_to_three_status, "禁用3号巷道状态", "DB600.W6")); - list.add(new ItemDto(item_to_four_status, "禁用4号巷道状态", "DB600.W8")); - list.add(new ItemDto(item_to_five_status, "禁用5号巷道状态", "DB600.W10")); - list.add(new ItemDto(item_to_clear, "清零", "DB600.W12")); + list.add(new ItemDto(item_to_one_status, "禁用1号巷道状态", "DB610.W2")); + list.add(new ItemDto(item_to_two_status, "禁用2号巷道状态", "DB610.W4")); + list.add(new ItemDto(item_to_three_status, "禁用3号巷道状态", "DB610.W6")); + list.add(new ItemDto(item_to_four_status, "禁用4号巷道状态", "DB610.W8")); + list.add(new ItemDto(item_to_five_status, "禁用5号巷道状态", "DB610.W10")); + list.add(new ItemDto(item_to_clear, "下发清零", "DB610.W12")); + list.add(new ItemDto(item_to_is_disable, "下发禁用", "DB610.W14")); + return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index f5db58d4..fd423fe8 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -572,34 +572,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public JSONObject stackingCompleted(JSONObject param) { - a = 20; - JSONObject map = new JSONObject(); - map.put("code", 200); - map.put("message", "成功"); - map.put("data", null); - return map; -// try { -// MDC.put(log_file_type, log_type); -// String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); -// HttpResponse result = null; -// log.info("stackingCompleted-----码垛完成请求"); -// AddressDto addressDto = addressService.findByCode("stackingCompleted"); -// String methods_url = addressDto.getMethods_url(); -// try { -// result = HttpRequest.get(wmsurl + methods_url) -// .body("") -// .execute(); -// log.info("stackingCompleted-----码垛完成输出参数{}", result.body().toString()); -// } catch (Exception e) { -// String msg = e.getMessage(); -// //网络不通 -// System.out.println(msg); -// } -// JSONObject jo = JSONObject.parseObject(result.body()); -// return jo; -// } finally { -// MDC.remove(log_file_type); -// } +// a = 20; +// JSONObject map = new JSONObject(); +// map.put("code", 200); +// map.put("message", "成功"); +// map.put("data", null); +// return map; + try { + MDC.put(log_file_type, log_type); + String wmsurl = paramService.findByCode(AcsConfig.WMSURL).getValue(); + HttpResponse result = null; + log.info("stackingCompleted-----码垛完成请求"); + AddressDto addressDto = addressService.findByCode("stackingCompleted"); + String methods_url = addressDto.getMethods_url(); + try { + result = HttpRequest.get(wmsurl + methods_url) + .body("") + .execute(); + log.info("stackingCompleted-----码垛完成输出参数{}", result.body().toString()); + } catch (Exception e) { + String msg = e.getMessage(); + //网络不通 + System.out.println(msg); + } + JSONObject jo = JSONObject.parseObject(result.body()); + return jo; + } finally { + MDC.remove(log_file_type); + } } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index c61325d7..dfc68fc7 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -246,6 +246,28 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String is_used_fxx = param.getString("is_used_fxx"); String ealing_device_code = param.getString("ealing_device_code"); String unboxing_device_code = param.getString("unboxing_device_code"); + + Map extra_map = param.getJSONObject("extra_map"); + + //老车间包装工单信息 + //每箱袋数 + String one_box_package_qty = extra_map.get("one_box_package_qty").toString(); + //袋数 + String package_qty = extra_map.get("package_qty").toString(); + //每袋数量 + String one_package_qty = extra_map.get("one_package_qty").toString(); + //箱数 + String box_num = extra_map.get("box_num").toString(); + //箱型 + String box_type = extra_map.get("box_type").toString(); + //目标巷道 + String target_roadway = extra_map.get("target_roadway").toString(); + //是否翻转 + String is_flip = extra_map.get("is_flip").toString(); + //托盘满托数量 + String tray_full_num = extra_map.get("tray_full_num").toString(); + + Map params = param.getJSONObject("params"); EalingOrderDto ealingOrderDto = null; if (ObjectUtil.isNotEmpty(params)) { @@ -317,6 +339,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { dto.setIs_used_fxx(is_used_fxx); dto.setEaling_device_code(ealing_device_code); dto.setUnboxing_device_code(unboxing_device_code); + dto.setOne_box_package_qty(one_box_package_qty); + dto.setOne_package_qty(one_package_qty); + dto.setPackage_qty(package_qty); + dto.setBox_num(box_num); + dto.setBox_type(box_type); + dto.setTarget_roadway(target_roadway); + dto.setIs_flip(is_flip); + dto.setTray_full_num(tray_full_num); dto.setEalingOrderDto(ealingOrderDto); dto.setCreate_by("mes"); try { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/dto/ProduceshiftorderDto.java b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/dto/ProduceshiftorderDto.java index c92b4eef..3cbfa997 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/dto/ProduceshiftorderDto.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/dto/ProduceshiftorderDto.java @@ -135,4 +135,44 @@ public class ProduceshiftorderDto implements Serializable { */ private EalingOrderDto ealingOrderDto; + /** + * 每箱袋数 + */ + private String one_box_package_qty; + + /** + * 每袋数量 + */ + private String one_package_qty; + + /** + * 箱数 + */ + private String box_num; + + /** + * 箱型 + */ + private String box_type; + + /** + * 目标巷道 + */ + private String target_roadway; + + /** + * 是否翻转 + */ + private String is_flip; + + /** + * 托盘满托数量 + */ + private String tray_full_num; + + /** + * 袋数 + */ + private String package_qty; + } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/wql/order.xls b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/wql/order.xls index 86ffb1b0..cb084961 100644 Binary files a/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/wql/order.xls and b/wcs/nladmin-system/src/main/java/org/nl/acs/order/service/wql/order.xls differ diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java index 90e89fd9..57cdcea3 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/dto/LuceneLogDto.java @@ -82,4 +82,13 @@ public class LuceneLogDto { + last_home + " -> " + home; } + + public LuceneLogDto(final String device_code, final String remark) { + super(); + this.device_code = device_code; + this.content = "设备 [" + + device_code + + "] : " + + remark; + } } diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine.vue index ee900862..a30b7f00 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_receiving_machine.vue @@ -334,61 +334,19 @@ export default { } for (const val in this.data1) { if (this.data1[val].code.indexOf('move') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1) - } - if (this.data1[val].code.indexOf('action') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) } - if (this.data1[val].code.indexOf('ioaction') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 3) - } - if (this.data1[val].code.indexOf('error') !== -1) { + if (this.data1[val].code.indexOf('action') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) } + if (this.data1[val].code.indexOf('is_full') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 6) + } + if (this.data1[val].code.indexOf('error') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 8) + } if (this.data1[val].code.indexOf('task') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 5) - } - if (this.data1[val].code.indexOf('weight') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 9) - } - if (this.data1[val].code.indexOf('batch') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 13) - } - if (this.data1[val].code.indexOf('specifications') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 17) + '.50' - } - if (this.data1[val].code.indexOf('material') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 273) + '.50' - } - if (this.data1[val].code.indexOf('barcode') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 529) + '.50' - } - if (this.data1[val].code.indexOf('AlongSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 785) - } - if (this.data1[val].code.indexOf('BshortSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 787) - } - if (this.data1[val].code.indexOf('Htrapezoidal') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 789) - } - if (this.data1[val].code.indexOf('Wthickness') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 791) - } - if (this.data1[val].code.indexOf('status') !== -1) { - this.data1[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 795) - } - if (this.data1[val].code.indexOf('unqualified_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 795) - } - if (this.data1[val].code.indexOf('encoder_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 799) - } - if (this.data1[val].code.indexOf('order_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 803) - } - if (this.data1[val].code.indexOf('order_No') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 807) + '.50' + this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 10) } } } @@ -414,33 +372,6 @@ export default { if (this.data2[val].code.indexOf('to_task') !== -1) { this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 4) } - if (this.data2[val].code.indexOf('to_barcode') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 8) + '.50' - } - if (this.data2[val].code.indexOf('to_error') !== -1) { - this.data2[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 264) - } - if (this.data2[val].code.indexOf('to_allow_pallet_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 266) - } - if (this.data2[val].code.indexOf('to_material_type') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 268) - } - // if (this.data2[val].code.indexOf('to_material_code') !== -1) { - // this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 272) - // } - if (this.data2[val].code.indexOf('to_order_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 276) - } - if (this.data2[val].code.indexOf('to_product_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 280) - } - if (this.data2[val].code.indexOf('to_order_No') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 284) + '.50' - } - if (this.data2[val].code.indexOf('to_material_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 540) + '.50' - } } } }, diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue index e724b65d..f6ab9efc 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -334,61 +334,25 @@ export default { } for (const val in this.data1) { if (this.data1[val].code.indexOf('move') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1) - } - if (this.data1[val].code.indexOf('action') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) } - if (this.data1[val].code.indexOf('ioaction') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 3) - } - if (this.data1[val].code.indexOf('error') !== -1) { + if (this.data1[val].code.indexOf('action') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) } + if (this.data1[val].code.indexOf('direction') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 6) + } + if (this.data1[val].code.indexOf('is_flip') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 8) + } + if (this.data1[val].code.indexOf('error') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 10) + } if (this.data1[val].code.indexOf('task') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 5) - } - if (this.data1[val].code.indexOf('weight') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 9) - } - if (this.data1[val].code.indexOf('batch') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 13) - } - if (this.data1[val].code.indexOf('specifications') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 17) + '.50' - } - if (this.data1[val].code.indexOf('material') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 273) + '.50' + this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 12) } if (this.data1[val].code.indexOf('barcode') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 529) + '.50' - } - if (this.data1[val].code.indexOf('AlongSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 785) - } - if (this.data1[val].code.indexOf('BshortSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 787) - } - if (this.data1[val].code.indexOf('Htrapezoidal') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 789) - } - if (this.data1[val].code.indexOf('Wthickness') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 791) - } - if (this.data1[val].code.indexOf('status') !== -1) { - this.data1[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 795) - } - if (this.data1[val].code.indexOf('unqualified_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 795) - } - if (this.data1[val].code.indexOf('encoder_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 799) - } - if (this.data1[val].code.indexOf('order_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 803) - } - if (this.data1[val].code.indexOf('order_No') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 807) + '.50' + this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 16) + '.20' } } } @@ -411,35 +375,14 @@ export default { if (this.data2[val].code.indexOf('to_target') !== -1) { this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) } + if (this.data2[val].code.indexOf('to_is_flip') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) + } if (this.data2[val].code.indexOf('to_task') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 4) + this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 6) } if (this.data2[val].code.indexOf('to_barcode') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 8) + '.50' - } - if (this.data2[val].code.indexOf('to_error') !== -1) { - this.data2[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 264) - } - if (this.data2[val].code.indexOf('to_allow_pallet_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 266) - } - if (this.data2[val].code.indexOf('to_material_type') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 268) - } - // if (this.data2[val].code.indexOf('to_material_code') !== -1) { - // this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 272) - // } - if (this.data2[val].code.indexOf('to_order_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 276) - } - if (this.data2[val].code.indexOf('to_product_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 280) - } - if (this.data2[val].code.indexOf('to_order_No') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 284) + '.50' - } - if (this.data2[val].code.indexOf('to_material_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 540) + '.50' + this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 10) + '.20' } } } diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine.vue index 9b0a681c..1bc5454a 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_unboxing_machine.vue @@ -333,69 +333,54 @@ export default { return } for (const val in this.data1) { - if (this.data1[val].code.indexOf('move') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 1) - } - if (this.data1[val].code.indexOf('action') !== -1) { + if (this.data1[val].code.indexOf('status') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) } - if (this.data1[val].code.indexOf('ioaction') !== -1) { - this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 3) - } if (this.data1[val].code.indexOf('error') !== -1) { this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) } - if (this.data1[val].code.indexOf('task') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 5) + if (this.data1[val].code.indexOf('qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 6) } - if (this.data1[val].code.indexOf('weight') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 9) + if (this.data1[val].code.indexOf('one_qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 6) } - if (this.data1[val].code.indexOf('batch') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 13) + if (this.data1[val].code.indexOf('two_qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 8) } - if (this.data1[val].code.indexOf('specifications') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 17) + '.50' + if (this.data1[val].code.indexOf('three_qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 10) } - if (this.data1[val].code.indexOf('material') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 273) + '.50' + if (this.data1[val].code.indexOf('four_qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 12) } - if (this.data1[val].code.indexOf('barcode') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 529) + '.50' + if (this.data1[val].code.indexOf('five_qty') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 14) } - if (this.data1[val].code.indexOf('AlongSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 785) + if (this.data1[val].code.indexOf('one_status') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 16) } - if (this.data1[val].code.indexOf('BshortSide') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 787) + if (this.data1[val].code.indexOf('two_status') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 18) } - if (this.data1[val].code.indexOf('Htrapezoidal') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 789) + if (this.data1[val].code.indexOf('three_status') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 20) } - if (this.data1[val].code.indexOf('Wthickness') !== -1) { - this.data1[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 791) + if (this.data1[val].code.indexOf('four_status') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 22) } - if (this.data1[val].code.indexOf('status') !== -1) { - this.data1[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 795) + if (this.data1[val].code.indexOf('five_status') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 24) } - if (this.data1[val].code.indexOf('unqualified_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 795) - } - if (this.data1[val].code.indexOf('encoder_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 799) - } - if (this.data1[val].code.indexOf('order_qty') !== -1) { - this.data1[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 803) - } - if (this.data1[val].code.indexOf('order_No') !== -1) { - this.data1[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 807) + '.50' + if (this.data1[val].code.indexOf('is_disable') !== -1) { + this.data1[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 26) } } } }, finishWriteEdit(data) { // 编辑的是code列,并且值包含mode - if (data.code.indexOf('to_command') !== -1) { + if (data.code.indexOf('to_one_status') !== -1) { const dbValue = data.db // .之前的字符串 const beforeStr = dbValue.match(/(\S*)\./)[1] @@ -408,38 +393,23 @@ export default { return } for (const val in this.data2) { - if (this.data2[val].code.indexOf('to_target') !== -1) { + if (this.data2[val].code.indexOf('to_two_status') !== -1) { this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 2) } - if (this.data2[val].code.indexOf('to_task') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 4) + if (this.data2[val].code.indexOf('to_three_status') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 4) } - if (this.data2[val].code.indexOf('to_barcode') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 8) + '.50' + if (this.data2[val].code.indexOf('to_four_status') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 6) } - if (this.data2[val].code.indexOf('to_error') !== -1) { - this.data2[val].db = beforeStr + '.' + 'B' + (parseInt(endNumber) + 264) + if (this.data2[val].code.indexOf('to_five_status') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 8) } - if (this.data2[val].code.indexOf('to_allow_pallet_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'W' + (parseInt(endNumber) + 266) + if (this.data2[val].code.indexOf('to_clear') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 10) } - if (this.data2[val].code.indexOf('to_material_type') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 268) - } - // if (this.data2[val].code.indexOf('to_material_code') !== -1) { - // this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 272) - // } - if (this.data2[val].code.indexOf('to_order_qty') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 276) - } - if (this.data2[val].code.indexOf('to_product_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'D' + (parseInt(endNumber) + 280) - } - if (this.data2[val].code.indexOf('to_order_No') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 284) + '.50' - } - if (this.data2[val].code.indexOf('to_material_code') !== -1) { - this.data2[val].db = beforeStr + '.' + 'STRING' + (parseInt(endNumber) + 540) + '.50' + if (this.data2[val].code.indexOf('to_is_disable') !== -1) { + this.data2[val].db = beforeStr + '.' + afterStr.substring(0, 1) + (parseInt(endNumber) + 12) } } } diff --git a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue index a3530ae0..14249508 100644 --- a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -440,6 +440,36 @@ export default { } else if (val === 'is_disable') { const obj = { name: '是否禁用', value: data[val] } arr.push(obj) + } else if (val === 'one_qty') { + const obj = { name: '1号口数量', value: data[val] } + arr.push(obj) + } else if (val === 'two_qty') { + const obj = { name: '2号口数量', value: data[val] } + arr.push(obj) + } else if (val === 'three_qty') { + const obj = { name: '3号口数量', value: data[val] } + arr.push(obj) + } else if (val === 'four_qty') { + const obj = { name: '4号口数量', value: data[val] } + arr.push(obj) + } else if (val === 'five_qty') { + const obj = { name: '5号口数量', value: data[val] } + arr.push(obj) + } else if (val === 'one_status') { + const obj = { name: '1号口状态', value: data[val] } + arr.push(obj) + } else if (val === 'two_status') { + const obj = { name: '2号口状态', value: data[val] } + arr.push(obj) + } else if (val === 'three_status') { + const obj = { name: '3号口状态', value: data[val] } + arr.push(obj) + } else if (val === 'four_status') { + const obj = { name: '4号口状态', value: data[val] } + arr.push(obj) + } else if (val === 'five_status') { + const obj = { name: '5号口状态', value: data[val] } + arr.push(obj) } } return arr