src/main/java/com/zy/asrs/controller/MobileController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/WorkController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/WaitPakin.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/entity/param/RCSParam.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/task/NewWay/AutomaticallyAssignInTasksToRCSScheduler.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/MobileController.java
@@ -14,10 +14,12 @@ import com.zy.asrs.entity.*; import com.zy.asrs.entity.param.CombParam; import com.zy.asrs.entity.param.MobileAdjustParam; import com.zy.asrs.entity.param.RCSParam; import com.zy.asrs.entity.param.Review; import com.zy.asrs.entity.result.MobileAdjustResult; import com.zy.asrs.service.*; import com.zy.asrs.service.impl.MobileServiceImpl; import com.zy.asrs.task.WorkMastScheduler; import com.zy.asrs.task.handler.WorkLogHandler; import com.zy.common.constant.MesConstant; import com.zy.common.model.LocDto; @@ -26,13 +28,18 @@ import com.zy.common.utils.HttpHandler; import com.zy.common.web.BaseController; import com.zy.common.web.param.SearchLocParam; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.*; /** @@ -42,7 +49,7 @@ @RestController @RequestMapping("mobile") public class MobileController extends BaseController { private static final Logger log = LoggerFactory.getLogger(WorkMastScheduler.class); @Autowired private MobileService mobileService; @Autowired @@ -63,6 +70,12 @@ private BasDevpService basDevpService; @Autowired private PackService packService; @Autowired private ApiLogService apiLogService; @Value("${rcs.address.url}") private String url; @Value("${rcs.address.attrcs}") private String attrcs; // 商品上架 @@ -443,5 +456,78 @@ /*...........................赣州新增..............以上.............赣州新增...........................*/ /** * 执行移库任务 * @param sourceStaNo * @param staNo * @return */ @RequestMapping("/AGVMove") public R AGVMove(@RequestParam(required = false) String sourceStaNo ,@RequestParam(required = false) String staNo){ RCSParam rcsParam = new RCSParam(); LocalDateTime now = LocalDateTime.now(); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss"); String formattedDate = now.format(formatter); // 格式化日期时间 //网络流水号 rcsParam.setReqId(now.toString()); //应用标识 rcsParam.setClientId("WMS"); //通知时间 rcsParam.setReqTime(formattedDate); RCSParam.DataBody dataBody=new RCSParam.DataBody(); //任务号 dataBody.setId(formattedDate); List<RCSParam.TaskBody> taskBodyList=new ArrayList<>(); RCSParam.TaskBody taskBody=new RCSParam.TaskBody(); //取货类型 taskBody.setType("load"); taskBody.setStation(sourceStaNo); taskBodyList.add(taskBody); RCSParam.TaskBody taskBody1=new RCSParam.TaskBody(); //放货类型 taskBody1.setType("unload"); taskBody1.setStation(staNo); taskBodyList.add(taskBody1); dataBody.setTasks(taskBodyList); rcsParam.setData(dataBody); String response =""; Boolean bool =false; try { log.info("wms派发搬运任务给AGV搬运={}", rcsParam); response = new HttpHandler.Builder() // .setHeaders(headParam) .setUri(url) .setPath(attrcs) .setJson(JSON.toJSONString(rcsParam)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); if(jsonObject.getBoolean("IsSuccess")){ bool = true; } } catch (Exception e) { log.error("wms派发搬运任务给AGV搬运失败返回值={}", response); } finally { apiLogService.save("wms派发搬运任务给AGV搬运" , url + attrcs , null , "127.0.0.1" , JSON.toJSONString(rcsParam) , response , bool ); } if(bool){ return R.ok(); }else { return R.error("下发任务失败"); } } } src/main/java/com/zy/asrs/controller/WorkController.java
@@ -158,4 +158,6 @@ return R.ok("任务重新入库,目标库位:" + locNo); } } src/main/java/com/zy/asrs/entity/WaitPakin.java
@@ -70,7 +70,7 @@ @ApiModelProperty(value= "产地") private String origin; @ApiModelProperty(value= "厂家") @ApiModelProperty(value= "唯一码") private String manu; @ApiModelProperty(value= "生产日期") @@ -105,7 +105,7 @@ @TableField("supp_code") private String suppCode; @ApiModelProperty(value= "是否批次 1: 是 0: 否 ") @ApiModelProperty(value= "agv任务下发 : 0:待下发 1:下发成功 2:任务完成") @TableField("be_batch") private Integer beBatch; src/main/java/com/zy/asrs/entity/param/RCSParam.java
New file @@ -0,0 +1,51 @@ package com.zy.asrs.entity.param; import lombok.Data; import java.util.List; @Data public class RCSParam { /** * 网络流水号 */ private String ReqId; /** * 应用表示 wms */ private String ClientId; /** * 通知时间 */ private String ReqTime; /** * 数据 */ private DataBody Data; @Data public static class DataBody { /** * 任务号 */ private String Id; private List<TaskBody> tasks; } @Data public static class TaskBody { /** * 任务类型 : * load 取货 ; unload 放货 ; */ private String Type; /** * 目标库位 */ private String Station; } } src/main/java/com/zy/asrs/service/impl/MobileServiceImpl.java
@@ -125,17 +125,6 @@ if (Cools.isEmpty(param.getBarcode(), param.getCombMats())) { throw new CoolException(BaseRes.PARAM); } // 判断是否有相同条码的数据 if (waitPakinService.selectCount(new EntityWrapper<WaitPakin>(). eq("zpallet", param.getBarcode()).eq("io_status", "N")) > 0) { throw new CoolException(param.getBarcode() + "数据正在进行入库"); } int countLoc = locDetlService.selectCount(new EntityWrapper<LocDetl>().eq("zpallet",param.getBarcode())); int countWrk = wrkDetlService.selectCount(new EntityWrapper<WrkDetl>().eq("zpallet",param.getBarcode())); if (countLoc > 0 || countWrk > 0) { throw new CoolException("工作档/库存条码数据已存在===>>" + param.getBarcode()); } Date now = new Date(); @@ -164,7 +153,7 @@ WaitPakin waitPakin = new WaitPakin(); waitPakin.sync(mat); waitPakin.setBatch(detlDto.getBatch()); waitPakin.setZpallet(param.getBarcode()); // 托盘码 waitPakin.setZpallet(""); // 托盘码 waitPakin.setIoStatus("N"); // 入出状态 waitPakin.setAnfme(detlDto.getAnfme()); // 数量 waitPakin.setStatus("Y"); // 状态 @@ -172,6 +161,9 @@ waitPakin.setAppeTime(now); waitPakin.setModiUser(userId); waitPakin.setModiTime(now); waitPakin.setMemo(param.getBarcode());//AGV源站 waitPakin.setBeBatch(0);//AGV 任务等待下发 waitPakin.setManu(now.getTime()+"");//唯一码 if (!waitPakinService.insert(waitPakin)) { throw new CoolException("保存入库通知档失败"); } src/main/java/com/zy/asrs/task/NewWay/AutomaticallyAssignInTasksToRCSScheduler.java
New file @@ -0,0 +1,61 @@ package com.zy.asrs.task.NewWay; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.R; import com.zy.asrs.controller.MobileController; import com.zy.asrs.entity.WaitPakin; import com.zy.asrs.entity.WrkMast; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.service.impl.WaitPakinServiceImpl; import com.zy.asrs.task.core.ReturnT; import com.zy.asrs.task.handler.WorkMastHandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; /** * Created by vincent on 2020/7/7 */ @Component public class AutomaticallyAssignInTasksToRCSScheduler { private static final Logger log = LoggerFactory.getLogger(AutomaticallyAssignInTasksToRCSScheduler.class); @Autowired private WrkMastService wrkMastService; @Autowired private WorkMastHandler workMastHandler; @Autowired private WaitPakinServiceImpl waitPakinService; @Autowired private MobileController mobileController; /** * 自动派发入库任务给RCS */ @Scheduled(cron = "0/3 * * * * ? ") private void execute(){ //查看是否有agv在做的任务 WaitPakin waitPakin1=waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("be_batch",1)); if(waitPakin1!=null){ return; } //找到正在等待的组托数据 //该数据进行0转1 WaitPakin waitPakin=waitPakinService.selectOne(new EntityWrapper<WaitPakin>().eq("be_batch",0)); if(waitPakin!=null){ R r=mobileController.AGVMove(waitPakin.getMemo(),100+""); if (r.get("code").equals(200)){ waitPakin.setBeBatch(1);//0转1 waitPakinService.update(waitPakin,new EntityWrapper<WaitPakin>().eq("manu",waitPakin.getManu())); } } } } src/main/resources/application.yml
@@ -12,7 +12,7 @@ enabled: false datasource: driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver url: jdbc:sqlserver://127.0.0.1:1433;databasename=jxtlfasrs url: jdbc:sqlserver://127.0.0.1:50948;databasename=dlzasrs # url: jdbc:sqlserver://10.12.55.200:1433;databasename=zjfnasrs username: sa password: sa@123 @@ -100,4 +100,11 @@ # 启动测试请求 startUpTestPACK: TestStart #暂停测试 suspendTestPACK: TestStop suspendTestPACK: TestStop #RCS rcs: address: url: http://192.168.3.102:16001 #任务下发地址 attrcs: 3CLOUD/Kingdee.BOS.WebApi.ServicesStub.