Files
FT517-WMS/ruoyi-admin/src/main/java/com/ruoyi/api/controller/ToWmsApiController.java
2026-01-04 13:45:42 +08:00

284 lines
13 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package com.ruoyi.api.controller;
import cn.hutool.core.date.DateUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.ErpProduct;
import com.ruoyi.api.domain.ReMaterialParam;
import com.ruoyi.api.domain.RequestEnter;
import com.ruoyi.api.domain.WmsJobRequest;
import com.ruoyi.api.service.IToWmsService;
import com.ruoyi.bas.BasCustomer.domain.BasCustomer;
import com.ruoyi.bas.BasCustomer.service.IBasCustomerService;
import com.ruoyi.bas.BasProduct.domain.BasProduct;
import com.ruoyi.bas.BasProduct.service.IBasProductService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.uuid.UUID;
import com.ruoyi.log.domain.RequestLog;
import com.ruoyi.log.service.IRequestLogService;
import com.ruoyi.out.outStockout.domain.OutStockout;
import com.ruoyi.out.outStockout.domain.OutStockoutVo;
import com.ruoyi.out.outStockout.service.IOutStockoutService;
import com.ruoyi.out.outStockoutDetail.domain.OutStockoutDetail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 作业统计 Controller
*/
@RestController
@RequestMapping("/api2wms")
public class ToWmsApiController {
@Autowired
private IToWmsService toWmsService;
@Autowired
private IRequestLogService requestLogService;
@Autowired
private IOutStockoutService outStockoutService;
@Autowired
private IBasProductService basProductService;
@Autowired
private IBasCustomerService basCustomerService;
/**
* 入库请求生成作业
*/
@PostMapping("/requestEnterByTrayCode")
public AjaxResult requestEnterByTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCode(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "入库任务创建请求", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 请求补码作业
*/
@RequestMapping("/requestByNoTrayCode")
public AjaxResult requestByNoTrayCode(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.selectMydoJobByEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "请求补码作业", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 获取入库作业
*/
@RequestMapping("/requestEnterByTrayCodeAndEntranceId")
public AjaxResult requestEnterByTrayCodeAndEntranceId(@RequestBody RequestEnter requestEnter) {
AjaxResult ajaxResult = toWmsService.requestEnterByTrayCodeAndEntranceId(requestEnter);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(requestEnter), "获取入库作业", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 入库、出库 任务完成回传
* Map<String, String>
* "wmsType": "任务类型" 1-入库 2-出库 3-agv搬运,
* taskNo:出库 入库任务号
* trayCode:托盘码
* positionCode1:起点
* positionCode2:终点
* containerCode:容器编码
*/
@PostMapping("/jobFinish")
public AjaxResult jobFinish(@RequestBody WmsJobRequest wmsJobRequest) {
AjaxResult ajaxResult = toWmsService.jobFinish(wmsJobRequest);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(wmsJobRequest), "jobFinish", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 放货有货,重新分配货位
*/
@PostMapping("/reAssign")
public AjaxResult reAssign(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reAssign(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reAssign", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 取货无货,重新分配物料
*/
@PostMapping("/reMaterial")
public AjaxResult reMaterial(@RequestBody ReMaterialParam reMaterialParam) {
AjaxResult ajaxResult = toWmsService.reMaterial(reMaterialParam);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(reMaterialParam), "reMaterial", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 出库单据保存
*
* @param json
* @return
*/
//@Log(title = "出库主单保存", businessType = BusinessType.OTHER)
@PostMapping("/saveOutBill")
@ResponseBody
public AjaxResult saveBill(@RequestBody String json) {
JSONObject jsonObject = JSONUtil.parseObj(json);
Object codeObj = jsonObject.get("std_data");
JSONObject obj = JSONUtil.parseObj(codeObj.toString());
String doc = JSONUtil.parseObj(obj.get("parameter").toString()).get("data").toString();
JSONObject param = JSONUtil.parseObj(doc);
OutStockoutVo outStockoutVo = new OutStockoutVo();
OutStockout outStockout = new OutStockout();
List<OutStockoutDetail> list = new ArrayList<>();
outStockout.setStockoutId(param.get("doc_no").toString());
List<OutStockout> outStockout1 = outStockoutService.selectOutStockoutList(outStockout);
if (outStockout1.size() > 0) {
return AjaxResult.error("单据已推送!");
}
outStockout.setStockoutGuid(UUID.randomUUID().toString());
outStockout.setOutType("1");
outStockout.setCreateDate(DateUtil.formatDateTime(new Date()));
outStockout.setCreateManId(param.get("create_user_name").toString());
outStockout.setCustomerNo(param.get("customer_no").toString());
BasCustomer customer = basCustomerService.selectBasCustomerByNo(param.get("customer_no").toString());
if (customer == null) {
BasCustomer basCustomer = new BasCustomer();
basCustomer.setId(UUID.randomUUID().toString());
basCustomer.setCustomerNo(param.get("customer_no").toString());
basCustomer.setCustomerName(param.get("customer_name").toString());
basCustomer.setUseable("1");
basCustomerService.insertBasCustomer(basCustomer);
}
outStockout.setStatus("1");
outStockout.setStockoutSource("1");
outStockout.setWarehouseId("01");
JSONArray erpList = JSONUtil.parseArray(param.get("sales_issue_detail").toString());
if (erpList.size() > 0) {
for (int i = 0; i < erpList.size(); i++) {
JSONObject msg = (JSONObject) erpList.get(i);
OutStockoutDetail detail = new OutStockoutDetail();
detail.setStockoutDetailId(msg.get("sales_delivery_no").toString());
detail.setStockoutGuid(outStockout.getStockoutGuid());
detail.setStockoutId(outStockout.getStockoutId());
detail.setProductId(msg.get("item_no").toString());
detail.setProductName(msg.get("item_name").toString());
detail.setSpec(msg.get("item_spec").toString());
detail.setQuantity(new BigDecimal(msg.get("business_qty").toString()));
detail.setAllotQuantity(BigDecimal.ZERO);
detail.setAssignNum(BigDecimal.ZERO);
detail.setRemark(msg.get("udf021").toString());
list.add(detail);
}
}
outStockoutVo.setOutStockout(outStockout);
outStockoutVo.setDetailList(list);
String stockOutId = outStockoutService.saveBillErp(outStockoutVo);
AjaxResult ajaxResult = AjaxResult.success(stockOutId);
RequestLog requestLog = requestLogService.getRequestLog(json, "出库单据保存", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 接收物料
*/
//@Log(title = "接收物料", businessType = BusinessType.INSERT)
@PostMapping("/receiveProduct")
public AjaxResult receiveProduct(@RequestBody String json) {
JSONObject jsonObject = JSONUtil.parseObj(json);
Object codeObj = jsonObject.get("std_data");
JSONObject obj = JSONUtil.parseObj(codeObj.toString());
String doc = JSONUtil.parseObj(obj.get("parameter").toString()).get("data").toString();
JSONObject param = JSONUtil.parseObj(doc);
BasProduct basProduct = new BasProduct();
basProduct.setProductGuid(param.get("item_no").toString());
basProduct.setProductId(param.get("item_no").toString());
basProduct.setProductName(param.get("item_name").toString());
basProduct.setPrice(param.get("item_desc").toString());
basProduct.setSpec(param.get("item_spec").toString());
basProduct.setUnit(param.get("item_group_no").toString());
basProduct.setParentId(param.get("item_group_no").toString());
JSONArray param1 = JSONUtil.parseArray(param.get("packing_mode").toString());
if(param1.size() > 0){
basProduct.setSpare36(JSONUtil.parseObj(param1.get(0).toString()).get("length").toString());
basProduct.setSpare37(JSONUtil.parseObj(param1.get(0).toString()).get("width").toString());
basProduct.setSpare38(JSONUtil.parseObj(param1.get(0).toString()).get("heigth").toString());
if(basProduct.getSpare36() != null && basProduct.getSpare37() != null){
if("760".equals(basProduct.getSpare36()) && "960".equals(basProduct.getSpare37())){
basProduct.setSpare10("1");
} else if ("1000".equals(basProduct.getSpare36()) && "800".equals(basProduct.getSpare37())) {
basProduct.setSpare10("2");
} else if ("1130".equals(basProduct.getSpare36()) && "800".equals(basProduct.getSpare37())) {
basProduct.setSpare10("3");
} else if ("1130".equals(basProduct.getSpare36()) && "900".equals(basProduct.getSpare37())) {
basProduct.setSpare10("4");
} else{
basProduct.setSpare10("5");
}
}
}
AjaxResult ajaxResult = toWmsService.receiveProduct(basProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basProduct), "接收物料", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 修改物料管理
*/
//@Log(title = "修改物料管理", businessType = BusinessType.UPDATE)
@PostMapping("/updateProduct")
public AjaxResult updateProduct(@RequestBody ErpProduct erpProduct) {
AjaxResult ajaxResult = toWmsService.updateProduct(erpProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(erpProduct), "修改物料管理", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
/**
* 作废物料
*/
//@Log(title = "作废物料", businessType = BusinessType.UPDATE)
@PostMapping("/InvalidProduct")
public AjaxResult InvalidProduct(@RequestBody String json) {
JSONObject jsonObject = JSONUtil.parseObj(json);
Object codeObj = jsonObject.get("std_data");
JSONObject obj = JSONUtil.parseObj(codeObj.toString());
String doc = JSONUtil.parseObj(obj.get("parameter").toString()).get("data").toString();
JSONObject param = JSONUtil.parseObj(doc);
BasProduct basProduct = new BasProduct();
basProduct.setProductGuid(param.get("item_no").toString());
basProduct.setProductId(param.get("item_no").toString());
basProduct.setProductName(param.get("item_name").toString());
basProduct.setPrice(param.get("item_desc").toString());
basProduct.setSpec(param.get("item_spec").toString());
basProduct.setUnit(param.get("inv_unit_no").toString());
JSONArray param1 = JSONUtil.parseArray(param.get("packing_mode").toString());
if(param1.size() > 0){
basProduct.setSpare36(JSONUtil.parseObj(param1.get(0).toString()).get("length").toString());
basProduct.setSpare37(JSONUtil.parseObj(param1.get(0).toString()).get("width").toString());
basProduct.setSpare38(JSONUtil.parseObj(param1.get(0).toString()).get("heigth").toString());
}
AjaxResult ajaxResult = toWmsService.InvalidProduct(basProduct);
RequestLog requestLog = requestLogService.getRequestLog(JSONUtil.toJsonStr(basProduct), "作废物料", ajaxResult);
requestLogService.insertRequestLog(requestLog);
return ajaxResult;
}
}