From 26eb6d0774832157f0375b12731994d2a4cee670 Mon Sep 17 00:00:00 2001 From: "CHINAMI-V47SHQD\\EDY" Date: Fri, 26 Dec 2025 17:40:57 +0800 Subject: [PATCH] no message --- .../youchain/businessdata/domain/AgvTask.java | 2 +- .../youchain/businessdata/domain/ItemKey.java | 4 ++ .../youchain/businessdata/domain/Task.java | 5 ++- .../service/impl/AgvTaskServiceImpl.java | 22 ++++++++++ .../service/impl/PickDetailServiceImpl.java | 32 ++++++++++++++ .../repository/DictDetailRepository.java | 5 ++- .../modules/system/service/DictService.java | 13 +++++- .../system/service/impl/DictServiceImpl.java | 42 ++++++++++++++++++- .../main/resources/config/application-dev.yml | 2 +- .../src/main/resources/config/application.yml | 2 +- 10 files changed, 122 insertions(+), 7 deletions(-) diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/AgvTask.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/AgvTask.java index 473e717..1caa012 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/AgvTask.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/AgvTask.java @@ -104,7 +104,7 @@ public class AgvTask extends BaseEntity implements Serializable { private String reqMessage; @Column(name = "`be_scan`") - @ApiModelProperty(value = "是否扫描") + @ApiModelProperty(value = "是否配置任务") private Integer beScan=0; @Column(name = "`line_slot_code`") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/ItemKey.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/ItemKey.java index 90ceda3..2b7b48d 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/ItemKey.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/ItemKey.java @@ -22,6 +22,9 @@ import lombok.Data; import cn.hutool.core.bean.BeanUtil; import io.swagger.annotations.ApiModelProperty; import cn.hutool.core.bean.copier.CopyOptions; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; + import javax.persistence.*; import javax.validation.constraints.*; import java.sql.Timestamp; @@ -45,6 +48,7 @@ public class ItemKey extends BaseEntity implements Serializable { private Long id; @OneToOne + @NotFound(action = NotFoundAction.IGNORE) @JoinColumn(name = "`item_id`") @ApiModelProperty(value = "物料序号") private Item item; diff --git a/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java b/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java index 978081b..579193a 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/domain/Task.java @@ -51,11 +51,13 @@ public class Task extends BaseEntity implements Serializable { private Long id; @OneToOne + @NotFound(action = NotFoundAction.IGNORE) @JoinColumn(name = "`item_id`") @ApiModelProperty(value = "物料序号") private Item item; @OneToOne + @NotFound(action = NotFoundAction.IGNORE) @JoinColumn(name = "`item_key_id`") @ApiModelProperty(value = "物料属性") private ItemKey itemKey; @@ -68,9 +70,10 @@ public class Task extends BaseEntity implements Serializable { @ApiModelProperty(value = "任务类型") private String taskType; - @OneToOne(cascade = CascadeType.PERSIST) + @OneToOne @JoinColumn(name = "asn_detail_id") @ApiModelProperty(value = "收货明细序号") + @NotFound(action = NotFoundAction.IGNORE) private AsnDetail asnDetail; @Column(name = "`move_detail_id`") diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java index c535c34..df501a5 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/AgvTaskServiceImpl.java @@ -29,6 +29,7 @@ import com.youchain.basicdata.service.PointService; import com.youchain.basicdata.service.impl.BoxServiceImpl; import com.youchain.businessdata.domain.*; import com.youchain.businessdata.repository.AsnDetailRepository; +import com.youchain.businessdata.repository.PickDetailRepository; import com.youchain.businessdata.repository.TaskRepository; import com.youchain.businessdata.service.*; import com.youchain.exception.BadRequestException; @@ -80,6 +81,7 @@ public class AgvTaskServiceImpl implements AgvTaskService { private final PointRepository pointRepository; private final StockTypeRepository stockTypeRepository; private final AsnDetailRepository asnDetailRepository; + private final PickDetailRepository pickDetailRepository; private final EntityManager entityMapper; @Override @@ -570,6 +572,26 @@ public class AgvTaskServiceImpl implements AgvTaskService { pointRepository.save(endPoint); /* 读取RFID生成上架任务*/ addTaskRfid(billCode); + }else if (agvTask.getJobType().equals(BizStatus.PSCK)) { + if (agvTask.getBeScan()==1) { + List pickDetailList = pickDetailRepository.findByPick(Long.valueOf(agvTask.getJobForce())); + /* 出库完成反馈*/ + for (PickDetail pickDetail : pickDetailList) { + UrlApi.ptBackSap(pickDetail.getPick().getOwner() + , pickDetail.getPick().getRelatedBill2() + , pickDetail.getItem().getCode() + , pickDetail.getLineNo() + "" + , pickDetail.getPickedQty(), pickDetail.getPropC1() + , pickDetail.getPropC2()); + } + if (agvTask.getStockTypeCode().equals("Rack_760_1200")) { + // 料箱 + } else if (agvTask.getStockTypeCode().equals("Semi_finished_goods_pallet")) { + // 半成品 + AgvTask agvTaskPt = addAgvTask(BizStatus.AGV_C, "BTP", null, agvTask.getEndSlotCode(), BizStatus.OPEN, BizStatus.ASN); + sendAgvTaskImpl(agvTaskPt); + } + } } } } else if (status.equals("4")) { diff --git a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java index f11bc03..4f369ba 100644 --- a/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/businessdata/service/impl/PickDetailServiceImpl.java @@ -28,6 +28,9 @@ import com.youchain.businessdata.service.AgvTaskService; import com.youchain.exception.BadRequestException; import com.youchain.exception.handler.ApiResult; import com.youchain.modules.system.domain.Dept; +import com.youchain.modules.system.domain.Dict; +import com.youchain.modules.system.repository.DictRepository; +import com.youchain.modules.system.service.DictService; import com.youchain.utils.*; import lombok.RequiredArgsConstructor; import com.youchain.businessdata.service.PickDetailService; @@ -61,6 +64,7 @@ public class PickDetailServiceImpl implements PickDetailService { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH"); private final PickDetailRepository pickDetailRepository; private final PointRepository pointRepository; + private final DictService dictService; private final AgvTaskService agvTaskService; private final PickRepository pickRepository; private final PickDetailMapper pickDetailMapper; @@ -574,6 +578,34 @@ public class PickDetailServiceImpl implements PickDetailService { pickDetail.setPick(pick); pickDetailRepository.save(pickDetail); } + // 是否启用配置 + if (dictService.getPtBatchIsEnable()){ + if (pick.getBillType().getCode().equals("RM_CK")){ + // 料箱 + String startCode = dictService.getPtBatchYStartCode(); + // 容器入场 + AgvTask agvTaskRc=agvTaskService.addAgvTask(BizStatus.AGV_R,"LXZ",null,startCode,BizStatus.OPEN,BizStatus.ASN); + agvTaskService.sendAgvTaskImpl(agvTaskRc); + + AgvTask agvTask = agvTaskService.addAgvTask(BizStatus.AGV,"LXZ", startCode, pick.getAddress(), BizStatus.OPEN, BizStatus.PICK); + agvTask.setJobForce(pick.getId()+""); + agvTask.setBeScan(1); + agvTaskRepository.save(agvTask); + agvTaskService.sendAgvTaskImpl(agvTask); + }else if (pick.getBillType().getCode().equals("SM_CK")){ + // 半成品 + String startCode = dictService.getPtBatchBStartCode(); + // 容器入场 + AgvTask agvTaskRc=agvTaskService.addAgvTask(BizStatus.AGV_R,"BTP",null,startCode,BizStatus.OPEN,BizStatus.ASN); + agvTaskService.sendAgvTaskImpl(agvTaskRc); + AgvTask agvTask = agvTaskService.addAgvTask(BizStatus.AGV,"BTP", startCode, pick.getAddress(), BizStatus.OPEN, BizStatus.PICK); + agvTask.setJobForce(pick.getId()+""); + agvTask.setBeScan(1); + agvTaskRepository.save(agvTask); + agvTaskService.sendAgvTaskImpl(agvTask); + } + } + } return ApiResult.result(201, "操作成功",null); } diff --git a/youchain-system/src/main/java/com/youchain/modules/system/repository/DictDetailRepository.java b/youchain-system/src/main/java/com/youchain/modules/system/repository/DictDetailRepository.java index 6d35fe1..d9922ce 100644 --- a/youchain-system/src/main/java/com/youchain/modules/system/repository/DictDetailRepository.java +++ b/youchain-system/src/main/java/com/youchain/modules/system/repository/DictDetailRepository.java @@ -18,6 +18,7 @@ package com.youchain.modules.system.repository; import com.youchain.modules.system.domain.DictDetail; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; +import org.springframework.data.jpa.repository.Query; import java.util.List; @@ -33,4 +34,6 @@ public interface DictDetailRepository extends JpaRepository, J * @return / */ List findByDictName(String name); -} \ No newline at end of file + @Query(value = "SELECT d FROM DictDetail d where d.dict.name=?1 and d.dictSort=?2", nativeQuery = false) + List findDictNameAndSort(String ptBatch, int i); +} diff --git a/youchain-system/src/main/java/com/youchain/modules/system/service/DictService.java b/youchain-system/src/main/java/com/youchain/modules/system/service/DictService.java index 02a6835..774a455 100644 --- a/youchain-system/src/main/java/com/youchain/modules/system/service/DictService.java +++ b/youchain-system/src/main/java/com/youchain/modules/system/service/DictService.java @@ -74,4 +74,15 @@ public interface DictService { void download(List queryAll, HttpServletResponse response) throws IOException; Dict getDictDescription(String name); -} \ No newline at end of file + + /** 是否启用出库配置*/ + boolean getPtBatchIsEnable(); + /** 获取原料起点*/ + String getPtBatchYStartCode(); + /** 获取原料终点*/ + String getPtBatchYEndCode(); + /** 获取半成品起点*/ + String getPtBatchBStartCode(); + /** 获取半成品终点*/ + String getPtBatchBEndCode(); +} diff --git a/youchain-system/src/main/java/com/youchain/modules/system/service/impl/DictServiceImpl.java b/youchain-system/src/main/java/com/youchain/modules/system/service/impl/DictServiceImpl.java index de835db..ce1aee9 100644 --- a/youchain-system/src/main/java/com/youchain/modules/system/service/impl/DictServiceImpl.java +++ b/youchain-system/src/main/java/com/youchain/modules/system/service/impl/DictServiceImpl.java @@ -18,6 +18,7 @@ package com.youchain.modules.system.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.youchain.modules.system.domain.Dict; import com.youchain.modules.system.domain.DictDetail; +import com.youchain.modules.system.repository.DictDetailRepository; import com.youchain.modules.system.service.DictService; import com.youchain.modules.system.service.dto.DictDetailDto; import com.youchain.modules.system.service.dto.DictDto; @@ -45,6 +46,7 @@ import java.util.*; public class DictServiceImpl implements DictService { private final DictRepository dictRepository; + private final DictDetailRepository dictDetailRepository; private final DictMapper dictMapper; private final RedisUtils redisUtils; @@ -122,7 +124,45 @@ public class DictServiceImpl implements DictService { return dictRepository.getDictDescription(name); } + @Override + public boolean getPtBatchIsEnable() { + List dictDetailList = dictDetailRepository.findDictNameAndSort("pt_batch",1); + if (!dictDetailList.isEmpty()){ + DictDetail dictDetail=dictDetailList.get(0); + return dictDetail.getValue().equals("1"); + } + return false; + } + + @Override + public String getPtBatchYStartCode() { + List dictDetailList = dictDetailRepository.findDictNameAndSort("pt_batch",2); + if (!dictDetailList.isEmpty()){ + return dictDetailList.get(0).getValue(); + } + return null; + } + + @Override + public String getPtBatchYEndCode() { + return null; + } + + @Override + public String getPtBatchBStartCode() { + List dictDetailList = dictDetailRepository.findDictNameAndSort("pt_batch",3); + if (!dictDetailList.isEmpty()){ + return dictDetailList.get(0).getValue(); + } + return null; + } + + @Override + public String getPtBatchBEndCode() { + return null; + } + public void delCaches(Dict dict){ redisUtils.del(CacheKey.DICT_NAME + dict.getName()); } -} \ No newline at end of file +} diff --git a/youchain-system/src/main/resources/config/application-dev.yml b/youchain-system/src/main/resources/config/application-dev.yml index 810c0fd..20cd62b 100644 --- a/youchain-system/src/main/resources/config/application-dev.yml +++ b/youchain-system/src/main/resources/config/application-dev.yml @@ -13,7 +13,7 @@ spring: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:nrwms2}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:nrwms}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false username: ${DB_USER:root} password: ${DB_PWD:123456} # password: ${DB_PWD:Youchain@56} diff --git a/youchain-system/src/main/resources/config/application.yml b/youchain-system/src/main/resources/config/application.yml index 6661064..37f08bf 100644 --- a/youchain-system/src/main/resources/config/application.yml +++ b/youchain-system/src/main/resources/config/application.yml @@ -6,7 +6,7 @@ spring: freemarker: check-template-location: false profiles: - active: dock + active: dev jackson: time-zone: GMT+8 data: