package com.vincent.rsf.openApi.controller.phyz; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.openApi.entity.dto.CommonResponse; import com.vincent.rsf.openApi.entity.phyz.*; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.compress.utils.Lists; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; import java.util.Objects; import static com.vincent.rsf.openApi.controller.AuthController.SIMULATED_DATA_ENABLE; @RestController @RequestMapping("/erp") @Api("银座新工厂(五期)ERP接口") @Slf4j public class ERPController { @ApiOperation("仓库信息同步") @PostMapping("/wareHouse/sync") public CommonResponse syncWareHouse(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List warehouseList = JSON.parseArray(params.toJSONString(), Warehouse.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("物料信息同步") @PostMapping("/mat/sync") public CommonResponse syncMaterial(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List materialList = JSON.parseArray(params.toJSONString(), Material.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("客户信息同步") @PostMapping("/customer/sync") public CommonResponse syncCustomer(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List customerList = JSON.parseArray(params.toJSONString(), Customer.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("供应商信息同步") @PostMapping("/supplier/sync") public CommonResponse syncSupplier(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List supplierList = JSON.parseArray(params.toJSONString(), Supplier.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("入/出库任务通知单") @PostMapping("/order/add") public CommonResponse addOrder(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List orderList = JSON.parseArray(params.toJSONString(), Order.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("入/出库任务通知单取消") @PostMapping("/order/cancel") public CommonResponse cancelOrder(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); List orderList = JSON.parseArray(params.toJSONString(), Order.class); // 数据处理,转发server return CommonResponse.ok(); } @ApiOperation("库存查询明细") @PostMapping("/inventory/details") public CommonResponse queryInventoryDetails(@RequestBody JSONObject params) { if (SIMULATED_DATA_ENABLE.equals("1")) { String x = "[\n" + " {\n" + " \"locId\": \"LOC-A-01-01\",\n" + " \"wareHouseId\": \"WH001\",\n" + " \"wareHouseName\": \"原料仓库\",\n" + " \"palletId\": \"PALLET001\",\n" + " \"matNr\": \"MAT10001\",\n" + " \"makTx\": \"钢材Q235\",\n" + " \"spec\": \"国标GB/T700-2006\",\n" + " \"anfme\": 10.5,\n" + " \"unit\": \"吨\",\n" + " \"status\": \"可用\",\n" + " \"orderType\": 1,\n" + " \"orderNo\": \"Order202698921\",\n" + " \"prepareType\": 1,\n" + " \"planNo\": \"PLAN202601060001\",\n" + " \"batch\": \"BATCH20260106001\",\n" + " \"stockOrgId\": \"ORG001\"\n" + " },\n" + " {\n" + " \"locId\": \"LOC-B-02-03\",\n" + " \"wareHouseId\": \"WH002\",\n" + " \"wareHouseName\": \"成品仓库\",\n" + " \"palletId\": \"PALLET002\",\n" + " \"matNr\": \"MAT20001\",\n" + " \"makTx\": \"电机组件\",\n" + " \"spec\": \"380V 50Hz\",\n" + " \"anfme\": 50,\n" + " \"unit\": \"台\",\n" + " \"status\": \"可用\",\n" + " \"orderType\": \"1\",\n" + " \"orderNo\": \"SO202601060001\",\n" + " \"prepareType\": 1,\n" + " \"planNo\": \"PLAN202601060002\",\n" + " \"batch\": \"BATCH20260106002\",\n" + " \"stockOrgId\": \"ORG001\"\n" + " }\n" + "]"; return CommonResponse.ok(JSONArray.parseArray(x, InventoryDetails.class)); } InventoryQueryCondition condition = JSON.parseObject(params.toJSONString(), InventoryQueryCondition.class); // 数据处理,转发server List inventoryDetails = Lists.newArrayList(); return new CommonResponse().setCode(200).setData(inventoryDetails); } @ApiOperation("库存查询汇总") @PostMapping("/inventory/summary") public CommonResponse queryInventorySummary(@RequestBody JSONObject params) { if (SIMULATED_DATA_ENABLE.equals("1")) { String s = "{\n" + " \"code\": 200,\n" + " \"msg\": \"操作成功\",\n" + " \"data\": [\n" + " {\n" + " \"wareHouseId\": \"WH001\",\n" + " \"wareHouseName\": \"原料仓库\",\n" + " \"matNr\": \"MAT10001\",\n" + " \"makTx\": \"钢材Q235\",\n" + " \"spec\": \"国标GB/T700-2006\",\n" + " \"anfme\": 10.5,\n" + " \"unit\": \"吨\",\n" + " \"stockOrgId\": \"ORG001\",\n" + " \"batch\": \"BATCH20260106001\",\n" + " \"planNo\": \"Plan20260106006\"\n" + " },\n" + " {\n" + " \"wareHouseId\": \"WH001\",\n" + " \"wareHouseName\": \"原料仓库\",\n" + " \"matNr\": \"MAT10002\",\n" + " \"makTx\": \"铝型材6061\",\n" + " \"spec\": \"国标GB/T3190-2008\",\n" + " \"anfme\": 20.3,\n" + " \"unit\": \"吨\",\n" + " \"stockOrgId\": \"ORG001\",\n" + " \"batch\": \"BATCH20260106002\",\n" + " \"planNo\": \"Plan20260106005\"\n" + " },\n" + " {\n" + " \"wareHouseId\": \"WH002\",\n" + " \"wareHouseName\": \"成品仓库\",\n" + " \"matNr\": \"MAT30001\",\n" + " \"makTx\": \"电机成品\",\n" + " \"spec\": \"380V 50Hz 15KW\",\n" + " \"anfme\": 100,\n" + " \"unit\": \"台\",\n" + " \"stockOrgId\": \"ORG001\",\n" + " \"batch\": \"BATCH20260106003\",\n" + " \"planNo\": \"Plan20260106004\"\n" + " }\n" + " ]\n" + "}"; return JSONObject.parseObject(s, CommonResponse.class); } InventoryQueryCondition condition = JSON.parseObject(params.toJSONString(), InventoryQueryCondition.class); // 数据处理,转发server List inventorySummaries = Lists.newArrayList(); return new CommonResponse().setCode(200).setData(inventorySummaries); } @ApiOperation("盘点结果确认") @PostMapping("/check/confirm") public CommonResponse checkConfirm(@RequestBody Object objParams) { if (Objects.isNull(objParams)) { throw new CoolException("参数不能为空!!"); } // 返回模拟数据 if (SIMULATED_DATA_ENABLE.equals("1")) { return CommonResponse.ok(); } JSONArray params = paramsFormat(objParams); CheckOrder checkResult = JSON.parseObject(params.toJSONString(), CheckOrder.class); // 数据处理,转发server return CommonResponse.ok(); } /** * 兼容JSONObject和JSONArray格式数据 * * @param data json格式参数 * @return JSONArray格式数据 */ public static JSONArray paramsFormat(Object data) { if (Objects.isNull(data)) { return new JSONArray(); } try { String jsonStr = JSON.toJSONString(data); if (jsonStr.startsWith("[")) { return JSON.parseArray(jsonStr); } else if (jsonStr.startsWith("{")) { JSONArray params = new JSONArray(); params.add(JSON.parseObject(jsonStr)); return params; } } catch (Exception e) { // 解析失败,返回空数组 log.error("转换参数为json格式错误", e); } // 默认返回空数组 return new JSONArray(); } }