284 lines
13 KiB
Java
284 lines
13 KiB
Java
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;
|
||
}
|
||
|
||
}
|