package com.ruoyi.ams.xuankuang.service; import com.ruoyi.ams.asn.domain.WmsDocAsnDetails; import com.ruoyi.ams.asn.domain.WmsDocAsnHeader; import com.ruoyi.ams.asn.service.IWmsDocAsnDetailsService; import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService; import com.ruoyi.ams.xuankuang.domain.form.AgvInTaskForm; import com.ruoyi.ams.xuankuang.domain.form.BillTaskForm; import com.ruoyi.ams.xuankuang.domain.vo.WcsResponseVo; import com.ruoyi.base.constant.Constant; import com.ruoyi.base.domain.BaseSku; import com.ruoyi.base.service.IBaseSkuService; import com.ruoyi.common.core.domain.AjaxResult; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.io.Console; import java.util.List; import java.util.Map; /** * 入库业务 * * @author JWK * @version 1.0 * @date 2023/3/30 10:51 */ @Slf4j @Service public class WmsDocAsnSubService { @Autowired private IWmsDocAsnHeaderService iWmsDocAsnHeaderService; @Autowired private IWmsDocAsnDetailsService iWmsDocAsnDetailsService; @Autowired private IBaseSkuService iBaseSkuService; @Autowired private WmsDocOrderSubService wmsDocOrderSubService; @Autowired private WcsToWmsApiService wcsToWmsApiService; @Autowired private WmsToWcsApiService wmsToWcsApiService; @Autowired private WcsTaskSubService wcsTaskSubService; /** * 工单任务下发接口 * @param asnNo * @return */ @Transactional public AjaxResult queryDocAsnDetails(@PathVariable("asnNo") String asnNo) { // 根据单号,和创建状态为00 WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails(); wmsDocAsnDetails.setAsnNo(asnNo); wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS00.getValue()); List list = iWmsDocAsnDetailsService.selectWmsDocAsnDetailsList(wmsDocAsnDetails); WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo); boolean con = true; for (WmsDocAsnDetails details:list) { BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, details.getSku()); BillTaskForm billTaskForm = new BillTaskForm(); billTaskForm.setDocNo(details.getAsnNo()); billTaskForm.setPackageType(Integer.valueOf(baseSku.getSkuType())); billTaskForm.setType(Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1()); billTaskForm.setNum(details.getExpectedQty().intValue()); billTaskForm.setLineNo(details.getAsnLineNo().toString()); if (Constant.ASN_TYP.getByValue(wmsDocAsnHeader.getAsnType()).getValue1() == 2){ billTaskForm.setDest(Integer.parseInt(wmsDocAsnHeader.getAsnReference2())); AjaxResult ajaxResult = wcsTaskSubService.addCrossDatabaseTasks(asnNo); String msg = ajaxResult.getMsg(); billTaskForm.setLineNo(msg); } billTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2())); //调用工单下发 WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService(); WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsBillTask(billTaskForm); if (!wcsResponseVo.isSuccess()) { con = false; wmsDocAsnHeader.setNotes(wcsResponseVo.getMessage()); iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader); continue; } // 修改 明细行状态为10 details.setLineStatus(Constant.ASN_STS.STS10.getValue()); iWmsDocAsnDetailsService.updateWmsDocAsnDetails(details); } if (con == true) { wmsDocAsnHeader.setNotes(""); // 修改 单头10 wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue()); iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader); } if(wmsDocAsnHeader.getAsnStatus().equals(Constant.ASN_STS.STS10.getValue()) && wmsDocAsnHeader.getAsnType().equals(Constant.ASN_TYP.YK.getValue())){ wmsDocOrderSubService.addCrossingOutboundOrder(asnNo); } return AjaxResult.success("", list); } /** * agv入库任务下发 * @param asnNo * @return */ @Transactional public AjaxResult agvInTask(@PathVariable("asnNo") String asnNo) { // 根据单号,和创建状态为00 WmsDocAsnDetails wmsDocAsnDetails = new WmsDocAsnDetails(); wmsDocAsnDetails.setAsnNo(asnNo); wmsDocAsnDetails.setLineStatus(Constant.ASN_STS.STS00.getValue()); List list = iWmsDocAsnDetailsService.selectWmsDocAsnDetailsList(wmsDocAsnDetails); WmsDocAsnHeader wmsDocAsnHeader = iWmsDocAsnHeaderService.selectWmsDocAsnHeaderByAsnNo(asnNo); boolean con = true; for (WmsDocAsnDetails details:list) { BaseSku baseSku = iBaseSkuService.selectBaseSkuByCustomerId(Constant.CUSTOMER_ID, details.getSku()); AgvInTaskForm agvInTaskForm = new AgvInTaskForm(); agvInTaskForm.setAgvId("1"); agvInTaskForm.setMaterial(Integer.valueOf(baseSku.getDesc2())); agvInTaskForm.setDocNo(asnNo); agvInTaskForm.setNum(details.getExpectedQty().intValue()); // wms物料编码 String sku = iBaseSkuService.selectBaseSkuByMaterialType("5").getSku(); //托盘码 String pallentNo = "1234567"; // AjaxResult ajaxResult = wcsToWmsApiService.theBucketIsLoadedIntoTheLibrary(sku, asnNo, pallentNo, details.getExpectedQty()); // Object data = ajaxResult.getData(); // Map map = (Map) data; // String taskNo = map.get("taskNo").toString(); // String row = map.get("row").toString(); // String col = map.get("col").toString(); // String floor = map.get("floor").toString(); agvInTaskForm.setTaskNo("1234556"); agvInTaskForm.setPalletId(pallentNo); agvInTaskForm.setRow(Integer.parseInt("2")); agvInTaskForm.setCol(Integer.parseInt("4")); agvInTaskForm.setFloor(Integer.parseInt("1")); //调用agv入库任务下发 WmsToWcsApiService wmsToWcsApiService = new WmsToWcsApiService(); WcsResponseVo wcsResponseVo = wmsToWcsApiService.wmsAgvInTask(agvInTaskForm); if (!wcsResponseVo.isSuccess()) { con = false; wmsDocAsnHeader.setNotes(wcsResponseVo.getMessage()); iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader); continue; } // 修改 明细行状态为10 details.setLineStatus(Constant.ASN_STS.STS10.getValue()); iWmsDocAsnDetailsService.updateWmsDocAsnDetails(details); } if (con == true) { wmsDocAsnHeader.setNotes(""); // 修改 单头10 wmsDocAsnHeader.setAsnStatus(Constant.ASN_STS.STS10.getValue()); iWmsDocAsnHeaderService.updateWmsDocAsnHeader(wmsDocAsnHeader); } return AjaxResult.success("", list); } /** * agv回调wcs卸货完成 * @param taskNo * @return */ public AjaxResult wmsAgvCallbackIntask(String taskNo){ wmsToWcsApiService.wmsAgvCallbackIntask(taskNo); return AjaxResult.success(); } /** * agv回调wcs取货完成 * @param wcsId * @return */ public AjaxResult wmsAgvCallbackOuttask(String wcsId){ wmsToWcsApiService.wmsAgvCallbackOuttask(wcsId); return AjaxResult.success(); } }