123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646 |
- package com.ruoyi.ams.xuankuang.service;
- import cn.hutool.core.collection.CollectionUtil;
- import cn.hutool.core.comparator.CompareUtil;
- import cn.hutool.core.util.ObjectUtil;
- import com.baomidou.mybatisplus.core.toolkit.IdWorker;
- import com.ruoyi.ams.asn.domain.WmsDocAsnDetails;
- import com.ruoyi.ams.asn.domain.WmsDocAsnHeader;
- import com.ruoyi.ams.asn.mapper.WmsDocAsnDetailsMapper;
- import com.ruoyi.ams.asn.mapper.WmsDocAsnHeaderMapper;
- import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService;
- import com.ruoyi.ams.inv.service.IInvLotLocIdService;
- import com.ruoyi.ams.task.domain.WcsTask;
- import com.ruoyi.ams.task.service.IWcsTaskService;
- import com.ruoyi.ams.xuankuang.domain.dto.LocationCoordDTO;
- import com.ruoyi.ams.xuankuang.domain.form.*;
- import com.ruoyi.ams.xuankuang.facade.IUnpackingMachineFacade;
- import com.ruoyi.base.constant.Constant;
- import com.ruoyi.base.domain.BaseLocationInfo;
- import com.ruoyi.base.domain.vo.BaseLocationLotattDTO;
- import com.ruoyi.base.service.IBaseLocationInfoService;
- import com.ruoyi.base.service.IBaseSkuService;
- import com.ruoyi.base.utils.IdSequenceUtils;
- import com.ruoyi.common.core.domain.AjaxResult;
- import com.ruoyi.common.exception.base.BaseException;
- import com.ruoyi.common.utils.StringUtils;
- import com.ruoyi.hard.xuankang.StirringTankClient;
- import com.ruoyi.hard.xuankang.UnpackingMachineSubClient;
- import io.jsonwebtoken.lang.Assert;
- import lombok.extern.slf4j.Slf4j;
- 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.Date;
- import java.util.List;
- import static com.ruoyi.ams.xuankuang.service.BaseLocationInfoSubService.OUT_ZONES;
- /**
- * @author HuKang
- * @version 1.0
- * @date 2023/3/30 15:42
- */
- @Slf4j
- @Service
- public class WcsToWmsApiService {
- @Autowired
- private IBaseSkuService iBaseSkuService;
- @Autowired
- private IBaseLocationInfoService iBaseLocationInfoService;
- @Autowired
- private BaseLocationInfoSubService baseLocationInfoSubService;
- @Autowired
- private InvLotLocIdSubService InvLotLocIdSubService;
- @Autowired
- private WcsTaskSubService wcsTaskSubService;
- @Autowired
- private IWcsTaskService iWcsTaskService;
- @Autowired
- private WmsDocAsnHeaderMapper wmsDocAsnHeaderMapper;
- @Autowired
- private WmsDocAsnDetailsMapper wmsDocAsnDetailsMapper;
- @Autowired
- private IUnpackingMachineFacade unpackingMachineFacade;
- @Autowired
- private IdSequenceUtils idSequenceUtils;
- @Autowired
- private StirringTankClient stirringTankClient;
- @Autowired
- private UnpackingMachineSubClient unpackingMachineSubClient;
- @Autowired
- private IWcsTaskService wcsTaskService;
- @Autowired
- private IWmsDocAsnDetailsService wmsDocAsnDetailsService;
- @Autowired
- private WmsDocAsnSubService wmsDocAsnSubService;
- @Autowired
- private AgvCallProxyService agvCallProxyService;
- @Autowired
- private IInvLotLocIdService invLotLocIdService;
- /**
- * 组盘上报
- *
- * @param stackingCompletion
- * @return
- */
- @Transactional
- public synchronized AjaxResult stackingCompletion(StackingCompletionForm stackingCompletion) {
- // 上报类型
- int reportType = stackingCompletion.getReportType();
- // 托盘号
- String palletNo = stackingCompletion.getPalletNo();
- // Wcs物料类型
- String materialType = stackingCompletion.getMaterialType();
- // wms物料编码
- String sku = iBaseSkuService.selectBaseSkuByMaterialType(materialType).getSku();
- // 数量
- Double qty = (double) stackingCompletion.getQty();
- // 入库单号
- String asnNo = stackingCompletion.getRelatedWmsNo();
- // 任务号
- String wcsNo = stackingCompletion.getWcsNo();
- if (asnNo.equals("")) {
- AjaxResult ajaxResult1 = generateAShippingOrder(sku, new BigDecimal(qty));
- // 判重
- WcsTask wcsTaskQuery = new WcsTask();
- //AsnNO
- wcsTaskQuery.setExt1(ajaxResult1.getData().toString());
- wcsTaskQuery.setExt2(palletNo);
- wcsTaskQuery.setExt3(wcsNo);
- WcsTask wcsTask = iWcsTaskService.selectWcsTaskByModel(wcsTaskQuery);
- if (wcsTask != null) {
- String locationTo = wcsTask.getLocationTo();
- BaseLocationInfo baseLocationInfo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(wcsTask.getTaskNo());
- locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
- return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
- }
- // 推荐目标库位
- BaseLocationLotattDTO baseLocationLotattVO = baseLocationInfoSubService.recommendAReceiptLocation(sku);
- if (baseLocationLotattVO == null) {
- AjaxResult.error("没有可以推荐的目标库位!");
- }
- //TODO recommendAReceiptLocation,获取库位时,判断同列库存是否是相同入库日期的,不同相同日期不可放
- // 生成任务
- String taskNo = "";
- AjaxResult ajaxResult = addWcsTask(Constant.LOC_STAGE_CACHE.toString()
- , baseLocationLotattVO.getId().toString(), ajaxResult1.getData().toString(), palletNo, wcsNo);
- if (!ajaxResult.isSuccess()) {
- return ajaxResult;
- }
- taskNo = ajaxResult.get("data").toString();
- // 入库缓存位生成库存
- InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), sku, palletNo, ajaxResult1.getData().toString(), taskNo, qty);
- // 反馈
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(taskNo);
- locationCoordinateVo.setLocationId(baseLocationLotattVO.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationLotattVO.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationLotattVO.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationLotattVO.getRowIndex()));
- return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
- }
- // 判重
- WcsTask wcsTaskQuery = new WcsTask();
- wcsTaskQuery.setExt1(asnNo);
- wcsTaskQuery.setExt2(palletNo);
- wcsTaskQuery.setExt3(wcsNo);
- WcsTask wcsTask = iWcsTaskService.selectWcsTaskByModel(wcsTaskQuery);
- if (wcsTask != null) {
- String locationTo = wcsTask.getLocationTo();
- BaseLocationInfo baseLocationInfo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(wcsTask.getTaskNo());
- locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
- return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
- }
- // 推荐目标库位
- BaseLocationLotattDTO baseLocationLotattVO = baseLocationInfoSubService.recommendAReceiptLocation(sku);
- if (ObjectUtil.isNull(baseLocationLotattVO)) {
- return AjaxResult.error("没有可以推荐的目标库位!");
- }
- // 生成任务
- String taskNo = "";
- AjaxResult ajaxResult = addWcsTask(Constant.LOC_STAGE_CACHE.toString()
- , baseLocationLotattVO.getId().toString(), asnNo, palletNo, wcsNo);
- if (!ajaxResult.isSuccess()) {
- return ajaxResult;
- }
- taskNo = ajaxResult.get("data").toString();
- // 入库缓存位生成库存
- InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), sku, palletNo, asnNo, taskNo, qty);
- // 反馈
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(taskNo);
- locationCoordinateVo.setLocationId(baseLocationLotattVO.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationLotattVO.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationLotattVO.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationLotattVO.getRowIndex()));
- return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
- }
- /**
- * 空托仓位请求
- *
- * @param emptyPalletLocForm
- * @return
- */
- @Transactional
- public synchronized AjaxResult emptyPalletLoc(EmptyPalletLocForm emptyPalletLocForm) {
- // 空托仓位请求类型
- int taskType = emptyPalletLocForm.getTaskType();
- // 任务号
- String wcsNo = emptyPalletLocForm.getWcsNo();
- if (taskType == 0) {
- return AjaxResult.error("未传入空托仓位请求类型");
- }
- if (taskType == 1) {
- // 判重
- WcsTask wcsTaskQuery = new WcsTask();
- wcsTaskQuery.setExt1("");
- wcsTaskQuery.setExt2("");
- wcsTaskQuery.setExt3(wcsNo);
- WcsTask wcsTask = iWcsTaskService.selectWcsTaskByModel(wcsTaskQuery);
- if (wcsTask != null) {
- String locationTo = wcsTask.getLocationTo();
- BaseLocationInfo baseLocationInfo = iBaseLocationInfoService.selectBaseLocationInfoByIdOrNo(locationTo, Constant.WAREHOUSE_ID);
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(wcsTask.getTaskNo());
- locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
- return AjaxResult.success("仓位获取成功!", locationCoordinateVo);
- }
- BaseLocationInfo baseLocationInfo = selectLocationInfo();
- if (baseLocationInfo == null) {
- AjaxResult.error("没有可以推荐的目标库位!");
- }
- // 生成任务
- String taskNo = "";
- AjaxResult ajaxResult = addWcsTask(Constant.LOC_STAGE_CACHE.toString()
- , baseLocationInfo.getId().toString(), StringUtils.EMPTY, StringUtils.EMPTY,
- wcsNo, "空托盘入库任务", Constant.TaskType.EMPTY_PALLET.getDesc());
- if (!ajaxResult.isSuccess()) {
- return ajaxResult;
- }
- taskNo = ajaxResult.get("data").toString();
- // 入库缓存位生成库存
- InvLotLocIdSubService.initInv(Constant.LOC_STAGE_CACHE.toString(), Constant.PALLET_TYPE, "", "", taskNo, 1.0);
- // 反馈
- LocationCoordDTO locationCoordinateVo = new LocationCoordDTO();
- locationCoordinateVo.setTaskNo(taskNo);
- locationCoordinateVo.setLocationId(baseLocationInfo.getLocationNo());
- locationCoordinateVo.setFloor(Integer.valueOf(baseLocationInfo.getShiftNo()));
- locationCoordinateVo.setCol(Integer.valueOf(baseLocationInfo.getRowNo()));
- locationCoordinateVo.setRow(Integer.valueOf(baseLocationInfo.getRowIndex()));
- return AjaxResult.success("空托入库仓位获取成功!", locationCoordinateVo);
- }
- if (taskType == 2) {
- BaseLocationLotattDTO baseLocationLotatt = allocateLocationInfo();
- Assert.isTrue(ObjectUtil.isNotNull(baseLocationLotatt), "仓库中无库存");
- String palletNo = ObjectUtil.isNotNull(baseLocationLotatt.getLotattVO())
- ? baseLocationLotatt.getLotattVO().getLotatt07() : StringUtils.EMPTY;
- // 生成四向车出库任务
- String taskNo = IdWorker.getIdStr();
- addWcsOutTask(taskNo, baseLocationLotatt.getLocationNo(), Constant.LOC_SORTATION_CACHE.toString(),
- palletNo, wcsNo, "空托盘出库任务", Constant.TaskType.EMPTY_PALLET.getDesc());
- Assert.isTrue( ObjectUtil.isNotNull(baseLocationLotatt.getId()), "仓库中无库存");
- invLotLocIdService.operateTraceIdByLocationId(String.valueOf(baseLocationLotatt.getId()), taskNo);
- LocationCoordDTO locationCoordinateVo1 = new LocationCoordDTO();
- locationCoordinateVo1.setTaskNo(taskNo);
- locationCoordinateVo1.setLocationId(baseLocationLotatt.getLocationNo());
- locationCoordinateVo1.setFloor(Integer.valueOf(baseLocationLotatt.getShiftNo()));
- locationCoordinateVo1.setCol(Integer.valueOf(baseLocationLotatt.getRowNo()));
- locationCoordinateVo1.setRow(Integer.valueOf(baseLocationLotatt.getRowIndex()));
- return AjaxResult.success(" 空托出库仓位获取成功", locationCoordinateVo1);
- }
- return AjaxResult.success();
- }
- private AjaxResult addWcsTask(String locationFrom, String locationTo
- , String asnNo, String palletNo, String wcsNo, String remark, String taskType) {
- return wcsTaskSubService.addWcsTask(IdWorker.getIdStr(), locationFrom, locationTo, asnNo,
- palletNo, wcsNo, 10L, remark, taskType);
- }
- private AjaxResult addWcsOutTask(String taskNo, String locationFrom, String locationTo,
- String palletNo, String wcsNo, String remark, String taskType) {
- return wcsTaskSubService.addWcsOutTask(taskNo, locationFrom, locationTo
- , StringUtils.EMPTY, palletNo, wcsNo, 10L, remark, taskType);
- }
- protected BaseLocationLotattDTO allocateLocationInfo() {
- List<BaseLocationLotattDTO> baseLocationLotattList = baseLocationInfoSubService.selectAllocatingInventoryAccordingConditionsOrderBy(OUT_ZONES, Constant.PALLET_TYPE);
- Assert.isTrue(CollectionUtil.isNotEmpty(baseLocationLotattList), "there is no stock in the warehouse");
- return filterInv1(baseLocationLotattList);
- }
- protected BaseLocationInfo selectLocationInfo() {
- return baseLocationInfoSubService.recommendAReceiptLocation(Constant.PALLET_TYPE);
- }
- /**
- * 任务状态反馈
- *
- * @param taskStatusForm
- * @return
- */
- public AjaxResult taskStatusResponse(TaskStatusForm taskStatusForm) {
- String taskNo = taskStatusForm.getTaskNo();
- int status = taskStatusForm.getStatus();
- wcsTaskSubService.callBack(taskNo, status, null);
- return AjaxResult.success();
- }
- /**
- * 匹配库存
- *
- * @param locationLotattList
- * @return
- */
- public synchronized BaseLocationLotattDTO filterInv1(List<BaseLocationLotattDTO> locationLotattList) {
- return locationLotattList.parallelStream()
- .filter(item -> ObjectUtil.isNotNull(item)
- && StringUtils.equals(Constant.PALLET_TYPE, item.getSku())
- && CompareUtil.compare(item.getQty(), 1F) == 0).findFirst().orElse(null);
- }
- /**
- * 生成入库单
- *
- * @param sku
- * @param qty
- * @return
- */
- public AjaxResult generateAShippingOrder(String sku, BigDecimal qty) {
- WmsDocAsnHeader wmsDocAsnHeader = new WmsDocAsnHeader();
- //生成单头
- String asnNo = idSequenceUtils.generateId("ASNNO");
- wmsDocAsnHeader.setAsnNo(asnNo);
- wmsDocAsnHeader.setEdiSendFlag("N");
- wmsDocAsnHeader.setAsnType(Constant.ASN_TYP.HK.getValue());
- wmsDocAsnHeader.setCreateTime(new Date());
- wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue());
- wmsDocAsnHeader.setCreateBy("Wms");
- wmsDocAsnHeaderMapper.insertWmsDocAsnHeader(wmsDocAsnHeader);
- //生成明细
- WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
- wmsDocAsnDetails.setAsnNo(asnNo);
- wmsDocAsnDetails.setAsnLineNo(1l);
- wmsDocAsnDetails.setSku(sku);
- wmsDocAsnDetails.setCreateTime(new Date());
- wmsDocAsnDetails.setExpectedQty(qty);
- wmsDocAsnDetails.setExpectedQtyEach(qty);
- wmsDocAsnDetails.setReceivedQty(new BigDecimal(0));
- wmsDocAsnDetails.setReceivedQtyEach(new BigDecimal(0));
- wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS10.getValue());
- wmsDocAsnDetails.setCreateTime(new Date());
- wmsDocAsnDetails.setCreateBy("Wms");
- wmsDocAsnDetailsMapper.insertWmsDocAsnDetails(wmsDocAsnDetails);
- return AjaxResult.success("操作成功!", asnNo);
- }
- /**
- * 拆包机开启接口
- *
- * @param lineOpenNotificationForm
- * @return
- */
- public AjaxResult lineOpenNotification(LineOpenNotificationForm lineOpenNotificationForm) {
- String lineId = lineOpenNotificationForm.getLineId();
- boolean[] booleans = stirringTankClient.readTank14();
- return unpackingMachineFacade.unpackingMachineOpen(lineId, booleans) ? AjaxResult.success() : AjaxResult.error();
- }
- public AjaxResult turnOffTheUnpacker(LineOpenNotificationForm lineOpenNotificationForm){
- switch (lineOpenNotificationForm.getLineId()) {
- case "1":
- return turnOffTheUnpacker();
- case "2":
- return turnOffTheUnpacker1();
- case "3":
- return turnOffTheUnpacker2();
- case "4":
- return turnOffTheUnpacker3();
- case "5":
- return turnOffTheUnpacker4();
- default:
- throw new BaseException("lineId is not exist ......");
- }
- }
- /**
- * 正常关闭1号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpacker() {
- new Thread(() -> {
- try {
- Thread.sleep(300000);
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_2();
- //写仓库注入碳酸钠完成
- stirringTankClient.writeTank05();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- return AjaxResult.success();
- }
- /**
- * 正常关闭2号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpacker1() {
- new Thread(() -> {
- try {
- Thread.sleep(300000);
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_3();
- //写仓库注入丁黄药完成
- stirringTankClient.writeTank05_1();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- return AjaxResult.success();
- }
- /**
- * 正常关闭3号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpacker2() {
- new Thread(() -> {
- try {
- Thread.sleep(300000);
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_4();
- //写仓库注入六偏磷酸钠完成
- stirringTankClient.writeTank05_3();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- return AjaxResult.success();
- }
- /**
- * 正常关闭4号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpacker3() {
- new Thread(() -> {
- try {
- Thread.sleep(300000);
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_5();
- //写仓库注入硫酸铵完成
- stirringTankClient.writeTank05_4();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- return AjaxResult.success();
- }
- /**
- * 正常关闭5号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpacker4() {
- new Thread(() -> {
- try {
- Thread.sleep(300000);
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_6();
- //写仓库注入乙黄药完成
- stirringTankClient.writeTank05_5();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }).start();
- return AjaxResult.success();
- }
- /**
- * 异常关闭1号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpackererror() {
- //写仓库注入碳酸钠失败
- stirringTankClient.writeTank04();
- stirringTankClient.writeTank05f();
- //写关闭拆包机信号
- unpackingMachineSubClient.writeV141_2();
- return AjaxResult.success();
- }
- /**
- * 异常关闭2号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpackererror1() {
- //写仓库注入丁黄药失败
- stirringTankClient.writeTank04_1();
- stirringTankClient.writeTank05_1f();
- unpackingMachineSubClient.writeV141_3();
- return AjaxResult.success();
- }
- /**
- * 异常关闭3号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpackererror2() {
- //写仓库注入六偏磷酸钠失败
- stirringTankClient.writeTank04_3();
- stirringTankClient.writeTank05_3f();
- unpackingMachineSubClient.writeV141_4();
- return AjaxResult.success();
- }
- /**
- * 异常关闭4号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpackererror3() {
- //写仓库注入硫酸铵失败
- stirringTankClient.writeTank04_4();
- stirringTankClient.writeTank05_4f();
- unpackingMachineSubClient.writeV141_5();
- return AjaxResult.success();
- }
- /**
- * 异常关闭5号拆包机
- *
- * @return
- */
- public AjaxResult turnOffTheUnpackererror4() {
- //写仓库注入乙黄药失败
- stirringTankClient.writeTank04_5();
- stirringTankClient.writeTank05_5f();
- unpackingMachineSubClient.writeV141_6();
- return AjaxResult.success();
- }
- /**
- * 更新数据接口
- *
- * @param updateForm
- * @return
- */
- public AjaxResult updateAsnData(UpdateForm updateForm) {
- String asnNo = updateForm.getDocNo();
- String asnLineNo = updateForm.getLineNo();
- Integer num = updateForm.getNum();
- WmsDocAsnDetails wmsDocAsnDetails = wmsDocAsnDetailsMapper.selectWmsDocAsnDetailsByAsnLineNo(asnNo, asnLineNo);
- wmsDocAsnDetails.setExpectedQty(new BigDecimal(num));
- wmsDocAsnDetails.setExpectedQtyEach(new BigDecimal(num));
- wmsDocAsnDetailsMapper.updateWmsDocAsnDetails(wmsDocAsnDetails);
- return AjaxResult.success();
- }
- /**
- * 安全交握,Wcs回调通知agv是否可以执行
- * @param callbackForm
- * @return
- */
- public Boolean callbackNotice(CallbackTaskForm callbackForm) {
- Assert.isTrue(StringUtils.equals(Constant.SAFE_CODE.PASS.getCode(), callbackForm.getSafeCode()),
- "当前任务未执行");
- WcsTask wcsTask = wcsTaskService.selectWcsTaskByTaskNo(callbackForm.getTaskNo());
- Assert.isTrue(ObjectUtil.isNotNull(wcsTask), "wcsTask is null");
- return wcsTaskService.updateTaskStatus(wcsTask.getExt1(), Constant.TaskType.AGV.getDesc(),
- Constant.TASK_STS.TASK_CREATE.getValue(), Constant.TASK_STS.TASK_WAIT.getValue());
- }
- /**
- * 出库任务下发
- * @return
- */
- public AjaxResult outboundRequest(OutboundForm outboundForm) {
- String locationFrom = "100733";
- String locationTo = "";
- String palletNo = outboundForm.getPalletNo();
- String wcsId = outboundForm.getWcsId();
- AjaxResult ajaxResult = agvCallProxyService.barrelsOutOfStorage(locationFrom, locationTo, palletNo,wcsId);
- if (ajaxResult.isSuccess()){
- return AjaxResult.success("任务创建成功");
- }
- return AjaxResult.error("任务创建失败");
- }
- /**
- * 回调卸货完成前
- * @return
- */
- public AjaxResult agvCallbackWCSBeforeUnloadingIsCompleted() {
- // 查询出状态为10,包含物料信息为丁铵黑药的入库单
- WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails();
- wmsDocAsnDetails.setSku("C4H9O2PSSNH4");
- wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS10.getValue());
- WmsDocAsnDetails wmsDocAsnDetails1 = wmsDocAsnDetailsService.selectWmsDocAsnDetailsByModel(wmsDocAsnDetails);
- String asnNo = wmsDocAsnDetails1.getAsnNo();
- // 根据入库单号(Ext1)查询出所对应的任务
- WcsTask wcsTask = new WcsTask();
- wcsTask.setExt1(asnNo);
- WcsTask wcsTask1 = wcsTaskService.selectWcsTaskByModel(wcsTask);
- // 根据查出来的任务编号反馈wcs卸货完成
- String taskNo = wcsTask1.getTaskNo();
- wmsDocAsnSubService.wmsAgvCallbackIntask(taskNo);
- return AjaxResult.success();
- }
- private AjaxResult addWcsTask(String locationFrom, String locationTo
- , String asnNo, String palletNo, String wcsNo) {
- return wcsTaskSubService.addWcsTask(IdWorker.getIdStr(), locationFrom, locationTo, asnNo, palletNo,
- wcsNo, 10L, "立体库入库任务", StringUtils.EMPTY);
- }
- }
|