diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml index 264b1a2c..1211fabb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/masterdata_manage/service/material/dao/mapper/MdMeMaterialbaseMapper.xml @@ -15,7 +15,8 @@ 1 = 1 and mater.material_type_id = '1528555445302726656' AND (mater.material_code LIKE '%${query.material_code}%' or - mater.material_name LIKE '%${query.material_code}%') + mater.material_name LIKE '%${query.material_code}%') or + mater.material_spec LIKE '%${query.material_code}%') order by mater.material_code ASC diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java index 2a11bca4..f8ade71d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/PDAEnum.java @@ -13,14 +13,16 @@ import java.util.Map; public enum PDAEnum { //点位区域 REGION_CODE(MapOf.of("半成品入库区域", "A1_BCPRK01", "半成品出库区域", "A1_BCPCK01","成品入库区域", - "A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01", - "发货区域","A1_FH01")), + "A1_CPRK01","半成品盘点区域", "A1_BCP_PP","海柔半成品出库区域","A3_BCPCK01","海柔半成品入库区域","A3_BCPRK01", + "发货区域","A1_FH01","三线半成品空箱出库区域","A3_BCPKXCK01")), //库区编码 SECT_CODE(MapOf.of("半成品库区", "KQ005")), //库区id SECT_ID(MapOf.of("成品库区", "1528631043496742912")), //仓库id STOR_ID(MapOf.of("紫铜三线半成品仓库", "15286279952695336963")), + //车间 + WORKSHOP_ID(MapOf.of("智能三线车间", "A3")), //物料类别 MATERIAL_CLASS(MapOf.of("管件原材料", "1503644349995552768","管件半成品", "1528555443906023424","管件成品", "1528555444031852544")), ; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java new file mode 100644 index 00000000..13e14969 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpEmpOutController.java @@ -0,0 +1,52 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService; +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 Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/empOut") +public class PdaStHrBcpEmpOutController { + + @Autowired + private PdaStHrBcpEmpOutService pdaStHrBcpEmpOutService; + + @PostMapping("/getIvt") + @Log("获取库存") + //("获取库存") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.getIvt(whereJson), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("出库确认") + //("出库确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpEmpOutService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java new file mode 100644 index 00000000..3e9601c5 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpInController.java @@ -0,0 +1,60 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +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 Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/iosIn") +public class PdaStHrBcpInController { + + @Autowired + private PdaStHrBcpInService pdaStHrBcpInService; + + @PostMapping("/getMaterial") + @Log("查询物料") + //("查询物料") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson, PageQuery pageQuery) { + return new ResponseEntity<>(pdaStHrBcpInService.getMaterial(whereJson,pageQuery), HttpStatus.OK); + } + + @PostMapping("/getWork") + @Log("获取工序下拉框") + //("获取工序下拉框") + public ResponseEntity getWork() { + return new ResponseEntity<>(pdaStHrBcpInService.getWork(), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpInService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("确认入库") + //("确认入库") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpInService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java new file mode 100644 index 00000000..a5ef4926 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/controller/PdaStHrBcpOutController.java @@ -0,0 +1,54 @@ +package org.nl.wms.storage_manage.pda.controller; + + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService; +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 Liuxy + * @since 2023-08-30 + */ +@RestController +@RequestMapping("/api/pda/hrBcp/iosOut") +public class PdaStHrBcpOutController { + + @Autowired + private PdaStHrBcpOutService pdaStHrBcpOutService; + + @PostMapping("/getIvt") + @Log("获取库存") + //("获取库存") + public ResponseEntity getMaterial(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpOutService.getIvt(whereJson), HttpStatus.OK); + } + + @PostMapping("/getPoint") + @Log("获取入库点") + //("获取入库点") + public ResponseEntity getPoint() { + return new ResponseEntity<>(pdaStHrBcpOutService.getPoint(), HttpStatus.OK); + } + + @PostMapping("/confirm") + @Log("出库确认") + //("出库确认") + public ResponseEntity confirm(@RequestBody JSONObject whereJson) { + return new ResponseEntity<>(pdaStHrBcpOutService.confirm(whereJson), HttpStatus.OK); + } + +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java new file mode 100644 index 00000000..0f698720 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpEmpOutService.java @@ -0,0 +1,33 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONObject; + +/** + *

+ * 手持半成品出库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpEmpOutService { + + /** + * 获取库存 + * @param whereJson / + * @return / + */ + JSONObject getIvt(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); + + /** + * 出库确认 + * @return / + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java new file mode 100644 index 00000000..bd59a677 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpInService.java @@ -0,0 +1,42 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; + +/** + *

+ * 手持半成品入库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpInService { + + /** + * 查询物料 + * @param whereJson / + * @return JSONObject / + */ + JSONObject getMaterial(JSONObject whereJson, PageQuery pageQuery); + + /** + * 获取工序下拉框 + * @return / + */ + JSONObject getWork(); + + /** + * 确认入库 + * @param whereJson / + * @return / + */ + JSONObject confirm(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java new file mode 100644 index 00000000..a59c465b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/PdaStHrBcpOutService.java @@ -0,0 +1,34 @@ +package org.nl.wms.storage_manage.pda.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.common.domain.query.PageQuery; + +/** + *

+ * 手持半成品出库 服务类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +public interface PdaStHrBcpOutService { + + /** + * 获取库存 + * @param whereJson / + * @return / + */ + JSONObject getIvt(JSONObject whereJson); + + /** + * 获取入库点 + * @return / + */ + JSONObject getPoint(); + + /** + * 出库确认 + * @return / + */ + JSONObject confirm(JSONObject whereJson); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java new file mode 100644 index 00000000..95e50e14 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpEmpOutServiceImpl.java @@ -0,0 +1,182 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.publish.BussEventMulticaster; +import org.nl.common.publish.event.PointEvent; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService; +import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtSectattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtSectattr; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +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.task.dao.SchBaseTask; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpEmpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.impl.StIvtIostorinvEmpBcpServiceImpl; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpEmpOutServiceImpl implements PdaStHrBcpEmpOutService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务 + + @Autowired + private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper + + @Autowired + protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtSectattrService sectattrService; // 库区服务 + + @Override + public JSONObject getIvt(JSONObject whereJson) { + + StIvtSectattr sect = sectattrService.getOne( + new QueryWrapper().lambda() + .eq(StIvtSectattr::getSect_name, "海柔半成品库区") + ); + + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(whereJson.getString("storagevehicle_code"))) { + list = structattrService.list( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getSect_id, sect.getSect_id()) + .eq(StIvtStructattr::getStor_id, sect.getStor_id()) + .eq(StIvtStructattr::getIs_used, true) + .eq(StIvtStructattr::getIs_emptyvehicle, true) + .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "") + .or().isNull(StIvtStructattr::getStoragevehicle_code) + ) + .orderByDesc(StIvtStructattr::getXqty) + .orderByAsc(StIvtStructattr::getYqty) + ); + } else { + list = structattrService.list( + new QueryWrapper().lambda() + .eq(StIvtStructattr::getSect_id, sect.getSect_id()) + .eq(StIvtStructattr::getStor_id, sect.getStor_id()) + .eq(StIvtStructattr::getIs_used, true) + .eq(StIvtStructattr::getIs_emptyvehicle, true) + .eq(StIvtStructattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) + .and(qr -> qr.ne(StIvtStructattr::getStoragevehicle_code, "") + .or().isNull(StIvtStructattr::getStoragevehicle_code) + ) + .likeRight(StIvtStructattr::getStoragevehicle_code, whereJson.getString("storagevehicle_code")) + .orderByDesc(StIvtStructattr::getXqty) + .orderByAsc(StIvtStructattr::getYqty) + ); + } + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("三线半成品空箱出库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!"); + + JSONArray rows = whereJson.getJSONArray("rows"); + + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id")); + + // 1.生成任务 + SchBaseTask taskDao = new SchBaseTask(); + PointEvent event = PointEvent.builder() + .type(AcsTaskEnum.TASK_STRUCT_HR_EMP_OUT) + .acs_task_type("16") + .task_group_id(IdUtil.getStringId()) + .point_code1(attrDao.getStruct_code()) + .point_code3(point_code) + .vehicle_code(attrDao.getStoragevehicle_code()) + .product_area("A3") + .callback((Consumer) taskDao::setTask_id) + .build(); + BussEventMulticaster.Publish(event); + + // 2.下发任务 + StIvtIostorinvEmpBcpServiceImpl bean = SpringContextHolder.getBean(StIvtIostorinvEmpBcpServiceImpl.class); + bean.sendTask(taskDao.getTask_id()); + + // 3.锁定货位 + attrDao.setLock_type(IOSEnum.LOCK_TYPE.code("其他锁")); + structattrService.updateById(attrDao); + + } + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "出库成功"); + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java new file mode 100644 index 00000000..81e049e6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpInServiceImpl.java @@ -0,0 +1,152 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.IdUtil; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpInService; +import org.nl.wms.storage_manage.pda.service.dto.PdaQuery; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.dao.StIvtIostorinvOrder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpInServiceImpl implements PdaStHrBcpInService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private IPdmBiWorkprocedureService iPdmBiWorkprocedureService; // 工序服务 + + @Autowired + private IStIvtIostorinvOrderService iStIvtIostorinvOrderService; // 出入库顺序服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Override + public JSONObject getMaterial(JSONObject whereJson1, PageQuery pageQuery) { + PdaQuery whereJson = new PdaQuery(); + whereJson.setMaterial_code(whereJson1.getString("material_spec")); + int size = whereJson1.getIntValue("size"); + + int totalCount = 0; + + List list = new ArrayList<>(); + if (ObjectUtil.isEmpty(whereJson1.getString("material_spec"))) { + List list1 = iMdMeMaterialbaseService.list( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_type_id, "1528555445302726656") + ); + list = list1.subList(0, Math.min(list1.size(), size)); + totalCount = list1.size(); + } else { + List list1 = iMdMeMaterialbaseService.getPdaBcpGetMaterial(whereJson, pageQuery); + list = list1.subList(0, Math.min(list1.size(), size)); + totalCount = list1.size(); + } + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("totalCount", totalCount); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getWork() { + JSONArray array = iPdmBiWorkprocedureService.downSelect(PDAEnum.WORKSHOP_ID.code("智能三线车间")); + + JSONObject result = new JSONObject(); + result.put("data", array); + result.put("message", "查询成功"); + return result; + + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品入库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + // 校验 + if (ObjectUtil.isEmpty(whereJson.getString("material_code"))) throw new BadRequestException("请选择物料!"); + if (ObjectUtil.isEmpty(whereJson.getString("qty"))) throw new BadRequestException("请填写数量!"); + if (ObjectUtil.isEmpty(whereJson.getString("bar_code"))) throw new BadRequestException("请扫码!"); + if (ObjectUtil.isEmpty(whereJson.getString("point_code"))) throw new BadRequestException("请选择点位!"); + + + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getOne( + new QueryWrapper().lambda() + .eq(MdMeMaterialbase::getMaterial_code, whereJson.getString("material_code")) + , false); + + // 插入出入库顺序表 + StIvtIostorinvOrder dao = new StIvtIostorinvOrder(); + dao.setOrder_id(IdUtil.getStringId()); + dao.setWorkshop_id(PDAEnum.WORKSHOP_ID.code("智能三线车间")); + dao.setStor_id(PDAEnum.STOR_ID.code("紫铜三线半成品仓库")); + dao.setIn_device(whereJson.getString("point_code")); + dao.setBar_code(whereJson.getString("bar_code")); + dao.setMaterial_id(materDao.getMaterial_id()); + dao.setSale_id(whereJson.getString("sale_id")); + + // 重量 : kg + double weight = NumberUtil.div(NumberUtil.mul(materDao.getNet_weight().doubleValue(), whereJson.getDoubleValue("qty")), 1000); + dao.setWeight(BigDecimal.valueOf(weight)); + dao.setQty(whereJson.getBigDecimal("qty")); + dao.setType(IOSEnum.IO_TYPE.check("入库")); + dao.setIs_delete(false); + dao.setCreate_time(DateUtil.now()); + dao.setBiz_date(DateUtil.today()); + dao.setWorkprocedure_id(whereJson.getString("workprocedure_id")); + iStIvtIostorinvOrderService.save(dao); + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "操作成功"); + return result; + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java new file mode 100644 index 00000000..6b675b95 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/pda/service/impl/PdaStHrBcpOutServiceImpl.java @@ -0,0 +1,157 @@ +package org.nl.wms.storage_manage.pda.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.wms.masterdata_manage.service.master.IMdPbMeasureunitService; +import org.nl.wms.masterdata_manage.service.master.dao.MdPbMeasureunit; +import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; +import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; +import org.nl.wms.masterdata_manage.storage.service.storage.IStIvtStructattrService; +import org.nl.wms.masterdata_manage.storage.service.storage.dao.StIvtStructattr; +import org.nl.wms.product_manage.service.workprocedure.IPdmBiWorkprocedureService; +import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; +import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; +import org.nl.wms.storage_manage.IOSEnum; +import org.nl.wms.storage_manage.IVTEnum; +import org.nl.wms.storage_manage.pda.PDAEnum; +import org.nl.wms.storage_manage.pda.service.PdaStHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvHrBcpOutService; +import org.nl.wms.storage_manage.semimanagehr.service.iostorInv.IStIvtIostorinvOrderService; +import org.nl.wms.storage_manage.semimanagehr.service.structIvt.dao.mapper.StIvtStructivtHrBcpMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.Map; + +/** + *

+ * 手持半成品入库 服务实现类 + *

+ * + * @author Liuxy + * @since 2023-08-30 + */ +@Service +public class PdaStHrBcpOutServiceImpl implements PdaStHrBcpOutService { + + @Autowired + private IMdMeMaterialbaseService iMdMeMaterialbaseService; // 物料服务 + + @Autowired + private ISchBasePointService iSchBasePointService; // 点位服务 + + @Autowired + private StIvtStructivtHrBcpMapper stIvtStructivtHrBcpMapper; //库存服务mapper + + @Autowired + protected IMdPbMeasureunitService iMdPbMeasureunitService; // 计量单位服务 + + @Autowired + private IStIvtStructattrService structattrService; // 仓位服务 + + @Autowired + private IStIvtIostorinvHrBcpOutService iStIvtIostorinvHrBcpOutService; // 半成品出库服务 + + @Override + public JSONObject getIvt(JSONObject whereJson) { + + JSONObject param = new JSONObject(); + param.put("material_code", whereJson.getString("material_spec")); + + List list = stIvtStructivtHrBcpMapper.getPdaBcpIvt(param); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + public JSONObject getPoint() { + List list = iSchBasePointService.list( + new QueryWrapper().lambda() + .eq(SchBasePoint::getRegion_code, PDAEnum.REGION_CODE.code("海柔半成品出库区域")) + .eq(SchBasePoint::getIs_used, IOSEnum.IS_USED.code("是")) + .eq(SchBasePoint::getIs_delete, IOSEnum.IS_USED.code("否")) + ); + + JSONObject result = new JSONObject(); + result.put("data", JSONArray.parseArray(JSON.toJSONString(list))); + result.put("message", "查询成功"); + return result; + } + + @Override + @Transactional + public JSONObject confirm(JSONObject whereJson) { + String point_code = whereJson.getString("point_code"); + + if (ObjectUtil.isEmpty(point_code)) throw new BadRequestException("点位不能为空!"); + + // 组织数据出库 + JSONArray rows = whereJson.getJSONArray("rows"); + + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + JSONObject jsonMst = new JSONObject(); + jsonMst.put("biz_date", DateUtil.today()); + jsonMst.put("bill_type", IOSEnum.BILL_TYPE_HR.code("生产出库")); + jsonMst.put("remark", "手持PDA创建" ); + jsonMst.put("product_code", PDAEnum.WORKSHOP_ID.code("智能三线车间") ); + jsonMst.put("point_code", point_code ); + jsonMst.put("stor_id", IOSEnum.STOR_CODE.code("海柔半成品")); + jsonMst.put("auto_send", "1"); // 是否自动创建任务并下发 + + JSONArray tableData = new JSONArray(); + + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("material_id", json.getString("material_id")); + jsonDtl.put("pcsn", ""); + jsonDtl.put("plan_qty", json.getString("canuse_qty")); + jsonDtl.put("quality_scode", IVTEnum.QUALITY_SCODE.code("合格品")); + jsonDtl.put("base_bill_code", ""); + + 物料信息: + { + MdMeMaterialbase materDao = iMdMeMaterialbaseService.getById( json.getString("material_id")); + MdPbMeasureunit untiDao = iMdPbMeasureunitService.getById(materDao.getBase_unit_id()); + + jsonDtl.put("qty_unit_id", untiDao.getMeasure_unit_id()); + jsonDtl.put("qty_unit_name", untiDao.getUnit_name()); + jsonDtl.put("unit_weight", materDao.getNet_weight()); + jsonDtl.put("storagevehicle_code", json.getString("storagevehicle_code")); + } + + 仓位信息: + { + StIvtStructattr attrDao = structattrService.getById(json.getString("struct_id")); + + jsonDtl.put("sect_id", attrDao.getSect_id()); + jsonDtl.put("sect_code", attrDao.getSect_code()); + jsonDtl.put("sect_name", attrDao.getSect_name()); + jsonDtl.put("struct_id", attrDao.getStruct_id()); + jsonDtl.put("struct_code", attrDao.getStruct_code()); + jsonDtl.put("struct_name", attrDao.getStruct_name()); + } + + tableData.add(jsonDtl); + jsonMst.put("tableData",tableData); + + // 调用出库服务 + iStIvtIostorinvHrBcpOutService.create(jsonMst); + } + + JSONObject result = new JSONObject(); + result.put("data", ""); + result.put("message", "出库成功"); + return result; + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java index 224b7fa3..b754543f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/dao/StIvtIostorinvOrder.java @@ -89,10 +89,15 @@ public class StIvtIostorinvOrder implements Serializable { */ private String type; + /** + * 工序标识 + */ + private String workprocedure_id; + /** * 是否删除 */ - private boolean is_delete; + private Boolean is_delete; /** * 创建时间 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java index aecb3f03..1a89659e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/iostorInv/impl/StIvtIostorinvEmpBcpServiceImpl.java @@ -262,7 +262,7 @@ public class StIvtIostorinvEmpBcpServiceImpl implements IStIvtIostorinvEmpBcpSe * 下发任务 * @param task_id / */ - private void sendTask(String task_id) { + public void sendTask(String task_id) { SchBaseTask taskDao = iSchBaseTaskService.getById(task_id); JSONArray param = new JSONArray(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml index 07fa7c66..49fd4310 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/semimanagehr/service/structIvt/dao/mapper/xml/StIvtStructivtHrBcpMapper.xml @@ -160,6 +160,7 @@ unit.unit_name, ROUND(ivt.canuse_qty / mater.net_weight,3) AS qty, attr.struct_name, + attr.struct_code, attr.sect_code, attr.sect_name, attr.stor_name, diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls index ff359395..ed3c9106 100644 Binary files a/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls and b/mes/hd/nladmin-system/src/main/java/org/nl/wms/storage_manage/stivt.xls differ diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 51068f13..795b3810 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -187,7 +187,15 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { dos.write(b); dos.flush(); } catch (IOException e) { - throw new BadRequestException(e.getMessage()); + try { + log.info("再次下发agv数据:" + Bytes2HexString(b)); + System.out.println("再次下发agv数据:" + Bytes2HexString(b)); + dos.write(b); + dos.flush(); + }catch (IOException e1){ + throw new BadRequestException(e1.getMessage()); + } + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java index 2aa148de..9246a3e3 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/HailiangCleaningFeedingLineDriver.java @@ -7,6 +7,7 @@ import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.ApplyTaskTime; @@ -122,7 +123,6 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i allowed_in = this.itemProtocol.getItem_allowed_in(); error = this.itemProtocol.getItem_error(); in_pcsn = this.itemProtocol.getItem_in_pcsn(); - to_in_confirm_finish = this.itemProtocol.getItem_to_in_confirm_finish(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); } @@ -224,19 +224,37 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i // } // } + // 修改工单状态为生产中 +// if (mode == 1 && allowed_in == 1 && in_pcsn > 0) { + if (mode == 1 && in_pcsn > 0 && task_finish == 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findOrderByDeviceCode(this.getDevice_code()); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { + pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); + produceshiftorderService.update(pdto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("in_pcsn", in_pcsn); + reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + requireSucess = true; + this.message = "反馈清洗上料执行中成功"; + } + } + } + + } + if (mode == 1 && task_finish == 1 ) { - boolean flag = washTask(in_pcsn); + logServer.deviceExecuteLog(this.device_code, "", "", "task_finish:"+task_finish+"电气完成任务后信号last_in_pcsn:" + last_in_pcsn + "last_in_pcsn任务号不为空则查询工单更新状态自动完成"); + logServer.deviceExecuteLog(this.device_code, "", "", "this.device_code:"+this.device_code+ "device_code不为空则查询工单更新状态自动完成"); + boolean flag = washTask(last_in_pcsn); if (flag) { this.message = "反馈清洗上料完成成功"; } } - if (mode == 1 && to_in_confirm_finish == 1 ) { - boolean flag = washTaskRun(in_pcsn); - if (flag) { - this.message = "反馈清洗上料执行中"; - } - } } last_mode = mode; last_is_open = is_open; @@ -369,32 +387,31 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i private boolean washTask(int in_pcsn) { ProduceshiftorderDto dto = produceshiftorderService.findOrderByDeviceCode(this.getDevice_code()); if (dto != null) { - if (!StrUtil.equals(dto.getOrder_code(),String.valueOf(in_pcsn))){ - return false; - } - this.writing("to_confirm_finished", "1"); - String[] in_devices = dto.getIn_devices().split(","); - //上料完成清除储料仓内存中的物料信息 - Arrays.stream(in_devices).forEach(device_code -> { - Device device = deviceAppService.findDeviceByCode(device_code); - if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { - HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); - hailiangCleaningMachineStorageStationDeviceDriver.setMaterial_code(null); - //下发储料仓去皮 - hailiangCleaningMachineStorageStationDeviceDriver.writing("to_peel","1"); + if (dto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { + this.writing("to_confirm_finished", "1"); + this.writing("to_pcsn","0"); + String[] in_devices = dto.getIn_devices().split(","); + //上料完成清除储料仓内存中的物料信息 + Arrays.stream(in_devices).forEach(device_code -> { + Device device = deviceAppService.findDeviceByCode(device_code); + if (device.getDeviceDriver() instanceof HailiangCleaningMachineStorageStationDeviceDriver) { + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + hailiangCleaningMachineStorageStationDeviceDriver.setMaterial_code(null); + //下发储料仓去皮 + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_peel","1"); + } + }); + //修改工单状态为完成 + dto.setOrder_status(WorkerOrderEnum.COMPLETE.getCode()); + produceshiftorderService.update(dto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("in_pcsn", dto.getOrder_code()); + reqParam.put("status", StatusEnum.TASK_FINISH.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + this.message = "反馈清洗上料任务完成成功"; } - }); - //修改工单状态为执行中 - dto.setOrder_status("2"); - produceshiftorderService.update(dto); - // TODO 反馈mes - JSONObject reqParam = new JSONObject(); - reqParam.put("in_pcsn", in_pcsn); - reqParam.put("status", StatusEnum.TASK_FINISH.getCode()); - HttpResponse httpResponse = acsToWmsService.washTask(reqParam); - if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { - requireSucess = true; - return true; } } return false; @@ -477,30 +494,51 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { - String[] in_devices = dto.getIn_devices().split(","); - //上料储料仓总重量 - int weightSum = 0; - //上料储料仓总数量 - int qtySum = 0; - //遍历上料储料仓设备 求重量和数量和下发给清洗上料位 - for (int i = 0; i < in_devices.length; i++) { - String in_device = in_devices[i]; - Device device = deviceAppService.findDeviceByCode(in_device); - if (device != null) { - HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); - weightSum += hailiangCleaningMachineStorageStationDeviceDriver.getSilo_weight(); - qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); - hailiangCleaningMachineStorageStationDeviceDriver.writing("to_feeding", "1"); + try { + this.writing("to_confirm_finished", "1"); + this.writing("to_del_task","1"); + Thread.sleep(2000L); + String[] in_devices = dto.getIn_devices().split(","); + //上料储料仓总重量 + int weightSum = 0; + //上料储料仓总数量 + int qtySum = 0; + + //下发电气信号 + Map map = new LinkedHashMap<>(); + map.put("task_finish","0"); + map.put("to_pcsn",dto.getOrder_code());//下发批次号,暂时用工单号 + map.put("to_all_num", String.valueOf(qtySum)); + map.put("to_all_weight", String.valueOf(weightSum)); + map.put("to_in_confirm_finish", "1"); + map.put("allowed_in","1"); + this.writing(map); + //遍历上料储料仓设备 求重量和数量和下发给清洗上料位 + for (int i = 0; i < in_devices.length; i++) { + String in_device = in_devices[i]; + Device device = deviceAppService.findDeviceByCode(in_device); + if (device != null) { + HailiangCleaningMachineStorageStationDeviceDriver hailiangCleaningMachineStorageStationDeviceDriver = (HailiangCleaningMachineStorageStationDeviceDriver) device.getDeviceDriver(); + weightSum += hailiangCleaningMachineStorageStationDeviceDriver.getSilo_weight(); + qtySum += hailiangCleaningMachineStorageStationDeviceDriver.getFull_number(); + hailiangCleaningMachineStorageStationDeviceDriver.writing("to_feeding", "1"); + } } + } catch (InterruptedException e) { + e.printStackTrace(); } - //下发电气信号 - Map map = new LinkedHashMap<>(); - map.put("to_pcsn",dto.getOrder_code());//下发批次号,暂时用工单号 - map.put("to_all_num", String.valueOf(qtySum)); - map.put("to_all_weight", String.valueOf(weightSum)); - map.put("to_in_confirm_finish", "1"); - map.put("allowed_in","1"); - this.writing(map); + +// this.writing("to_compel_finished","1"); + + +// //修改工单状态为执行中 +// dto.setOrder_status(StatusEnum.TASK_RUNNING.getCode()); +// // TODO 反馈mes +// JSONObject reqParam = new JSONObject(); +// reqParam.put("in_pcsn", dto.getOrder_code()); +// reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); +// HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + } /** @@ -508,6 +546,8 @@ public class HailiangCleaningFeedingLineDriver extends AbstractOpcDeviceDriver i */ @Override public void issuedOrderFinish(String autoFinish) { + this.writing("to_compel_finished","1"); + this.writing("to_del_task","1"); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java index d7b08d01..d991a5c9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_feeding_line/ItemProtocol.java @@ -69,9 +69,7 @@ public class ItemProtocol { public int getItem_task_finish() { return this.getOpcIntegerValue(item_task_finish); } - public int getItem_to_in_confirm_finish() { - return this.getOpcIntegerValue(item_to_in_confirm_finish); - } + public int getItem_allowed_in() { return this.getOpcIntegerValue(item_allowed_in); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java index 883b2c49..be26866d 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_cleaning_put_line/HailiangCleaningPutLineDeviceDriver.java @@ -1,7 +1,6 @@ package org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_put_line; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import lombok.Data; @@ -11,7 +10,7 @@ import org.nl.acs.acsEnum.InstActionEnum; import org.nl.acs.acsEnum.StatusEnum; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.agv.server.impl.NDCAgvServiceImpl; -import org.nl.acs.auto.run.NDCSocketConnectionAutoRun; +import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.ApplyTaskTime; @@ -28,7 +27,7 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; -import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.utils.RedisUtils; import org.nl.modules.wql.util.SpringContextHolder; @@ -57,6 +56,8 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver NDCAgvService agvService = SpringContextHolder.getBean(NDCAgvServiceImpl.class); @Autowired InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + @Autowired + TaskService taskserver = SpringContextHolder.getBean(TaskService.class); //工作模式 int mode = 0; @@ -133,7 +134,7 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver int last_full_weight = 0; //上料批次号 int last_in_pcsn = 0; - int last_barcode = 0; + String last_barcode = null; //收料位1批次入料总数量 int last_all_num = 0; //收料位1批次入料总重量 @@ -141,7 +142,10 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver int last_open_ready_time = 0; int last_device_running_time = 0; int last_await_time = 0; - + int last_barcode_1 = 0; + int last_barcode_2 = 0; + int last_barcode_3 = 0; + int last_barcode_4 = 0; Boolean isonline = true; @@ -207,6 +211,9 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); } if (move != last_move) { + if (move == 1) { + requireSucess = false; + } logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); } if (is_open != last_is_open) { @@ -257,6 +264,18 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver if (await_time != last_await_time) { logServer.deviceExecuteLog(this.device_code, "", "", "信号await_time:" + last_await_time + "->" + await_time); } + if (barcode_1 != last_barcode_1) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode_1:" + last_barcode_1 + "->" + barcode_1); + } + if (barcode_2 != last_barcode_2) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode_2:" + last_barcode_2 + "->" + barcode_2); + } + if (barcode_3 != last_barcode_3) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode_3:" + last_barcode_3 + "->" + barcode_3); + } + if (barcode_4 != last_barcode_4) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode_4:" + last_barcode_4 + "->" + barcode_4); + } if (error != last_error) { if (error != 0) { @@ -286,15 +305,17 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver this.setIserror(false); message = ""; //工作模式联机、满框请求 就申请agv任务 - if (mode == 1 && full_req == 1 && put_line_ready ==0 && !requireSucess) { - boolean flag = apply_task(StatusEnum.QXXL_FULL_REQ.getCode()); - this.noApplyTaskMessage = null; - if (flag) { - this.message = "申请满框请求任务成功"; - } - } +// if (mode == 1 && full_req == 1 && !requireSucess) { +// boolean flag = apply_task(StatusEnum.QXXL_FULL_REQ.getCode()); +// this.noApplyTaskMessage = null; +// if (flag) { +// this.message = "申请满框请求任务成功"; +// } +// } //工作模式联机、强制搬出请求 就申请agv任务 - if (mode == 1 && compel_full_req == 1 && put_line_ready ==0 && !requireSucess) { + logServer.deviceExecuteLog(device_code, "", "", "mode="+this.mode+"----compel_full_req="+compel_full_req+"-------requireSucess="+requireSucess); + if (mode == 1 && compel_full_req == 1) { + logServer.deviceExecuteLog(device_code, "", "", "mode="+this.mode+"----compel_full_req="+compel_full_req+"-------requireSucess="+requireSucess); boolean flag = apply_task(StatusEnum.QXXL_COMPEL_REQ.getCode()); this.noApplyTaskMessage = null; if (flag) { @@ -302,7 +323,9 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver } } //工作模式联机、空框请求 就申请agv任务 - if (mode == 1 && empty_req == 1 && put_line_ready ==0 && !requireSucess) { + logServer.deviceExecuteLog(device_code, "", "", "mode="+this.mode+"----empty_req="+empty_req+"-------requireSucess="+requireSucess); + if (mode == 1 && empty_req == 1 && !requireSucess) { + logServer.deviceExecuteLog(device_code, "", "", "mode="+this.mode+"----empty_req="+empty_req+"-------requireSucess="+requireSucess); boolean flag = apply_task(StatusEnum.QXXL_EMPTY_REQ.getCode()); this.noApplyTaskMessage = null; if (flag) { @@ -311,11 +334,11 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver } //agv到达取货位 if (agvphase == 0x03) { - if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 1 && is_up== 1) { + if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 1) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_GET.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - NDCSocketConnectionAutoRun.write(data); + OneNDCSocketConnectionAutoRun.write(data); this.set(0, 0, null); noFeedAgvMessage = null; message = this.messageInfo(agvphase); @@ -337,13 +360,21 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver //agv取货完成 if (agvphase == 0x05) { - if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 0) { + if (ObjectUtil.isNotEmpty(inst) && mode == 1 && is_up == 1) { + //下发取货位AGV取货完成 + this.writing("to_agv_take_finish", "1"); inst.setExecute_status(InstActionEnum.EXECUTE_GET_FINISH.getCode()); instructionService.update(inst); - //下发取货位AGV取货完成 - writing("to_agv_take_finish", "1"); + if (inst != null) { + TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); + if (taskDto != null) { + taskDto.setExt_param(new HashMap<>()); + taskDto.getExt_param().put("take_finish", "1"); + taskserver.update(taskDto); + } + } byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - NDCSocketConnectionAutoRun.write(data); + OneNDCSocketConnectionAutoRun.write(data); this.set(0, 0, null); noFeedAgvMessage = null; message = this.messageInfo(agvphase); @@ -364,11 +395,11 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver } //agv到达放框位 if (agvphase == 0x07) { - if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 0 && is_up== 1) { + if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 0 && is_up == 1) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_PUT_FALL_SEND_FULL.getCode()); instructionService.update(inst); byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - NDCSocketConnectionAutoRun.write(data); + OneNDCSocketConnectionAutoRun.write(data); this.set(0, 0, null); noFeedAgvMessage = null; message = this.messageInfo(agvphase); @@ -390,17 +421,32 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver //agv放框完成 if (agvphase == 0x09) { - if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 1 && is_up == 0) { - inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); - instructionService.update(inst); + if (ObjectUtil.isNotEmpty(inst) && mode == 1 && move == 1) { //下发AGV放框完成 writing("to_agv_release_finish", "1"); + inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); + instructionService.update(inst); + if (inst != null) { + TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); + if (taskDto != null) { + taskDto.setExt_param(new HashMap<>()); + taskDto.getExt_param().put("put_finish", "1"); + taskserver.update(taskDto); + } + } byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); - NDCSocketConnectionAutoRun.write(data); + OneNDCSocketConnectionAutoRun.write(data); this.set(0, 0, null); noFeedAgvMessage = null; message = this.messageInfo(agvphase); logServer.deviceExecuteLog(device_code, "", "", this.messageInfo(agvphase)); + try { + logServer.deviceExecuteLog(device_code, "", "", "PS20放完空框后延迟3秒去皮"); + Thread.sleep(3000L); + this.writing("to_peel","1"); + } catch (InterruptedException e) { + e.printStackTrace(); + } } else { String notFeedAgvMessage = ""; if (mode != 1) { @@ -437,6 +483,12 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver last_open_ready_time = open_ready_time; last_device_running_time = device_running_time; last_await_time = await_time; + last_barcode_1 = barcode_1; + last_barcode_2 = barcode_2; + last_barcode_3 = barcode_3; + last_barcode_4 = barcode_4; + last_barcode = barcode; + } public String stringToascii(int num) { @@ -664,9 +716,11 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver * @return */ public synchronized boolean apply_task(String code) { + logServer.deviceExecuteLog(device_code,"", "", "开始申请任务类型"+code+"mode="+this.mode+"----compel_full_req="+compel_full_req+"-------requireSucess="+requireSucess); if (redisUtils.hasKey("apply:" + this.device_code)) { return false; } else { + logServer.deviceExecuteLog(device_code,"", "", "执行申请任务类型"+code+"mode="+this.mode+"----compel_full_req="+compel_full_req+"-------requireSucess="+requireSucess); redisUtils.setExpire(this.device_code, null, ApplyTaskTime.APPLY_TIME, TimeUnit.SECONDS); JSONObject reqParam = new JSONObject(); reqParam.put("type", code); @@ -674,7 +728,7 @@ public class HailiangCleaningPutLineDeviceDriver extends AbstractOpcDeviceDriver reqParam.put("in_pcsn", this.getIn_pcsn()); reqParam.put("workorder_code", this.getIn_pcsn()); reqParam.put("vehicle_code", this.getBarcode()); - reqParam.put("weight", this.getFull_weight()); + reqParam.put("weight", this.getNow_weight()); reqParam.put("qty",this.getAll_num()); HttpResponse httpResponse = acsToWmsService.applyTaskToWms(reqParam); if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java index a0d8f1e8..110ad439 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java @@ -245,7 +245,11 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement JSONObject jo = new JSONObject(); jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("order", task); + jo.put("mode", mode == 1 ? "联机" : "单机"); jo.put("isOnline", this.itemProtocol.getIsonline()); + jo.put("isError", this.getIserror()); + jo.put("message", this.getMessage()); return jo; } @@ -259,8 +263,8 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement public void issuedOrderInfo(ProduceshiftorderDto dto) { EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); if (ObjectUtil.isNotEmpty(ealingOrderDto)) { + this.writing("to_clear", "1"); Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); map.put("to_order", ealingOrderDto.getOrder_code()); map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); map.put("to_order_bag_num", ealingOrderDto.getOrder_bag_num()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java index 8b9221a9..d8c659aa 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/HailiangEngravingInDeviceDriver.java @@ -40,6 +40,8 @@ import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; import org.nl.modules.common.utils.RedisUtils; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.system.service.ParamService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -75,6 +77,8 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp TaskService taskserver = SpringContextHolder.getBean(TaskService.class); @Autowired ParamService paramService = SpringContextHolder.getBean(ParamService.class); + @Autowired + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); //线体状态 int status = 0; //线体开机状态 @@ -123,6 +127,8 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp int device_running_time = 0; //待机时间(S) int await_time = 0; + //拉闸信号 + int to_agv_put_finish = 0; //线体状态 int last_status = 0; @@ -247,11 +253,14 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp device_running_time = this.itemProtocol.getItem_device_running_time();//设备运转时间(S) await_time = this.itemProtocol.getItem_await_time(); //待机时间(S) + to_agv_put_finish = this.itemProtocol.getItem_to_agv_put_finish(); + isonline = this.itemProtocol.getIsonline(); if (mode != last_mode) { feedDeviceStatusFlag = false; logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code, ItemProtocol.item_mode, mode, last_mode)); } if (gd_move != last_gd_move) { logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_gd_move + "->" + gd_move); @@ -263,7 +272,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp logServer.deviceExecuteLog(this.device_code, "", "", "信号is_open:" + last_is_open + "->" + is_open); } if (is_running != last_is_running) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号is_running:" + last_is_running + "->" + is_running); + logServer.deviceExecuteLog(this.device_code, "", "", "信号is_running【是否允】:" + last_is_running + "->" + is_running); } if (empty_req != last_empty_req) { if (empty_req == 1) { @@ -324,7 +333,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp logServer.deviceExecuteLog(this.device_code, "", "", "信号engraving_weight:" + last_engraving_weight + "->" + engraving_weight); } if (engraving_storage_now_weight != last_engraving_storage_now_weight) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号engraving_storage_now_weight:" + last_engraving_storage_now_weight + "->" + engraving_storage_now_weight); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号engraving_storage_now_weight:" + last_engraving_storage_now_weight + "->" + engraving_storage_now_weight); } if (engraving_all_weight != last_engraving_all_weight) { logServer.deviceExecuteLog(this.device_code, "", "", "信号engraving_all_weight:" + last_engraving_all_weight + "->" + engraving_all_weight); @@ -335,9 +344,9 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp if (fl_full_weight != last_fl_full_weight) { logServer.deviceExecuteLog(this.device_code, "", "", "信号fl_full_weight:" + last_fl_full_weight + "->" + fl_full_weight); } - if (barcode != last_barcode) { - logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + "->" + barcode); - } +// if (barcode != last_barcode) { +// logServer.deviceExecuteLog(this.device_code, "", "", "信号barcode:" + last_barcode + "->" + barcode); +// } if (open_ready_time != last_open_ready_time) { logServer.deviceExecuteLog(this.device_code, "", "", "信号open_ready_time:" + last_open_ready_time + "->" + open_ready_time); } @@ -399,26 +408,54 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp feedDeviceStatusFlag = true; } -// // 修改工单状态为生产中 -// if (mode == 1 && order > 0) { -// ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// if (pdto != null) { -// if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { -// pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); -// produceshiftorderService.update(pdto); -// } -// } -// } + // 修改工单状态为生产中 + if (mode == 1 && task_finish == 0 && task > 0 ) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(task)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { + pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); + produceshiftorderService.update(pdto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", task); + reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + this.message = "反馈刻字输送线任务执行中成功"; + } + } + } + } //修改工单状态为自动完成 -// if (mode == 1 && order_finish != last_order_finish && order_finish == 1 && order > 0) { -// ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); -// if (pdto != null) { -// if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { -// produceshiftorderService.finished(pdto); -// } -// } -// } + if (mode == 1 && task_finish == 1) { + logServer.deviceExecuteLog(this.device_code, "", "", "task_finish:"+task_finish+"电气完成任务后信号last_task:" + last_task + "last_task任务号不为空则查询工单更新状态自动完成"); + logServer.deviceExecuteLog(this.device_code, "", "", "this.device_code:"+this.device_code+ "device_code不为空则查询工单更新状态自动完成"); +// ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(last_task)); + ProduceshiftorderDto pdto = produceshiftorderService.findOrderByDeviceCode(this.device_code); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { + //修改工单状态为完成 + pdto.setOrder_status(WorkerOrderEnum.COMPLETE.getCode()); + produceshiftorderService.update(pdto); + // TODO 反馈mes + JSONObject reqParam = new JSONObject(); + reqParam.put("task_code", pdto.getOrder_code()); + reqParam.put("status", StatusEnum.TASK_FINISH.getCode()); + HttpResponse httpResponse = acsToWmsService.washTask(reqParam); + if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) { + this.message = "反馈刻字输送线任务完成成功"; + } + this.writing("to_confirm_finished", "1"); + this.writing("to_agv_put_finish", "0"); + this.writing("to_del_task","1"); + + } + } + + // this.writing("to_task","0"); + } + } catch (Exception var17) { var17.printStackTrace(); logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17 + ",inst == null :" + ObjectUtil.isEmpty(inst)); @@ -461,7 +498,8 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp // } // } - //无货、联机、空箱请求申请AGV搬运任务 + //有框、联机、空箱请求申请AGV搬运任务 + if (StrUtil.equals(paramService.findByCode(AcsConfig.KZPLAN).getValue(), "1")) { if (gd_move == 1 && mode == 1 && empty_req == 1 && !requireSucess) { // boolean flag_wash = washTaskRun(task); // if (flag_wash) { @@ -487,6 +525,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp this.noApplyTaskMessage = this.replace(notApplyTaskMessage); } } + } //到达取货点 if (agvphase == 0x03) { @@ -540,6 +579,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp if (agvphase == 0x07) { logServer.deviceExecuteLog(this.device_code, "", inst.getInstruction_code(), "刻字上料PS20上报到达放货点:" + ",inst == null :" + ObjectUtil.isEmpty(inst)); // if (ObjectUtil.isNotEmpty(inst) && gd_move == 0) { + this.writing("to_peel","1"); if (ObjectUtil.isNotEmpty(inst)) { inst.setExecute_status(InstActionEnum.EXECUTE_TO_PUT_FALL_SEND_FULL.getCode()); instructionService.update(inst); @@ -563,49 +603,41 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp //放货完成 if (agvphase == 0x09) { -// if (ObjectUtil.isNotEmpty(inst) && mode == 1 && allow_put == 1) { + logServer.deviceExecuteLog(device_code, "", "","PS20上报放货完成信号="+agvphase); + logServer.deviceExecuteLog(device_code, "", "","信号to_agv_put_finish="+to_agv_put_finish); + if (mode == 1) { + logServer.deviceExecuteLog(device_code, "", "","信号to_agv_put_finish="+to_agv_put_finish); + if (StrUtil.equals(paramService.findByCode(AcsConfig.KZPLAN).getValue(), "1")) { + if(to_agv_put_finish == 0){ + try { + logServer.deviceExecuteLog(device_code, "", "","拉闸前实时重量="+engraving_storage_now_weight); + logServer.deviceExecuteLog(device_code, "", "","agv放货完成,检测到料框光电,信号to_agv_put_finish=0,延迟2秒开始下发拉闸信号"); + Thread.sleep(2000L); + this.writing("to_agv_put_finish", "1"); + logServer.deviceExecuteLog(device_code, "", "","下发拉闸信号完成"); + Thread.sleep(10000L); + logServer.deviceExecuteLog(device_code, "", "","拉闸后等5秒让车走"); + is_test = ObjectUtil.isNotEmpty(inst) && mode == 1 && gd_move == 1 && engraving_storage_now_weight <10000; + } catch (InterruptedException e) { + e.printStackTrace(); + } + } -// if (ObjectUtil.isNotEmpty(inst) && mode == 1) {//正式方案需要联机 - //一体机临时方案不判断联机 - - if (StrUtil.equals(paramService.findByCode(AcsConfig.ISTEST).getValue(), "1")) { - is_test = ObjectUtil.isNotEmpty(inst); + }else { + is_test = ObjectUtil.isNotEmpty(inst) && mode == 1 && gd_move == 1; + } }else { - is_test = ObjectUtil.isNotEmpty(inst) && mode == 1; + is_test = ObjectUtil.isNotEmpty(inst) && mode == 0; } if (is_test) { - //放框完成 - writing("to_agv_put_finish", "1"); - //判断电气上报的【剩余实时重量】>10kg ,保障电气拉开气闸门下料 - logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "下发开闸门开始----"); - try { - Thread.sleep(5000); - } catch (InterruptedException e) { - e.printStackTrace(); - } - int i = 0; - while (this.engraving_storage_now_weight < 10000 && i<5){ - writing("to_agv_put_finish", "1"); - i++; - logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "重量小于10KG循环下发拉闸门"); - } - logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "关闭闸门----反馈称重"); inst.setExecute_status(InstActionEnum.EXECUTE_PUT_FALL_SEND_FULL_FINISH.getCode()); instructionService.update(inst); + byte[] data = agvService.sendAgvOneModeInst(agvphase, index, 0); OneNDCSocketConnectionAutoRun.write(data); - //agv任务完成,反馈mes - if (inst != null) { - TaskDto taskDto = taskserver.findByCodeFromCache(inst.getTask_code()); - logServer.deviceExecuteLog(device_code, "", "任务号"+inst.getTask_code(), "任务="+taskDto.getTask_code()); - if (taskDto != null) { - taskDto.setExt_param(new HashMap<>()); - taskDto.getExt_param().put("take_finish", "1"); - taskDto.getExt_param().put("weight", String.valueOf(engraving_storage_now_weight)); - taskserver.update(taskDto); - } - } this.set(0, 0, null); + logServer.deviceExecuteLog(device_code, "", "","PS20车可以走了"); + noFeedAgvMessage = null; message = this.messageInfo(agvphase); logServer.deviceExecuteLog(device_code, "", "", this.messageInfo(agvphase)); @@ -620,12 +652,12 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp this.noFeedAgvMessage = this.replace(notFeedAgvMessage); } } - if (mode == 1 && task_finish == 1 ) { - boolean flag = washTask(task); - if (flag) { - this.message = "反馈刻字上料完成成功"; - } - } +// if (mode == 1 && task_finish == 1 ) { +// boolean flag = washTask(task); +// if (flag) { +// this.message = "反馈刻字上料完成成功"; +// } +// } // } @@ -668,7 +700,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp if (redisUtils.hasKey("apply:" + this.device_code)) { return false; } else { - redisUtils.setExpire(this.device_code, null, ApplyTaskTime.APPLY_TIME, TimeUnit.SECONDS); + redisUtils.setExpire(this.device_code, null, ApplyTaskTime.APPLY_TIME_TEN, TimeUnit.SECONDS); // ProduceshiftorderDto produceshiftorderDto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); TaskDto taskDto = taskService.findByNextCode(device_code); if (taskDto == null) { @@ -802,15 +834,34 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp */ @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { -// if (!this.getItemProtocol().getIsonline()) { -// throw new BadRequestException("设备未开机,工单下发失败!"); -// } Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); - map.put("to_order", dto.getOrder_code()); - map.put("to_one_box_num", String.valueOf(dto.getOne_qty())); - map.put("to_order_prod_num", String.valueOf(dto.getQty())); - this.writing(map); + try { + this.writing("to_del_task","1"); + this.writing("to_confirm_finished", "1"); + this.writing("to_agv_put_finish", "0"); + Thread.sleep(1000L); + String[] sort = dto.getMaterial_name().split(","); + for (int i=0;i< sort.length;i++){ + map.put("to_sort"+(i+1),sort[i]); + } + String[] devices = dto.getIn_devices().split(","); + for (int i=0;i< devices.length;i++){ + String[] device_i = devices[i].split("_"); + map.put("to_devices"+(i+1),device_i[device_i.length-1]); + } + String[] weight = dto.getMaterial_spec().split(","); + for (int i=0;i< weight.length;i++){ + map.put("to_weight"+(i+1),weight[i]); + } + + map.put("to_all_weight", dto.getQty().toString()); + this.writing(map); + Thread.sleep(1000L); + this.writing("to_task",dto.getOrder_code()); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } /** @@ -827,6 +878,7 @@ public class HailiangEngravingInDeviceDriver extends AbstractOpcDeviceDriver imp } //map.put("to_order", "0"); map.put("to_clear", "1"); + map.put("to_del_task","1"); this.writing(map); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java index 909180f1..92cc946a 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_in/ItemProtocol.java @@ -64,6 +64,8 @@ public class ItemProtocol { public static String item_to_dis_barcode = "to_dis_barcode"; //秤去皮 public static String item_to_peel = "to_peel"; + //删除任务 + public static String item_to_del_task = "to_del_task"; //任务号 public static String item_to_task = "to_task"; //刻字上料重量 @@ -226,8 +228,8 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_device_running_time); } - public int getItem_await_time() { - return this.getOpcIntegerValue(item_await_time); + public int getItem_to_agv_put_finish() { + return this.getOpcIntegerValue(item_to_agv_put_finish); } public int getItem_engraving_weight() { @@ -264,6 +266,9 @@ public class ItemProtocol { return this.getOpcFloatValue(item_current_weight); } + public int getItem_await_time() { + return this.getOpcIntegerValue(item_await_time); + } //是否有货 public int hasGoods(int move) { return move; @@ -340,6 +345,7 @@ public class ItemProtocol { list.add(new ItemDto(item_to_agv_take_finish, "AGV取货完成", "DB2.W26")); list.add(new ItemDto(item_to_dis_barcode, "是否禁用条码", "DB2.W28")); list.add(new ItemDto(item_to_peel, "秤去皮", "DB2.W30")); + list.add(new ItemDto(item_to_del_task, "删除任务", "DB2.W32")); list.add(new ItemDto(item_to_task, "任务号", "DB2.D92")); list.add(new ItemDto(item_to_in_weight, "刻字上料重量", "DB2.D96")); list.add(new ItemDto(item_to_fl_full_weight, "回流满框重量标准值", "DB2.D100")); @@ -348,6 +354,8 @@ public class ItemProtocol { list.add(new ItemDto(item_to_sort_array, "排序数组", "DB200.W0[15]")); list.add(new ItemDto(item_to_devices_array, "站点数组", "DB200.W30[15]")); list.add(new ItemDto(item_to_weight_array, "重量数组", "DB200.REAL60[15]")); + + list.add(new ItemDto(item_to_sort1, "排序1", "DB200.W0")); list.add(new ItemDto(item_to_sort2, "排序2", "DB200.W2")); list.add(new ItemDto(item_to_sort3, "排序3", "DB200.W4")); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java index 61f24a02..59b958b3 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_engraving_machine/HailiangEngravingMachineDeviceDriver.java @@ -656,8 +656,9 @@ public class HailiangEngravingMachineDeviceDriver extends AbstractOpcDeviceDrive // if (!this.getItemProtocol().getIsonline()) { // throw new BadRequestException("设备未开机,工单下发失败!"); // } + this.writing("to_clear", "1"); Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); +// map.put("to_clear", "1"); map.put("to_order", dto.getOrder_code()); map.put("to_one_box_num", String.valueOf(dto.getOne_qty())); map.put("to_order_prod_num", String.valueOf(dto.getQty())); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java index 25f28997..e9bd74e4 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/HailiangPackerStationDeviceDriver.java @@ -354,17 +354,17 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17 + ",inst == null :" + ObjectUtil.isEmpty(inst)); } - if (!this.itemProtocol.getIsonline()) { - //this.setIsonline(false); - //this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { - //this.setIsonline(false); - // this.setIserror(true); - message = "未联机"; - //有报警 - } else { +// if (!this.itemProtocol.getIsonline()) { +// //this.setIsonline(false); +// //this.setIserror(true); +// message = "信号量同步异常"; +// //未联机 +// } else if (mode == 0) { +// //this.setIsonline(false); +// // this.setIserror(true); +// message = "未联机"; +// //有报警 +// } else { this.setIsonline(true); this.setIserror(false); message = ""; @@ -386,7 +386,6 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i this.noApplyTaskMessage = this.replace(notApplyTaskMessage); } } - if (mode == 1 && req_task_empty == 1 && !requireSucess) { boolean flag = apply_take_empty_task(); this.noApplyTaskMessage = null; @@ -488,7 +487,7 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i this.noFeedAgvMessage = this.replace(noFeedMessage); } } - } +// } last_packer_error = packer_error; last_out_num = out_num; last_agv_abutment_error = agv_abutment_error; @@ -593,13 +592,17 @@ public class HailiangPackerStationDeviceDriver extends AbstractOpcDeviceDriver i String bag_total_num = ealingOrderDto.getOrder_bag_num(); String time = ealingOrderDto.getTime(); Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); + this.writing("to_clear", "1"); +// this.writing("to_order", dto.getOrder_code()); +// this.writing("to_order_prod_num", bag_total_num);//包装机总包数 +// this.writing("to_box_total_num", box_total_num);//总箱数 +// this.writing("to_bag_total_num", bag_total_num);//总袋数 + map.put("to_order", dto.getOrder_code()); // map.put("to_order_prod_num", String.valueOf(dto.getQty())); map.put("to_order_prod_num", bag_total_num);//包装机总包数 map.put("to_box_total_num", box_total_num);//总箱数 map.put("to_bag_total_num", bag_total_num);//总袋数 - this.writing(map); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java index 61923387..264d439a 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_packer_station/ItemProtocol.java @@ -241,7 +241,8 @@ public class ItemProtocol { list.add(new ItemDto(item_tap_close_pos, "阀门关定位", "DB1.B1.2")); list.add(new ItemDto(item_agv_abutment_error, "AGV对接故障", "DB1.B1.3")); list.add(new ItemDto(item_order_finish, "订单完成", "DB1.B1.5")); - list.add(new ItemDto(item_mode, "工作模式", "DB1.B0.6")); +// list.add(new ItemDto(item_mode, "工作模式", "DB1.B0.6")); + list.add(new ItemDto(item_mode, "工作模式", "DB1.B1.7")); list.add(new ItemDto(item_lack_req, "请求料", "DB1.B2.0")); list.add(new ItemDto(item_hopper_already, "料斗已经到位", "DB1.B2.1")); list.add(new ItemDto(item_req_task_empty, "请求取空料斗", "DB1.B2.6")); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java index 4a549692..1858564c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/HailiangStackingStationDriver.java @@ -139,7 +139,7 @@ public class HailiangStackingStationDriver extends AbstractOpcDeviceDriver imple move = this.itemProtocol.getItem_move(); line_ready = this.itemProtocol.getItem_line_ready(); all_ready = this.itemProtocol.getItem_all_ready(); - finish = this.itemProtocol.getItem_finish(); + finish = this.itemProtocol.getItem_finish1(); is_full_1 = this.itemProtocol.getItem_is_full_1(); is_full_2 = this.itemProtocol.getItem_is_full_2(); is_full_3 = this.itemProtocol.getItem_is_full_3(); @@ -149,7 +149,7 @@ public class HailiangStackingStationDriver extends AbstractOpcDeviceDriver imple move_3 = this.itemProtocol.getItem_move_3(); move_4 = this.itemProtocol.getItem_move_4(); error = this.itemProtocol.getItem_error(); - lane_error = this.itemProtocol.getItem_lane_error(); + lane_error = this.itemProtocol.getItem_lane_error1(); pallet_num_1 = this.itemProtocol.getItem_pallet_num_1(); pallet_num_2 = this.itemProtocol.getItem_pallet_num_2(); pallet_num_3 = this.itemProtocol.getItem_pallet_num_3(); @@ -158,9 +158,9 @@ public class HailiangStackingStationDriver extends AbstractOpcDeviceDriver imple material_2 = this.itemProtocol.getItem_material_2(); material_3 = this.itemProtocol.getItem_material_3(); material_4 = this.itemProtocol.getItem_material_4(); - order_now = this.itemProtocol.getItem_order_now(); - tray_now = this.itemProtocol.getItem_tray_now(); - order = this.itemProtocol.getItem_order(); + order_now = this.itemProtocol.getItem_order_now1(); + tray_now = this.itemProtocol.getItem_tray_now1(); + order = this.itemProtocol.getItem_order1(); isonline = this.itemProtocol.getIsonline(); @@ -392,21 +392,25 @@ public class HailiangStackingStationDriver extends AbstractOpcDeviceDriver imple // } String lane_tray_template = dto.getLane_tray_template(); String to_tray_info = ""; - if (lane_tray_template.equals("1")) { - to_tray_info = lane_tray_template + "12"; - } - if (lane_tray_template.equals("2")) { - to_tray_info = lane_tray_template + "24"; - } if (StrUtil.isEmpty(dto.getTray_num())) { dto.setTray_num("1"); } + int num = 0; + //判断包装机1对应巷道2,包装机2对应巷道2 + if(StrUtil.equals(dto.getDevice_code(),"A1_BZJ_1")){ + num = 2; + to_tray_info = dto.getLane_tray_template() + num + "4"; + } else if(StrUtil.equals(dto.getDevice_code(),"A1_BZJ_2")){ + num = 1; + to_tray_info = dto.getLane_tray_template() + num + "2"; + } + +// this.writing("to_clear"+num, "1"); Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); - map.put("to_order", dto.getOrder_code()); - map.put("to_order_prod_num", dto.getQty().toString()); - map.put("to_tray_num", dto.getTray_num()); - map.put("to_tray_info", to_tray_info); + map.put("to_order"+num, dto.getOrder_code()); + map.put("to_order_prod_num"+num, dto.getEalingOrderDto().getOrder_box_num()); + map.put("to_tray_num"+num, dto.getTray_num()); + map.put("to_tray_info"+num, to_tray_info); this.writing(map); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/ItemProtocol.java index 50c55829..e59ddee9 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_stacking_station/ItemProtocol.java @@ -24,7 +24,8 @@ public class ItemProtocol { //所有设备就绪 public static String item_all_ready = "all_ready"; //1、2#订单完成 - public static String item_finish = "finish"; + public static String item_finish1 = "finish1"; + public static String item_finish2 = "finish2"; //1托盘是否满托 public static String item_is_full_1 = "is_full_1"; //2托盘是否满托 @@ -44,7 +45,8 @@ public class ItemProtocol { //线体故障信息 public static String item_error = "error"; //1、2#巷道故障信息 - public static String item_lane_error = "lane_error"; + public static String item_lane_error1 = "lane_error1"; + public static String item_lane_error2 = "lane_error2"; //1#托盘当前码垛箱数 public static String item_pallet_num_1 = "pallet_num_1"; //2#托盘当前码垛箱数 @@ -62,23 +64,28 @@ public class ItemProtocol { //4#托盘物料信息 public static String item_material_4 = "material_4"; //1、2#当前生产总量(订单实时) - public static String item_order_now = "order_now"; + public static String item_order_now1 = "order_now1"; + public static String item_order_now2 = "order_now2"; //1、2#当前托盘总数(实时) - public static String item_tray_now = "tray_now"; + public static String item_tray_now1 = "tray_now1"; + public static String item_tray_now2 = "tray_now2"; //1、2#工单号 - public static String item_order = "order"; - + public static String item_order1 = "order1"; + public static String item_order2 = "order2"; //设备开关 public static String item_to_open = "to_open"; //机械手启动开关 public static String item_to_open_pulator = "to_open_pulator"; //1、2 码盘信息模板号 - public static String item_to_tray_info = "to_tray_info"; + public static String item_to_tray_info1 = "to_tray_info1"; + public static String item_to_tray_info2 = "to_tray_info2"; //1、2当前产量清零 - public static String item_to_clear = "to_clear"; + public static String item_to_clear1 = "to_clear1"; + public static String item_to_clear2 = "to_clear2"; //1、2确认完成(订单完成状态置零) - public static String item_to_confirm_finished = "to_confirm_finished"; + public static String item_to_confirm_finished1 = "to_confirm_finished1"; + public static String item_to_confirm_finished2 = "to_confirm_finished2"; //1、2巷道箱子长 public static String item_to_lane_box_l = "to_lane_box_l"; //1、2巷道箱子宽 @@ -94,15 +101,20 @@ public class ItemProtocol { //巷道4号托盘强制满托 public static String item_to_lane4_tray_compel_full = "to_lane4_tray_compel_full"; //1、2巷道禁用 - public static String item_to_lane_off = "to_lane_off"; + public static String item_to_lane_off1 = "to_lane_off1"; + public static String item_to_lane_off2 = "to_lane_off2"; //1、2工单强制完成 - public static String item_to_compel_finish = "to_compel_finish"; + public static String item_to_compel_finish1 = "to_compel_finish1"; + public static String item_to_compel_finish2 = "to_compel_finish2"; //1、2订单生产总量 - public static String item_to_order_prod_num = "to_order_prod_num"; + public static String item_to_order_prod_num1 = "to_order_prod_num1"; + public static String item_to_order_prod_num2 = "to_order_prod_num2"; //1、2订单需托盘总数 - public static String item_to_tray_num = "to_tray_num"; + public static String item_to_tray_num1 = "to_tray_num1"; + public static String item_to_tray_num2 = "to_tray_num2"; //1、2工单号 - public static String item_to_order = "to_order"; + public static String item_to_order1 = "to_order1"; + public static String item_to_order2 = "to_order2"; private HailiangStackingStationDriver driver; @@ -130,8 +142,11 @@ public class ItemProtocol { public int getItem_all_ready() { return this.getOpcIntegerValue(item_all_ready); } - public int getItem_finish() { - return this.getOpcIntegerValue(item_finish); + public int getItem_finish1() { + return this.getOpcIntegerValue(item_finish1); + } + public int getItem_finish2() { + return this.getOpcIntegerValue(item_finish2); } public int getItem_is_full_1() { return this.getOpcIntegerValue(item_is_full_1); @@ -160,8 +175,11 @@ public class ItemProtocol { public int getItem_error() { return this.getOpcIntegerValue(item_error); } - public int getItem_lane_error() { - return this.getOpcIntegerValue(item_lane_error); + public int getItem_lane_error1() { + return this.getOpcIntegerValue(item_lane_error1); + } + public int getItem_lane_error2() { + return this.getOpcIntegerValue(item_lane_error2); } public int getItem_pallet_num_1() { return this.getOpcIntegerValue(item_pallet_num_1); @@ -187,14 +205,23 @@ public class ItemProtocol { public int getItem_material_4() { return this.getOpcIntegerValue(item_material_4); } - public int getItem_order_now() { - return this.getOpcIntegerValue(item_order_now); + public int getItem_order_now1() { + return this.getOpcIntegerValue(item_order_now1); } - public int getItem_tray_now() { - return this.getOpcIntegerValue(item_tray_now); + public int getItem_order_now2() { + return this.getOpcIntegerValue(item_order_now2); } - public int getItem_order() { - return this.getOpcIntegerValue(item_order); + public int getItem_tray_now1() { + return this.getOpcIntegerValue(item_tray_now1); + } + public int getItem_tray_now2() { + return this.getOpcIntegerValue(item_tray_now2); + } + public int getItem_order1() { + return this.getOpcIntegerValue(item_order1); + } + public int getItem_order2() { + return this.getOpcIntegerValue(item_order2); } @@ -240,7 +267,8 @@ public class ItemProtocol { list.add(new ItemDto(item_move, "光电信号", "DB1.B1.1")); list.add(new ItemDto(item_line_ready, "线体就绪", "DB1.B2.1")); list.add(new ItemDto(item_all_ready, "所有设备就绪", "DB1.B2.2")); - list.add(new ItemDto(item_finish, "工单完成", "DB1.B2.3")); + list.add(new ItemDto(item_finish1, "工单完成", "DB1.B2.3")); + list.add(new ItemDto(item_finish2, "工单完成", "DB1.B2.4")); list.add(new ItemDto(item_is_full_1, "托盘1是否满托", "DB1.B2.5")); list.add(new ItemDto(item_is_full_2, "托盘2是否满托", "DB1.B2.6")); list.add(new ItemDto(item_is_full_3, "托盘3是否满托", "DB1.B2.7")); @@ -250,7 +278,8 @@ public class ItemProtocol { list.add(new ItemDto(item_move_3, "托盘3光电信号", "DB1.B3.3")); list.add(new ItemDto(item_move_4, "托盘4光电信号", "DB1.B3.4")); list.add(new ItemDto(item_error, "故障信息", "DB1.W4")); - list.add(new ItemDto(item_lane_error, "巷道故障", "DB1.W10")); + list.add(new ItemDto(item_lane_error1, "巷道1故障", "DB1.W10")); + list.add(new ItemDto(item_lane_error2, "巷道2故障", "DB1.W12")); list.add(new ItemDto(item_pallet_num_1, "托盘1当前码垛箱数", "DB1.W64")); list.add(new ItemDto(item_pallet_num_2, "托盘2当前码垛箱数", "DB1.W66")); list.add(new ItemDto(item_pallet_num_3, "托盘3当前码垛箱数", "DB1.W68")); @@ -259,9 +288,13 @@ public class ItemProtocol { list.add(new ItemDto(item_material_2, "托盘2物料信息", "DB1.W74")); list.add(new ItemDto(item_material_3, "托盘3物料信息", "DB1.W76")); list.add(new ItemDto(item_material_4, "托盘4物料信息", "DB1.W78")); - list.add(new ItemDto(item_order_now, "当前生产总量(订单实时)", "DB1.D84")); - list.add(new ItemDto(item_tray_now, "当前托盘总数(实时)", "DB1.D88")); - list.add(new ItemDto(item_order, "工单号", "DB1.D156")); + list.add(new ItemDto(item_order_now1, "当前生产总量1(订单1实时)", "DB1.D84")); + list.add(new ItemDto(item_order_now2, "当前生产总量2(订单2实时)", "DB1.D92")); + list.add(new ItemDto(item_tray_now1, "当前托盘1总数(实时)", "DB1.D88")); + list.add(new ItemDto(item_tray_now2, "当前托盘2总数(实时)", "DB1.D96")); + + list.add(new ItemDto(item_order1, "工单号1", "DB1.D156")); + list.add(new ItemDto(item_order2, "工单号2", "DB1.D160")); return list; } @@ -269,9 +302,12 @@ public class ItemProtocol { ArrayList list = new ArrayList(); list.add(new ItemDto(item_to_open, "设备开关", "DB2.W4")); list.add(new ItemDto(item_to_open_pulator, "机械手开关", "DB2.W10")); - list.add(new ItemDto(item_to_tray_info, "码盘信息(模板号)", "DB2.W12")); - list.add(new ItemDto(item_to_clear, "当前产量清零", "DB2.W16")); - list.add(new ItemDto(item_to_confirm_finished, "订单确认完成", "DB2.W20")); + list.add(new ItemDto(item_to_tray_info1, "码盘信息1(模板号)", "DB2.W12")); + list.add(new ItemDto(item_to_tray_info2, "码盘信息2(模板号)", "DB2.W14")); + list.add(new ItemDto(item_to_clear1, "1号当前产量清零", "DB2.W16")); + list.add(new ItemDto(item_to_clear2, "2号当前产量清零", "DB2.W18")); + list.add(new ItemDto(item_to_confirm_finished1, "订单1确认完成", "DB2.W20")); + list.add(new ItemDto(item_to_confirm_finished2, "订单2确认完成", "DB2.W22")); list.add(new ItemDto(item_to_lane_box_l, "巷道箱子长", "DB2.W28")); list.add(new ItemDto(item_to_lane_box_w, "巷道箱子宽", "DB2.W30")); list.add(new ItemDto(item_to_lane_box_h, "巷道箱子高", "DB2.W32")); @@ -279,11 +315,16 @@ public class ItemProtocol { list.add(new ItemDto(item_to_lane2_tray_compel_full, "托盘2强制满托", "DB2.W42")); list.add(new ItemDto(item_to_lane3_tray_compel_full, "托盘3强制满托", "DB2.W44")); list.add(new ItemDto(item_to_lane4_tray_compel_full, "托盘4强制满托", "DB2.W46")); - list.add(new ItemDto(item_to_lane_off, "巷道暂停", "DB2.W48")); - list.add(new ItemDto(item_to_compel_finish, "工单强制完成", "DB2.W80")); - list.add(new ItemDto(item_to_order_prod_num, "订单生产总量", "DB2.D84")); - list.add(new ItemDto(item_to_tray_num, "托盘总量", "DB2.D88")); - list.add(new ItemDto(item_to_order, "工单号", "DB2.D156")); + list.add(new ItemDto(item_to_lane_off1, "巷道暂停", "DB2.W48")); + list.add(new ItemDto(item_to_lane_off2, "巷道暂停", "DB2.W50")); + list.add(new ItemDto(item_to_compel_finish1, "工单1强制完成", "DB2.W80")); + list.add(new ItemDto(item_to_compel_finish2, "工单2强制完成", "DB2.W82")); + list.add(new ItemDto(item_to_order_prod_num1, "订单1生产总量", "DB2.D84")); + list.add(new ItemDto(item_to_order_prod_num2, "订单2生产总量", "DB2.D92")); + list.add(new ItemDto(item_to_tray_num1, "托盘1总量", "DB2.D88")); + list.add(new ItemDto(item_to_tray_num2, "托盘2总量", "DB2.D96")); + list.add(new ItemDto(item_to_order1, "工单号1", "DB2.D156")); + list.add(new ItemDto(item_to_order2, "工单号2", "DB2.D160")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/ItemProtocol.java index 2831e08a..68663963 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/ItemProtocol.java @@ -41,7 +41,7 @@ public class ItemProtocol { public static String item_order = "order"; - //是否正转 + //是否正转(正常情况下都是正转:1,开箱机1给包装机1;或开箱机2给包装机2。另一情况反转:0,例如开箱机1给包装机2号) public static String item_to_foreward = "to_foreward"; //当前产量清零 public static String item_to_clear = "to_clear"; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java index df6d11e7..a8b5ffca 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_unboxing_machine/UnboxingMachineDeviceDriver.java @@ -198,7 +198,7 @@ public class UnboxingMachineDeviceDriver extends AbstractOpcDeviceDriver impleme if (ealingOrderDto != null) { String is_foreward = ealingOrderDto.getIs_foreward(); Map map = new LinkedHashMap<>(); - map.put("to_clear", "1"); +// map.put("to_clear", "1"); map.put("to_foreward", is_foreward); map.put("to_order_box_num", ealingOrderDto.getOrder_box_num()); map.put("to_order", ealingOrderDto.getOrder_code()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index b3fca404..59907c80 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -39,6 +39,14 @@ public class WmsToAcsController { return new ResponseEntity<>(wmstoacsService.createFromWms(tasks), HttpStatus.OK); } + @PostMapping("/liKuTaskAgain") + @Log("接收LMS重新分配任务") + @ApiOperation("接收LMS重新分配任务") + @SaIgnore + public ResponseEntity createLiKuTask(@RequestBody List tasks) { + return new ResponseEntity<>(wmstoacsService.createLiKuTaskAgain(tasks), HttpStatus.OK); + } + @PostMapping("/order") @Log("wms下发acs工单") @ApiOperation("wms下发acs工单") diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java index 20813899..671a80eb 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/WmsToAcsService.java @@ -15,6 +15,14 @@ public interface WmsToAcsService { */ Map createFromWms(List tasks); + /** + * lms重新分配liku任务 + * + * @param tasks 条件 + * @return + */ + Map createLiKuTaskAgain(List tasks); + /** * wms下发工单 * @@ -162,4 +170,12 @@ public interface WmsToAcsService { * @return Map */ Map cleaningIn(JSONObject param); + + /** + * 下发电气信号(公用接口) + * + * @param param 条件 + * @return Map + */ + Map writePlc(JSONObject param); } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java index 577fc88c..13bd7dd1 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToLiKuServiceImpl.java @@ -109,5 +109,13 @@ public class AcsToLiKuServiceImpl implements AcsToLiKuService { JSONObject jo = new JSONObject(); jo.put("code", 0); jo.put("msg", "111"); + + UnloadContainerReqResponse unloadContainerReqResponse = new UnloadContainerReqResponse(); + unloadContainerReqResponse.setAllow(false); + JSONObject result = new JSONObject(); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", unloadContainerReqResponse); + log.info("放容器请求-----输出参数{}", JSON.toJSONString(result)); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java index 0e866796..ce87844c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java @@ -2,14 +2,15 @@ package org.nl.acs.ext.wms.service.impl; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; import org.nl.acs.device.address.service.AddressService; -import org.nl.acs.device_driver.basedriver.agv.liku_agv.LiKuDeviceDriver; -import org.nl.acs.device_driver.basedriver.hailiang_hr_ssx.HailiangHrSsxDeviceDriver; -import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_hr_ssx.HailiangHrSsxDeviceDriver; import org.nl.acs.ext.wms.RespUtil; import org.nl.acs.ext.wms.liKuData.a.*; import org.nl.acs.ext.wms.service.AcsToLiKuService; @@ -19,11 +20,9 @@ import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; -import org.nl.acs.opc.DeviceAppServiceImpl; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; -import org.nl.modules.common.utils.StringUtils; -import org.nl.modules.wql.util.SpringContextHolder; +import org.nl.modules.system.service.ParamService; import org.slf4j.MDC; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -41,19 +40,20 @@ import java.util.List; @RequiredArgsConstructor @Slf4j public class LiKuToAcsServiceImpl implements LiKuToAcsService { - - private final AddressService addressService; - - private final TaskService taskService; - - private final InstructionService instructionService; - - private final DeviceAppService deviceAppService; - - private final AcsToWmsService acsToWmsService; - - private final AcsToLiKuService acsToLiKuService; - + @Autowired + private AddressService addressService; + @Autowired + private TaskService taskService; + @Autowired + private InstructionService instructionService; + @Autowired + private DeviceAppService deviceAppService; + @Autowired + private AcsToWmsService acsToWmsService; + @Autowired + private AcsToLiKuService acsToLiKuService; + @Autowired + private ParamService paramService; // DeviceAppService appService= SpringContextHolder.getBean(DeviceAppServiceImpl.class); @@ -63,16 +63,14 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { @Override public JSONObject queryConveyor(QueryConveyorRequest requestParam) throws Exception { - try{ log.info("查询输送线料箱状态-----输入参数{}", JSON.toJSONString(requestParam)); - String conveyorCodes = requestParam.conveyorCodes; - NodeStates nodeStates=new NodeStates(); + JSONObject result = new JSONObject(); + try{ + String conveyorCodes = requestParam.getConveyorCodes(); + NodeStates nodeStates = new NodeStates(); List list2 = new ArrayList<>(); - Conveyors conveyors=new Conveyors(); - JSONObject result = new JSONObject(); - Device device=deviceAppService.findDeviceByCode(conveyorCodes); - result.put("code", "0"); - result.put("msg", "success"); + Conveyors conveyors = new Conveyors(); + Device device = deviceAppService.findDeviceByCode(conveyorCodes); QueryConveyorResponse queryConveyorResponse = new QueryConveyorResponse(); if (device != null && device.getDeviceDriver() instanceof HailiangHrSsxDeviceDriver) { HailiangHrSsxDeviceDriver hailiangHrSsxDeviceDriver= (HailiangHrSsxDeviceDriver) device.getDeviceDriver(); @@ -82,23 +80,29 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { if (!ObjectUtil.isEmpty(device.getLocation())) { nodeStates.setSlotCode(device.getDevice_code()); } - if (!ObjectUtil.equals(hailiangHrSsxDeviceDriver.getMove(),"1")) { + if (ObjectUtil.equals(hailiangHrSsxDeviceDriver.getMove(),"1")) { nodeStates.setHasContainer(true); - }else { nodeStates.setHasContainer(false);} + }else { + nodeStates.setHasContainer(false); + } } list2.add(nodeStates); conveyors.setNodeStates(list2); List list = new ArrayList<>(); - queryConveyorResponse.setConveyors(list); list.add(conveyors); - result.put("data", queryConveyorResponse); - log.info("查询输送线料箱状态-----输出参数{}", result); - return result; - - } finally { - MDC.remove(log_file_type); - } - } + queryConveyorResponse.setConveyors(list); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", queryConveyorResponse); + }catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("查询输送线料箱状态--------------:输出参数{}" , JSON.toJSONString(result)); + } + log.info("查询输送线料箱状态,响应参数:{}", JSON.toJSONString(result)); + return result; + } @Override public JSONObject queryNodeReader(QueryNodeReaderRequest requestParam) throws Exception { try{ @@ -118,39 +122,60 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { @Override public JSONObject loadContainerFinish(LoadContainerFinishRequest requestParam) throws Exception { + log.info("取容器完成通知-----输入参数{}", JSON.toJSONString(requestParam)); + JSONObject result = new JSONObject(); try{ - log.info("取容器完成通知-----输入参数{}", JSON.toJSONString(requestParam)); String slotCode = requestParam.slotCode; String containerCode=requestParam.containerCode; - LoadContainerFinishResponse loadContainerFinishResponse = new LoadContainerFinishResponse(); - JSONObject result = new JSONObject(); - JSONObject json = (JSONObject) JSONObject.toJSON(loadContainerFinishResponse); - result.put("code", "0"); - result.put("msg", "success"); - result.put("data", json); - log.info("取容器完成通知-----输出参数{}", result); - return result; - } finally { - MDC.remove(log_file_type); +// LoadContainerFinishResponse loadContainerFinishResponse = new LoadContainerFinishResponse(); + Device device = deviceAppService.findDeviceByCode(slotCode); + if (device != null && device.getDeviceDriver() instanceof HailiangHrSsxDeviceDriver) { + HailiangHrSsxDeviceDriver hailiangHrSsxDeviceDriver= (HailiangHrSsxDeviceDriver) device.getDeviceDriver(); + //下发输送线电气取货完成 + hailiangHrSsxDeviceDriver.writing("to_command","2"); +// JSONObject json = (JSONObject) JSONObject.toJSON(loadContainerFinishResponse); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", new JSONObject()); + } + }catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("取容器完成通知--------------:输出参数{}" , JSON.toJSONString(result)); } + log.info("取容器完成通知-----输出参数{}", JSON.toJSONString(result)); + return result; } @Override public JSONObject unloadContainerReq(UnloadContainerReqRequest requestParam) throws Exception { + log.info("放容器请求-----输入参数{}", JSON.toJSONString(requestParam)); + UnloadContainerReqResponse unloadContainerReqResponse = new UnloadContainerReqResponse(); + JSONObject result = new JSONObject(); try{ - log.info("放容器请求-----输入参数{}", JSON.toJSONString(requestParam)); String slotCode = requestParam.slotCode; String containerCode=requestParam.containerCode; - UnloadContainerReqResponse unloadContainerReqResponse = new UnloadContainerReqResponse(); - JSONObject result = new JSONObject(); + Device device = deviceAppService.findDeviceByCode(slotCode); + if (device != null && device.getDeviceDriver() instanceof HailiangHrSsxDeviceDriver) { + HailiangHrSsxDeviceDriver hailiangHrSsxDeviceDriver= (HailiangHrSsxDeviceDriver) device.getDeviceDriver(); + if (hailiangHrSsxDeviceDriver.getAction() == 2){ + unloadContainerReqResponse.setAllow(true); + }else{ + unloadContainerReqResponse.setAllow(false); + } + } result.put("code", "0"); result.put("msg", "success"); result.put("data", unloadContainerReqResponse); - log.info("放容器请求-----输出参数{}", result); - return result; - } finally { - MDC.remove(log_file_type); + } catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("放容器请求--------------:输出参数{}" , JSON.toJSONString(result)); } + log.info("放容器请求-----输出参数{}", JSON.toJSONString(result)); + return result; } @Override @@ -198,9 +223,9 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { try{ log.info("任务状态上报-----输入参数{}", JSON.toJSONString(requestParam)); String inst_id = requestParam.getTaskCode(); - String eventType=requestParam.getEventType(); - String status=requestParam.getStatus(); - String carNo=requestParam.getRobotCode(); + String eventType = requestParam.getEventType(); + String status = requestParam.getStatus(); + String carNo = requestParam.getRobotCode(); Instruction inst = instructionService.findById(inst_id); if (ObjectUtil.isEmpty(inst)) { TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); @@ -208,7 +233,7 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { result.put("result", "false"); result.put("code", "0"); result.put("comment", "未找到对应指令"); - result.put("data", taskstatusReportingResponse ); + result.put("data", taskstatusReportingResponse); log.info("任务状态上报-----输出参数{}", result); return RespUtil.getResp(result.toString(), new TaskstatusReportingResponse()); } @@ -301,8 +326,33 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { try{ log.info("异常上报-----输入参数{}", JSON.toJSONString(requestParam)); String eventType=requestParam.getEventType(); - if(StrUtil.equals(eventType,"location_abnormal") || StrUtil.equals(eventType,"robot_abnormal") ){ + if(StrUtil.equals(eventType,"location_abnormal") || StrUtil.equals(eventType,"robot_abnormal") ){ + //异常描述 + String message = requestParam.getMessage(); + if (StrUtil.equals(message,"TRY_ACTION_LOCATION_ALREADY_LOADING_CONTAINER")){ + // 判断是否为WMS下发的任务,如果是反馈任务状态给WMS + String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); +// if (!StrUtil.startWith(dto.getTask_code(), "-") && StrUtil.equals(hasWms, "1")) { +// JSONObject feed_jo = new JSONObject(); +// feed_jo.put("task_id", entity.getExt_task_id()); +// feed_jo.put("status", dto.getTask_status()); +// if (ObjectUtil.isNotEmpty(dto.getQuantity())) { +// feed_jo.put("quantity", dto.getQuantity()); +// } +// if (ObjectUtil.isNotEmpty(dto.getVehicle_code())) { +// feed_jo.put("vehicle_code", dto.getVehicle_code()); +// } +// if (ObjectUtil.isNotEmpty(dto.getWeight())) { +// feed_jo.put("weight", dto.getWeight()); +// } +// feed_jo.put("ext_param", dto.getExt_param()); +// JSONArray ja = new JSONArray(); +// ja.add(feed_jo); +// HttpResponse httpResponse = acsToWmsService.feedbackTaskStatusToWms(ja); +// this.taskFeedbackAdd(httpResponse, dto); +// } + } } AbnormarReportingResponse abnormarReportingResponse = new AbnormarReportingResponse(); JSONObject result = new JSONObject(); 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 b4e5be87..86b55754 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 @@ -13,7 +13,6 @@ import org.nl.acs.AcsConfig; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_auto_cache_line.HailiangAutoCacheLineDeviceDriver; -import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_feeding_line.HailiangCleaningFeedingLineDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_machine_storage_station.HailiangCleaningMachineStorageStationDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_cleaning_put_line.HailiangCleaningPutLineDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.hailiang_engraving_in.HailiangEngravingInDeviceDriver; @@ -44,13 +43,11 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import java.math.BigDecimal; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -85,6 +82,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { String task_id = task.getString("task_id"); String task_code = task.getString("task_code"); String task_type = task.getString("task_type"); + String storage_task_type = task.getString("storage_task_type"); String task_group_id = task.getString("task_group_id"); String is_send = task.getString("is_send"); String start_point_code = task.getString("start_point_code"); @@ -183,24 +181,41 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (hailiangEngravingInDeviceDriver.getGd_move() == 0) { JSONObject json = new JSONObject(); json.put("task_id", task_id); - json.put("message", "上面无料框!请核实后再点击按钮!"); + json.put("message", "->上面无料框!请核实后再点击按钮!"); errArr.add(json); continue; } } } - if (StrUtil.equals(put_point_code,"A1_KZ_SL")) { - Device device = deviceAppService.findDeviceByCode(put_point_code); + if (StrUtil.equals(next_point_code,"A1_KZ_SL")) { + Device device = deviceAppService.findDeviceByCode(next_point_code); HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); if (hailiangEngravingInDeviceDriver.getGd_move() == 1) { JSONObject json = new JSONObject(); json.put("task_id", task_id); - json.put("message", "上面有料框!请核实后再点击按钮!"); + json.put("message", "->已有料框!请核实后再点击按钮!"); errArr.add(json); continue; } + if (StrUtil.equals(start_point_code,"A1_BCPRKW_SD")){ + if (hailiangEngravingInDeviceDriver.getMode() == 1) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "->请切换手动模式!"); + errArr.add(json); + continue; + } + }else { + if (hailiangEngravingInDeviceDriver.getMode() == 0) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "->请切换自动模式!"); + errArr.add(json); + continue; + } + } } } @@ -241,13 +256,15 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { jo.put("priority", priority); jo.put("vehicle_code", vehicle_code); jo.put("agv_system_type", agv_system_type); - jo.put("create_by", "mes"); + jo.put("create_by", "lms"); jo.put("barcodeArr", barcodeArr); jo.put("priority_floor", priority_floor); jo.put("material_code", material_code); jo.put("quantity", quantity); jo.put("qtyArr", qtyArr); jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type)); + jo.put("storage_task_type", StrUtil.isEmpty(storage_task_type) ? 1 : Integer.parseInt(storage_task_type)); + TaskDto task_dto = jo.toJavaObject(TaskDto.class); try { taskService.create(task_dto); @@ -310,7 +327,14 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { Map package_ext = param.getJSONObject("package_ext"); EalingOrderDto ealingOrderDto = new EalingOrderDto(); -// UnboxingOrderDto unboxingOrderDto = null; + String one_box_package_qty = ""; + String package_qty = ""; + String one_package_qty = ""; + String box_num = ""; + String box_type = ""; + String target_roadway = ""; + String is_flip = ""; + String tray_full_num = ""; if (ObjectUtil.isNotEmpty(package_ext)) { //是否启用封箱线 is_used_fxx = ObjectUtil.isEmpty(package_ext.get("is_used_fxx")) ? null : package_ext.get("is_used_fxx").toString(); @@ -319,16 +343,10 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { ealingOrderDto.setOrder_box_num(ObjectUtil.isEmpty(package_ext.get("demol_num")) ? null : package_ext.get("demol_num").toString()); //装箱模版 ealingOrderDto.setTemplate_no(ObjectUtil.isEmpty(package_ext.get("package_model")) ? null : package_ext.get("package_model").toString()); - //码盘模版 - lane_tray_template= ObjectUtil.isEmpty(package_ext.get("stack_model")) ? null : package_ext.get("stack_model").toString(); //是否正反转 ealingOrderDto.setIs_foreward(ObjectUtil.isEmpty(package_ext.get("is_foreward")) ? null : package_ext.get("is_foreward").toString()); //总袋数 ealingOrderDto.setOrder_bag_num(ObjectUtil.isEmpty(package_ext.get("order_bag_num")) ? null : package_ext.get("order_bag_num").toString()); - //装箱机设备 - ealing_device_code = ObjectUtil.isEmpty(package_ext.get("ealing_device_code")) ? null : package_ext.get("ealing_device_code").toString(); - //开箱机设备 - unboxing_device_code = ObjectUtil.isEmpty(package_ext.get("unboxing_device_code")) ? null : package_ext.get("unboxing_device_code").toString(); //封箱机是否自动确认(1:自动确认 2:定时确认 3:人工确认) ealingOrderDto.setIs_auto_confirm(ObjectUtil.isEmpty(package_ext.get("auto_confirm")) ? null : package_ext.get("auto_confirm").toString()); //确认时间 @@ -339,17 +357,32 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { ealingOrderDto.setOne_box_weight(ObjectUtil.isEmpty(package_ext.get("demol_weight")) ? null : package_ext.get("demol_weight").toString()); //每袋重量 ealingOrderDto.setOne_bag_weight(ObjectUtil.isEmpty(package_ext.get("one_bag_weight")) ? null : package_ext.get("one_bag_weight").toString()); + //后期下面参数为准 + //装箱机设备 + ealing_device_code = ObjectUtil.isEmpty(package_ext.get("ealing_device_code")) ? null : package_ext.get("ealing_device_code").toString(); + //开箱机设备 + unboxing_device_code = ObjectUtil.isEmpty(package_ext.get("unboxing_device_code")) ? null : package_ext.get("unboxing_device_code").toString(); + //每箱袋数 + one_box_package_qty = ObjectUtil.isEmpty(package_ext.get("one_bag_num")) ? null : package_ext.get("one_bag_num").toString(); + //袋数 + package_qty = ObjectUtil.isEmpty(package_ext.get("order_bag_num")) ? null : package_ext.get("order_bag_num").toString(); + //每袋数量 + one_package_qty = ObjectUtil.isEmpty(package_ext.get("one_bag_weight")) ? null : package_ext.get("one_bag_weight").toString(); + //箱数 + box_num = ObjectUtil.isEmpty(package_ext.get("demol_num")) ? null : package_ext.get("demol_num").toString(); + //目标巷道 +// target_roadway = ObjectUtil.isEmpty(extra_map.get("target_roadway")) ? null : extra_map.get("target_roadway").toString(); + //是否翻转 + is_flip = ObjectUtil.isEmpty(package_ext.get("is_foreward")) ? null : package_ext.get("is_foreward").toString(); + //托盘满托数量 + tray_full_num = ObjectUtil.isEmpty(package_ext.get("tray_full_num")) ? null : package_ext.get("tray_full_num").toString(); + //码盘模版 + lane_tray_template = ObjectUtil.isEmpty(package_ext.get("stack_model")) ? null : package_ext.get("stack_model").toString(); + //码盘数量 + tray_num = ObjectUtil.isEmpty(package_ext.get("tray_num")) ? null : package_ext.get("tray_num").toString(); } ealingOrderDto.setOrder_code(workorder_code); - String one_box_package_qty = ""; - String package_qty = ""; - String one_package_qty = ""; - String box_num = ""; - String box_type = ""; - String target_roadway = ""; - String is_flip = ""; - String tray_full_num = ""; if (ObjectUtil.isNotEmpty(extra_map)) { //老车间包装工单信息 //每箱袋数 @@ -368,8 +401,9 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { is_flip = ObjectUtil.isEmpty(extra_map.get("is_flip")) ? null : extra_map.get("is_flip").toString(); //托盘满托数量 tray_full_num = ObjectUtil.isEmpty(extra_map.get("tray_full_num")) ? null : extra_map.get("tray_full_num").toString(); - // + //码垛模板号 lane_tray_template = ObjectUtil.isEmpty(extra_map.get("lane_tray_template")) ? null : extra_map.get("lane_tray_template").toString(); + //码盘数量 tray_num = ObjectUtil.isEmpty(extra_map.get("tray_num")) ? null : extra_map.get("tray_num").toString(); } @@ -453,7 +487,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { dto.setIs_flip(is_flip); dto.setTray_full_num(tray_full_num); dto.setEalingOrderDto(ealingOrderDto); - dto.setCreate_by("mes"); + dto.setCreate_by("lms"); dto.setTray_num(tray_num); dto.setLane_tray_template(lane_tray_template); try { @@ -727,7 +761,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { //更改工单设备号 produceshiftorderDto.setDevice_code(new_device_code); produceshiftorderDto.setUpdate_time(now); - produceshiftorderDto.setUpdate_by("mes"); + produceshiftorderDto.setUpdate_by("lms"); produceshiftorderService.updateByOrderCode(produceshiftorderDto); //将新设备中的报工数量Report_qty更改为上个设备生产的数量 @@ -1311,7 +1345,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { hailiangCleaningPutLineDeviceDriver = (HailiangCleaningPutLineDeviceDriver) device.getDeviceDriver(); resultJson.put("in_pcsn", hailiangCleaningPutLineDeviceDriver.getIn_pcsn()); resultJson.put("vechile_code", hailiangCleaningPutLineDeviceDriver.getBarcode()); - resultJson.put("weight", hailiangCleaningPutLineDeviceDriver.getFull_weight()); + resultJson.put("weight", hailiangCleaningPutLineDeviceDriver.getNow_weight()); } resultJson.put("status", 200); resultJson.put("message", "操作成功"); @@ -1319,54 +1353,119 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { return resultJson; } +// @Override +// public Map engravingIn(JSONObject param) { +// log.info("接收WMS刻字上料,下发参数:{}", JSON.toJSONString(param)); +// String start_device_code = param.getString("start_point_code"); +// String to_sort_array = param.getString("to_sort_array"); +// String to_devices_array = param.getString("to_devices_array"); +// String to_weight_array = param.getString("to_weight_array"); +// //上料总重量 +// String all_weight = param.getString("all_weight"); +// String to_task = param.getString("task_code"); +// if (StrUtil.isEmpty(start_device_code)) { +// throw new BadRequestException("设备号不能为空!"); +// } +// Device device = deviceAppService.findDeviceByCode(start_device_code); +// if (ObjectUtil.isEmpty(device)) { +// throw new BadRequestException("未找到对应设备:" + start_device_code); +// } +// JSONObject resultJson = new JSONObject(); +// //刻字上料 +// HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; +// if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { +// hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); +// String[] sort = to_sort_array.split(","); +// for (int i=0;i< sort.length;i++){ +// hailiangEngravingInDeviceDriver.writing("to_sort"+(i+1),sort[i]); +// } +// String[] devices = to_devices_array.split(","); +// for (int i=0;i< devices.length;i++){ +// String[] device_i = devices[i].split("_"); +// hailiangEngravingInDeviceDriver.writing("to_devices"+(i+1),device_i[device_i.length-1]); +// } +// String[] weight = to_weight_array.split(","); +// for (int i=0;i< weight.length;i++){ +// hailiangEngravingInDeviceDriver.writing("to_weight"+(i+1),weight[i]); +// } +// hailiangEngravingInDeviceDriver.writing("to_all_weight", all_weight); +//// hailiangEngravingInDeviceDriver.writing("to_all_weight",String.valueOf(hailiangEngravingInDeviceDriver.getEngraving_storage_now_weight())); +// hailiangEngravingInDeviceDriver.writing("to_task",to_task); +// } +// // TODO 反馈mes +// JSONObject reqParam = new JSONObject(); +// reqParam.put("task_code", to_task); +// reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); +// HttpResponse httpResponse = acsToWmsService.washTask(reqParam); +// +// resultJson.put("status", 200); +// resultJson.put("message", "操作成功"); +// log.info("接收WMS刻字上料成功,响应参数:{}", JSON.toJSONString(resultJson)); +// return resultJson; +// } + @Override public Map engravingIn(JSONObject param) { - log.info("接收WMS刻字上料,下发参数:{}", JSON.toJSONString(param)); + log.info("接收WMS刻字输送线任务,下发参数:{}", JSON.toJSONString(param)); String start_device_code = param.getString("start_point_code"); String to_sort_array = param.getString("to_sort_array"); String to_devices_array = param.getString("to_devices_array"); String to_weight_array = param.getString("to_weight_array"); //上料总重量 String all_weight = param.getString("all_weight"); - String to_task = param.getString("task_code"); + String task_code = param.getString("task_code"); +// String[] in_devices = param.getString("in_devices").split(","); + JSONArray errArr = new JSONArray(); if (StrUtil.isEmpty(start_device_code)) { throw new BadRequestException("设备号不能为空!"); } Device device = deviceAppService.findDeviceByCode(start_device_code); if (ObjectUtil.isEmpty(device)) { - throw new BadRequestException("未找到对应设备:" + start_device_code); + throw new BadRequestException("未找到对应刻字上料设备:" + start_device_code); } - JSONObject resultJson = new JSONObject(); - //刻字上料 - HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; - if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { - hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); - String[] sort = to_sort_array.split(","); - for (int i=0;i< sort.length;i++){ - hailiangEngravingInDeviceDriver.writing("to_sort"+(i+1),sort[i]); - } - String[] devices = to_devices_array.split(","); - for (int i=0;i< devices.length;i++){ - String[] device_i = devices[i].split("_"); - hailiangEngravingInDeviceDriver.writing("to_devices"+(i+1),device_i[device_i.length-1]); - } - String[] weight = to_weight_array.split(","); - for (int i=0;i< weight.length;i++){ - hailiangEngravingInDeviceDriver.writing("to_weight"+(i+1),weight[i]); - } - hailiangEngravingInDeviceDriver.writing("to_all_weight", all_weight); -// hailiangEngravingInDeviceDriver.writing("to_all_weight",String.valueOf(hailiangEngravingInDeviceDriver.getEngraving_storage_now_weight())); - hailiangEngravingInDeviceDriver.writing("to_task",to_task); - } - // TODO 反馈mes - JSONObject reqParam = new JSONObject(); - reqParam.put("task_code", to_task); - reqParam.put("status", StatusEnum.TASK_RUNNING.getCode()); - HttpResponse httpResponse = acsToWmsService.washTask(reqParam); - resultJson.put("status", 200); - resultJson.put("message", "操作成功"); - log.info("接收WMS刻字上料成功,响应参数:{}", JSON.toJSONString(resultJson)); + JSONObject resultJson = new JSONObject(); + ProduceshiftorderDto dto = new ProduceshiftorderDto(); + dto.setExt_order_id(task_code); + dto.setOrder_code(task_code); + dto.setQty(BigDecimal.valueOf(Long.parseLong(all_weight))); + dto.setMaterial_code("KZSL"); + dto.setDevice_code(start_device_code); + dto.setIs_needmove("0"); + dto.setIn_devices(to_devices_array); + dto.setCreate_by("lms"); + dto.setMaterial_name(to_sort_array); + dto.setMaterial_spec(to_weight_array); + try { + HailiangEngravingInDeviceDriver hailiangEngravingInDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangEngravingInDeviceDriver) { + hailiangEngravingInDeviceDriver = (HailiangEngravingInDeviceDriver) device.getDeviceDriver(); + if (hailiangEngravingInDeviceDriver.getMode() == 0) { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("message", "->请切换自动模式!"); + errArr.add(json); + }else if (hailiangEngravingInDeviceDriver.getMode() == 1){ + produceshiftorderService.create(dto); + } + } + + } catch (Exception e) { + e.printStackTrace(); + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("message", e.getMessage()); + errArr.add(json); + } + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("status", 200); + } else { + resultJson.put("status", 400); + } + resultJson.put("errArr", errArr); + resultJson.put("message", errArr.size() > 0 ? "存在下发未成功的刻字输送线任务!" : "操作成功!"); + resultJson.put("data", new JSONObject()); + log.info("接收wms下发刻字输送线任务,响应参数:{}", JSON.toJSONString(resultJson)); return resultJson; } @@ -1460,7 +1559,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { dto.setDevice_code(device_code); dto.setIs_needmove("0"); dto.setIn_devices(in_devices); - dto.setCreate_by("mes"); + dto.setCreate_by("lms"); try { produceshiftorderService.create(dto); } catch (Exception e) { @@ -1481,4 +1580,201 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { log.info("接收wms下发清洗下料,响应参数:{}", JSON.toJSONString(resultJson)); return resultJson; } + + @Override + public Map writePlc(JSONObject param) { + log.info("接收WMS下发电气,下发参数:{}", JSON.toJSONString(param)); + String device_code = param.getString("device_code"); + List extArray = (List) param.get("extArray"); + if (StrUtil.isEmpty(device_code)) { + throw new BadRequestException("设备号不能为空!"); + } + Device device = deviceAppService.findDeviceByCode(device_code); + if (ObjectUtil.isEmpty(device)) { + throw new BadRequestException("未找到对应设备:" + device_code); + } + for (int i = 0; i < extArray.size(); i++) { + JSONObject object = (JSONObject) extArray.get(i); + + } + JSONObject resultJson = new JSONObject(); + + //清洗下料 + HailiangCleaningPutLineDeviceDriver hailiangCleaningPutLineDeviceDriver; + if (device.getDeviceDriver() instanceof HailiangCleaningPutLineDeviceDriver) { + hailiangCleaningPutLineDeviceDriver = (HailiangCleaningPutLineDeviceDriver) device.getDeviceDriver(); + hailiangCleaningPutLineDeviceDriver.writing("",""); + } + resultJson.put("status", 200); + resultJson.put("message", "操作成功"); + log.info("接收WMS清洗下料成功,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } + + @Override + public Map createLiKuTaskAgain(List tasks) { + log.info("接收lms重新分配海柔任务,下发参数:{}", JSON.toJSONString(tasks)); + JSONObject resultJson = new JSONObject(); + try { + JSONArray errArr = new JSONArray(); + for (int i = 0; i < tasks.size(); i++) { + JSONObject task = tasks.get(i); + String task_id = task.getString("task_id"); + String task_code = task.getString("task_code"); + String task_type = task.getString("task_type"); + String task_group_id = task.getString("task_group_id"); + String is_send = task.getString("is_send"); + String start_point_code = task.getString("start_point_code"); + String next_point_code = task.getString("next_point_code"); + String put_point_code = task.getString("put_point_code"); + String priority = task.getString("priority"); + String vehicle_code = task.getString("vehicle_code"); + String agv_system_type = task.getString("agv_system_type"); + String barcodeArr = task.getString("barcodeArr"); + String priority_floor = task.getString("priority_floor"); + String material_code = task.getString("material_code"); + String quantity = task.getString("quantity"); + String qtyArr = task.getString("qtyArr"); + + if (StrUtil.isEmpty(task_id)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "任务id不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(task_code)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "任务号不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(task_group_id)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "任务关联编号不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(task_type)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "任务类型不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(is_send)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "是否立刻下发AGV"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(start_point_code)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "起点不能为空"); + errArr.add(json); + continue; + } + if (StrUtil.isEmpty(next_point_code)) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "终点不能为空"); + errArr.add(json); + continue; + } + if (taskService.findByCodeFromCache(task_code) != null) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "不能存在相同的任务号:" + task_code); + errArr.add(json); + continue; + } + if (!StrUtil.isEmpty(vehicle_code)) { + TaskDto vehicle_dto = taskService.findByContainer(vehicle_code); + if (vehicle_dto != null) { + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", "已存在该载具的任务,载具号:" + vehicle_code + ",对应的任务号:" + task_code); + errArr.add(json); + continue; + } + } + + String start_device_code = ""; + String next_device_code = ""; + JSONObject start_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + start_point_code + "'").uniqueResult(0); + if (!ObjectUtil.isEmpty(start_device_json)) { + start_point_code = (String) start_device_json.get("parent_storage_code") == null ? start_point_code : (String) start_device_json.get("storage_code"); + } + JSONObject next_device_json = WQLObject.getWQLObject("acs_storage_cell").query("parent_storage_code ='" + next_point_code + "'").uniqueResult(0); + if (!ObjectUtil.isEmpty(next_device_json)) { + next_point_code = (String) next_device_json.get("parent_storage_code") == null ? next_point_code : (String) next_device_json.get("storage_code"); + } + if (start_point_code.indexOf("-") > 0) { + String str[] = start_point_code.split("-"); + start_device_code = str[0]; + } else { + start_device_code = start_point_code; + } + + if (next_point_code.indexOf("-") > 0) { + String str[] = next_point_code.split("-"); + next_device_code = str[0]; + } else { + next_device_code = next_point_code; + } + JSONObject jo = new JSONObject(); + jo.put("task_code", task_code); + jo.put("ext_task_id", task_id); + jo.put("link_num", task_group_id); + jo.put("is_send", is_send); + jo.put("start_point_code", start_point_code); + jo.put("start_device_code", start_device_code); + jo.put("next_point_code", next_point_code); + jo.put("next_device_code", next_device_code); + jo.put("put_point_code", put_point_code); + jo.put("put_device_code", put_point_code); + jo.put("priority", priority); + jo.put("vehicle_code", vehicle_code); + jo.put("agv_system_type", agv_system_type); + jo.put("create_by", "lms"); + jo.put("barcodeArr", barcodeArr); + jo.put("priority_floor", priority_floor); + jo.put("material_code", material_code); + jo.put("quantity", quantity); + jo.put("qtyArr", qtyArr); + jo.put("task_type", StrUtil.isEmpty(task_type) ? 1 : Integer.parseInt(task_type)); + TaskDto task_dto = jo.toJavaObject(TaskDto.class); + try { + taskService.create(task_dto); + } catch (Exception e) { + e.printStackTrace(); + JSONObject json = new JSONObject(); + json.put("task_id", task_id); + json.put("message", e.getMessage()); + errArr.add(json); + } + } + if (ObjectUtil.isEmpty(errArr)) { + resultJson.put("status", 200); + } else { + resultJson.put("status", 400); + } + resultJson.put("errArr", errArr); + resultJson.put("message", errArr.size() > 0 ? "存在下发未成功的任务!" + JSON.toJSONString(errArr) : "下发成功!"); + resultJson.put("data", new JSONObject()); + log.info("createFromWms--------------:输出参数:" + resultJson.toString()); + } catch (Exception e) { + resultJson.put("status", 400); + resultJson.put("errArr", new JSONArray()); + resultJson.put("message", e.getMessage()); + resultJson.put("data", new JSONObject()); + log.info("createFromWms--------------:输出参数:" + resultJson.toString()); + } + log.info("接收wms下发任务,响应参数:{}", JSON.toJSONString(resultJson)); + return resultJson; + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index 3f7df84e..dd9bb8aa 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -41,6 +41,8 @@ import org.nl.acs.task.service.dto.TaskDto; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.common.utils.FileUtil; import org.nl.modules.common.utils.SecurityUtils; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.WQL; @@ -84,7 +86,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu private TaskService taskService; @Autowired AcsToLiKuService acsToLiKuService; - +// private LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); @Override public void autoInitial() { this.reload(); @@ -354,7 +356,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu * 7 不去称重平台称重PS20 agvtype:2 * 8 RT20 agvtype:3 */ - if(StrUtil.equals(task.getTask_type(),"10")){ + if(StrUtil.equals(task.getTask_type(),"18")){ CreateRequest createRequest = new CreateRequest(); List list = new ArrayList(); AcsToLiKuService acsToLiKuService = SpringContextHolder.getBean(AcsToLiKuService.class); @@ -457,7 +459,20 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } } } catch (Exception e) { - dto.setSend_status("2"); + try { + Thread.sleep(5000L); + if (StrUtil.equals("1", dto.getAgv_system_type())) { + ndcAgvService.sendAgvTwoInstToNDC(dto, null); + } else if (StrUtil.equals("2", dto.getAgv_system_type())) { + ndcAgvService.sendAgvOneInstToNDC(dto); + } + dto.setSend_status("1"); + } catch (InterruptedException ex) { + ex.printStackTrace(); + } catch (Exception exception) { + dto.setSend_status("2"); + exception.printStackTrace(); + } e.printStackTrace(); } @@ -863,6 +878,8 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu jo.put("batch", ""); jo.put("islock", "0"); deviceService.changeDeviceStatus(jo); +// lucene.deviceExecuteLog(new LuceneLogDto(id,"指令更新状态为:"+entity.getInstruction_status())); + log.info("{}指令更新状态为:{}",id,entity.getInstruction_status()); this.update(entity); JSONObject taskjson = taskwo.query("task_id ='" + insttaskid + "'").uniqueResult(0); TaskDto obj = taskjson.toJavaObject(TaskDto.class); @@ -880,7 +897,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Transactional public void finishByLinkNum(String linkNum) { List insts = this.findByLinkNum(linkNum); - if (insts != null) { + if (insts != null && insts.size() > 0) { insts.stream().forEach(inst -> { try { this.finish(inst.getInstruction_id()); @@ -1039,7 +1056,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu }else { ndcAgvService.deleteAgvInstToNDC(entity); } - + flag = true; } else { flag = true; } @@ -1053,7 +1070,7 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu } if (flag) { - if (StrUtil.equals(entity.getInstruction_type(), "10")) { + if (StrUtil.equals(entity.getInstruction_type(), AgvTypeEnum.HAIROU_TYPE_1.getTaskType())) { CancelRequest cancelRequest = new CancelRequest(); cancelRequest.setTaskCodes(new ArrayList(Collections.singleton(entity.getInstruction_id()))); acsToLiKuService.cancel(cancelRequest); diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java index d4e89056..fb9451d2 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/LuceneIndexWriter.java @@ -1,66 +1,66 @@ -package org.nl.modules.lucene.common; - -import cn.hutool.core.date.DateUtil; -import org.apache.lucene.index.CorruptIndexException; -import org.apache.lucene.index.IndexWriter; -import org.apache.lucene.index.IndexWriterConfig; -import org.apache.lucene.store.Directory; -import org.apache.lucene.store.FSDirectory; -import org.nl.modules.lucene.config.UrlConfig; -import org.wltea.analyzer.lucene.IKAnalyzer; - -import java.io.File; -import java.io.IOException; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; - -public class LuceneIndexWriter { - private static volatile IndexWriter indexWriter; - - static { - try { - Directory directory = FSDirectory.open(new File(UrlConfig.luceneUrl).toPath()); - IndexWriterConfig config = new IndexWriterConfig(new IKAnalyzer()); - indexWriter = new IndexWriter(directory, config); - } catch (Exception e) { - e.printStackTrace(); - } - /**当当前线程结束时,自动关闭IndexWriter,使用Runtime对象*/ -// Runtime.getRuntime().addShutdownHook(new Thread(){ -// @Override -// public void run() { -// try { -// closeIndexWriter(); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// } -// }); - } - /**在线程结束时,自动关闭IndexWriter*/ - public static IndexWriter getIndexWriter() { - return indexWriter; - } - /**关闭IndexWriter - * @throws IOException - * @throws CorruptIndexException */ - public static void closeIndexWriter() throws Exception { - if(indexWriter != null) { -// indexWriter.close(); - } - } - - public static void main(String[] args) throws IOException { - indexWriter.deleteAll(); - } - - public static String getDate(String timeString) throws ParseException { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");//时间格式 - Date date = sdf.parse(timeString); - timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间 - return timeString; - } - - -} +//package org.nl.modules.lucene.common; +// +//import cn.hutool.core.date.DateUtil; +//import org.apache.lucene.index.CorruptIndexException; +//import org.apache.lucene.index.IndexWriter; +//import org.apache.lucene.index.IndexWriterConfig; +//import org.apache.lucene.store.Directory; +//import org.apache.lucene.store.FSDirectory; +//import org.nl.modules.lucene.config.UrlConfig; +//import org.wltea.analyzer.lucene.IKAnalyzer; +// +//import java.io.File; +//import java.io.IOException; +//import java.text.ParseException; +//import java.text.SimpleDateFormat; +//import java.util.Date; +// +//public class LuceneIndexWriter { +// private static volatile IndexWriter indexWriter; +// +// static { +// try { +// Directory directory = FSDirectory.open(new File(UrlConfig.luceneUrl).toPath()); +// IndexWriterConfig config = new IndexWriterConfig(new IKAnalyzer()); +// indexWriter = new IndexWriter(directory, config); +// } catch (Exception e) { +// e.printStackTrace(); +// } +// /**当当前线程结束时,自动关闭IndexWriter,使用Runtime对象*/ +//// Runtime.getRuntime().addShutdownHook(new Thread(){ +//// @Override +//// public void run() { +//// try { +//// closeIndexWriter(); +//// } catch (Exception e) { +//// e.printStackTrace(); +//// } +//// } +//// }); +// } +// /**在线程结束时,自动关闭IndexWriter*/ +// public static IndexWriter getIndexWriter() { +// return indexWriter; +// } +// /**关闭IndexWriter +// * @throws IOException +// * @throws CorruptIndexException */ +// public static void closeIndexWriter() throws Exception { +// if(indexWriter != null) { +//// indexWriter.close(); +// } +// } +// +// public static void main(String[] args) throws IOException { +// indexWriter.deleteAll(); +// } +// +// public static String getDate(String timeString) throws ParseException { +// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");//时间格式 +// Date date = sdf.parse(timeString); +// timeString = DateUtil.format(date, "yyyy-MM-dd HH:mm:ss.SSS");//格式化后的时间 +// return timeString; +// } +// +// +//} diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java index 140c96e5..ae027a4c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/common/Searcher.java @@ -58,12 +58,12 @@ public class Searcher { if (startDate == null){ startDate = DateUtil.format(calendar.getTime(),"yyyy-MM-dd HH:mm:ss.SSS"); }else{ - startDate = LuceneIndexWriter.getDate(startDate); + startDate = LuceneServiceAutoRun.getDate(startDate); } if (endDate == null){ endDate = DateUtil.format(new DateTime(),"yyyy-MM-dd HH:mm:ss.SSS"); } else { - endDate = LuceneIndexWriter.getDate(endDate); + endDate = LuceneServiceAutoRun.getDate(endDate); } TermRangeQuery termRangeQuery = new TermRangeQuery("logTime", new BytesRef(startDate), new BytesRef(endDate), true, true); booleanQueryBuilder.add(termRangeQuery,BooleanClause.Occur.MUST); 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 57cdcea3..bed52ce9 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 @@ -91,4 +91,21 @@ public class LuceneLogDto { + "] : " + remark; } + + public LuceneLogDto(final String device_code, final String item, final int last_info, + final int info) { + super(); + String info_china = ""; + switch(info){ + case 0: info_china = "未联机"; + case 1: info_china = "已联机"; + case 2: break; + default:; + } + this.device_code = device_code; + this.content = "信号 [" + +item + "] 发生变更 " + + last_info + " -> " + + info; + } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java index c1fd06cd..b8dff032 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java +++ b/wcs/nladmin-system/src/main/java/org/nl/modules/lucene/service/impl/LuceneExecuteLogServiceImpl.java @@ -10,7 +10,7 @@ import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.document.StringField; import org.apache.lucene.index.IndexWriter; -import org.nl.modules.lucene.common.LuceneIndexWriter; +import org.nl.modules.lucene.common.LuceneServiceAutoRun; import org.nl.modules.lucene.enums.LogTypeEnum; import org.nl.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.lucene.service.dto.LuceneLogDto; @@ -48,7 +48,7 @@ public class LuceneExecuteLogServiceImpl implements LuceneExecuteLogService { } private void addIndex(LuceneLogDto luceneLogDto) throws IOException { - IndexWriter indexWriter = LuceneIndexWriter.getIndexWriter(); + IndexWriter indexWriter = LuceneServiceAutoRun.getIndexWriter(); //创建一个Document对象 Document document = new Document(); try {