|
@@ -1,21 +1,42 @@
|
|
|
package com.ruoyi.web.controller.warewms.api;
|
|
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.ruoyi.ams.asn.form.StockForm;
|
|
|
import com.ruoyi.ams.asn.service.IWmsDocAsnHeaderService;
|
|
|
+import com.ruoyi.ams.business.IBusinessService;
|
|
|
import com.ruoyi.ams.common.vo.DictVO;
|
|
|
+import com.ruoyi.ams.config.domain.FlowConfigHeader;
|
|
|
+import com.ruoyi.ams.config.domain.dto.AgvCallDTO;
|
|
|
+import com.ruoyi.ams.config.domain.dto.AgvCallItemDTO;
|
|
|
+import com.ruoyi.ams.config.domain.dto.LotattDTO;
|
|
|
+import com.ruoyi.ams.config.domain.vo.FlowConfigHeaderVO;
|
|
|
import com.ruoyi.ams.config.domain.vo.LotattConfigVO;
|
|
|
+import com.ruoyi.ams.config.service.IFlowConfigHeaderService;
|
|
|
import com.ruoyi.ams.config.service.ILotattConfigService;
|
|
|
+import com.ruoyi.ams.lineCall.domain.form.LineCallDetailsForm;
|
|
|
+import com.ruoyi.ams.lineCall.domain.form.LineCallForm;
|
|
|
+import com.ruoyi.ams.lineCall.domain.form.LineCallListFrom;
|
|
|
+import com.ruoyi.ams.lineCall.domain.vo.LineCallVO;
|
|
|
+import com.ruoyi.ams.lineCall.service.ILineCallService;
|
|
|
+import com.ruoyi.ams.order.domain.ActAllocationDetails;
|
|
|
+import com.ruoyi.ams.order.form.PickForm;
|
|
|
+import com.ruoyi.ams.order.service.IActAllocationDetailsService;
|
|
|
+import com.ruoyi.ams.order.service.IWmsDocOrderHeaderService;
|
|
|
import com.ruoyi.base.service.ICodeSkuRelationshipService;
|
|
|
import com.ruoyi.common.annotation.Log;
|
|
|
import com.ruoyi.common.core.domain.AjaxResult;
|
|
|
import com.ruoyi.common.core.domain.entity.SysDictData;
|
|
|
import com.ruoyi.common.enums.BusinessType;
|
|
|
+import com.ruoyi.common.utils.PageUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import com.ruoyi.system.service.ISysDictDataService;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.aspectj.weaver.loadtime.Aj;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -25,6 +46,7 @@ import java.util.Map;
|
|
|
* Date: 2022/10/28
|
|
|
* Description:
|
|
|
*/
|
|
|
+@Slf4j
|
|
|
@RestController
|
|
|
@RequestMapping("/api")
|
|
|
public class PadController {
|
|
@@ -32,18 +54,39 @@ public class PadController {
|
|
|
@Autowired
|
|
|
private IWmsDocAsnHeaderService wmsDocAsnHeaderService;
|
|
|
@Autowired
|
|
|
+ private IWmsDocOrderHeaderService wmsDocOrderHeaderService;
|
|
|
+ @Autowired
|
|
|
+ private IActAllocationDetailsService actAllocationDetailsService;
|
|
|
+ @Autowired
|
|
|
private ICodeSkuRelationshipService codeSkuRelationshipService;
|
|
|
@Autowired
|
|
|
private ILotattConfigService lotattConfigService;
|
|
|
@Autowired
|
|
|
private ISysDictDataService sysDictDataService;
|
|
|
+ @Autowired
|
|
|
+ private ILineCallService lineCallService;
|
|
|
+ @Autowired
|
|
|
+ private IBusinessService businessService;
|
|
|
+ @Autowired
|
|
|
+ private IFlowConfigHeaderService flowConfigHeaderService;
|
|
|
|
|
|
+ /**
|
|
|
+ * 查询批次属性后台配置
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@GetMapping("/config/lotattConfig")
|
|
|
public AjaxResult lotattConfigList() {
|
|
|
List<LotattConfigVO> lotattConfigVOList = lotattConfigService.queryLotattConfigListActive();
|
|
|
return AjaxResult.success(lotattConfigVOList);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 字典表
|
|
|
+ *
|
|
|
+ * @param dictType
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@GetMapping("/base/dict")
|
|
|
public AjaxResult dict(@RequestParam String dictType) {
|
|
|
SysDictData query = new SysDictData();
|
|
@@ -60,6 +103,12 @@ public class PadController {
|
|
|
return AjaxResult.success(result);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 码盘
|
|
|
+ *
|
|
|
+ * @param stockForm
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@PostMapping("/docAsn/stock")
|
|
|
@Log(title = "码盘", businessType = BusinessType.INSERT)
|
|
|
public AjaxResult stock(@RequestBody StockForm stockForm) {
|
|
@@ -69,6 +118,12 @@ public class PadController {
|
|
|
return wmsDocAsnHeaderService.doStock(stockForm);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 条码检测
|
|
|
+ *
|
|
|
+ * @param param
|
|
|
+ * @return
|
|
|
+ */
|
|
|
@PostMapping("/docAsn/snCheck")
|
|
|
public AjaxResult snCheck(@RequestBody Map<String, String> param) {
|
|
|
String sn = param.get("sn");
|
|
@@ -77,4 +132,103 @@ public class PadController {
|
|
|
}
|
|
|
return codeSkuRelationshipService.snCheck(sn);
|
|
|
}
|
|
|
+
|
|
|
+ @GetMapping("/lineCall/flowList")
|
|
|
+ public AjaxResult flowList() {
|
|
|
+ PageUtils.startPage();
|
|
|
+ List<FlowConfigHeader> list = flowConfigHeaderService.selectFlowConfigHeaderList(null);
|
|
|
+ return AjaxResult.success(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取流程明细
|
|
|
+ *
|
|
|
+ * @param id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @GetMapping("/lineCall/choseFlow/{id}")
|
|
|
+ public AjaxResult choseFlow(@PathVariable("id") Long id) {
|
|
|
+ LineCallVO lineCallVO = lineCallService.selectLineCall(id, 1L);
|
|
|
+ if (lineCallVO == null) {
|
|
|
+ return AjaxResult.error("查询不到对应的流程");
|
|
|
+ }
|
|
|
+ return AjaxResult.success(lineCallVO);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 物料拉动
|
|
|
+ *
|
|
|
+ * @param lineCallForm
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PostMapping("/lineCall/pulling")
|
|
|
+ public AjaxResult pulling(@RequestBody LineCallForm lineCallForm) {
|
|
|
+ //查询所属流程
|
|
|
+ FlowConfigHeaderVO flowConfigHeaderVO = flowConfigHeaderService.selectFlowConfigHeaderById(lineCallForm.getFlowId());
|
|
|
+ if (flowConfigHeaderVO == null) {
|
|
|
+ log.info("-----------指令查询不到对应的流程:" + JSON.toJSONString(lineCallForm));
|
|
|
+ return AjaxResult.error("指令查询不到对应的流程");
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, AgvCallDTO> map = new HashMap<>();
|
|
|
+ List<AgvCallDTO> list = new ArrayList<>();
|
|
|
+ for (LineCallListFrom lform : lineCallForm.getLineCallList()) {
|
|
|
+ if (flowConfigHeaderVO.getFlowType().equals("ASN") && org.apache.commons.lang3.StringUtils.isEmpty(lform.getLocationFrom())) {
|
|
|
+ return AjaxResult.error("入库任务必须选择起始库位");
|
|
|
+ }
|
|
|
+ if (flowConfigHeaderVO.getFlowType().equals("SO") && (lform.getQty() == null || lform.getQty().longValue() == 0)) {
|
|
|
+ return AjaxResult.error("出库任务必须选择数量");
|
|
|
+ }
|
|
|
+ AgvCallDTO agvCallDTO;
|
|
|
+ if (map.containsKey(lform.getLocationFrom() + "-" + lform.getLocationTo())) {
|
|
|
+ agvCallDTO = map.get(lform.getLocationFrom() + "-" + lform.getLocationTo());
|
|
|
+ } else {
|
|
|
+ agvCallDTO = new AgvCallDTO();
|
|
|
+ agvCallDTO.setWarehouseId(1L);//没用暂时写死
|
|
|
+ agvCallDTO.setLocationFrom(lform.getLocationFrom());
|
|
|
+ agvCallDTO.setLocationTo(lform.getLocationTo());
|
|
|
+ agvCallDTO.setId(lform.getId());
|
|
|
+ }
|
|
|
+ AgvCallItemDTO agvCallItemDTO = new AgvCallItemDTO();
|
|
|
+ agvCallItemDTO.setWarehouseId(1L);
|
|
|
+ agvCallItemDTO.setSku(lform.getSku());
|
|
|
+ agvCallItemDTO.setQty(lform.getQty());
|
|
|
+ agvCallItemDTO.setSupplier(lform.getSupplier());
|
|
|
+ agvCallItemDTO.setWeight(lform.getWeight());
|
|
|
+ agvCallItemDTO.setLocationFrom(lform.getLocationFrom());
|
|
|
+ agvCallItemDTO.setLocationTo(lform.getLocationTo());
|
|
|
+ agvCallDTO.getAgvCallItemDTOList().add(agvCallItemDTO);
|
|
|
+ LotattDTO lotattDTO = new LotattDTO();
|
|
|
+ List<LineCallDetailsForm> lineCallDetailsForms = lform.getLineCallDetailsFormList();
|
|
|
+ if (lineCallDetailsForms != null && lineCallDetailsForms.size() > 0) {
|
|
|
+ for (LineCallDetailsForm detailsForm : lineCallDetailsForms) {
|
|
|
+ lotattDTO.setAttr(detailsForm.getLotattId(), detailsForm.getLotattValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ agvCallItemDTO.setLotattDTO(lotattDTO);
|
|
|
+ map.put(lform.getLocationFrom() + "-" + lform.getLocationTo(), agvCallDTO);
|
|
|
+ }
|
|
|
+ for (Map.Entry<String, AgvCallDTO> entry : map.entrySet()) {
|
|
|
+ AgvCallDTO mapValue = entry.getValue();
|
|
|
+ list.add(mapValue);
|
|
|
+ }
|
|
|
+ return businessService.agvCall(flowConfigHeaderVO, list);
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/docOrder/allocationList")
|
|
|
+ public AjaxResult allocationList(@RequestParam String palletNo) {
|
|
|
+ List<ActAllocationDetails> actAllocationDetails = actAllocationDetailsService.queryAllocationDetailsByPalletNo(palletNo);
|
|
|
+ return AjaxResult.success(actAllocationDetails);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @PostMapping("/docOrder/pick")
|
|
|
+ public AjaxResult doPick(@RequestBody PickForm pickForm) {
|
|
|
+ if (pickForm.getPickInfoFormList() == null || pickForm.getPickInfoFormList().size() == 0) {
|
|
|
+ return AjaxResult.error("参数不能为空");
|
|
|
+ }
|
|
|
+ return wmsDocOrderHeaderService.doPick(pickForm.getPickInfoFormList());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|