Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -1,16 +1,16 @@
|
||||
package com.zt.plat.module.erp.api;
|
||||
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
||||
import com.zt.plat.module.erp.enums.ApiConstants;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
@FeignClient(name = ApiConstants.NAME)
|
||||
@Tag(name = "RPC 服务 - ERP")
|
||||
public interface ErpExternalApi {
|
||||
@@ -19,6 +19,6 @@ public interface ErpExternalApi {
|
||||
|
||||
@PostMapping(PREFIX + "/submit")
|
||||
@Operation(summary = "erp数据提交")
|
||||
ResponseEntity<String> submitDataToErp(@Valid @RequestBody ErpSubmitReqDTO reqDTO);
|
||||
HashMap<String, String> submitDataToErp(@Valid @RequestBody ErpSubmitReqDTO reqDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.zt.plat.module.erp.api.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zt.plat.module.erp.enums;
|
||||
import com.zt.plat.framework.common.exception.ErrorCode;// TODO 待办:请将下面的错误码复制到 zt-module-sply 模块的 ErrorCodeConstants 类中。注意,请给“TODO 补充编号”设置一个错误码编号!!!
|
||||
|
||||
import com.zt.plat.framework.common.exception.ErrorCode;
|
||||
// ========== ERP客商主数据 TODO 补充编号 ==========
|
||||
|
||||
public interface ErrorCodeConstants {
|
||||
|
||||
@@ -3,10 +3,11 @@ package com.zt.plat.module.erp.api;
|
||||
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
||||
import com.zt.plat.module.erp.common.conf.ErpConfig;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* ERP Api 实现类
|
||||
*
|
||||
@@ -21,7 +22,7 @@ public class ErpExternalApiImpl implements ErpExternalApi {
|
||||
private ErpConfig erpConfig;
|
||||
|
||||
@Override
|
||||
public ResponseEntity<String> submitDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||
public HashMap<String, String> submitDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||
return erpConfig.pushDataToErp(reqDTO);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.zt.plat.module.erp.common.conf;
|
||||
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
@@ -82,45 +83,114 @@ public class ErpConfig {
|
||||
}
|
||||
}
|
||||
|
||||
// GET请求处理
|
||||
// public HashMap<String, String> getResult(SAPInterfaceResult result) {
|
||||
// HashMap<String, String> resMap = new HashMap<>();
|
||||
// String E_RSLT = null;
|
||||
// JSONObject jsonObject = result.getData();
|
||||
// //判断 result里的succeed是否为true
|
||||
// boolean succeed = result.isSucceed();
|
||||
// if (succeed && "S".equals(jsonObject.getString("E_FLAG"))) {
|
||||
// JSONObject data = result.getData();
|
||||
// String flag = "S";
|
||||
// String E_RESP = data.getString("E_DATA");
|
||||
//
|
||||
// String E_MSG = result.getMsg();
|
||||
//// log.info("请求SAP成功 E_RESP:{}", E_RESP);
|
||||
//// log.info("请求SAP成功 E_MSG:{}", E_MSG);
|
||||
// resMap.put("E_RESP", E_RESP);
|
||||
// resMap.put("resStr", E_MSG);
|
||||
// resMap.put("flag", flag);
|
||||
// return resMap;
|
||||
// } else {
|
||||
// String E_MSG = result.getMsg();
|
||||
// String flag = "E";
|
||||
// resMap.put("resStr", E_MSG);
|
||||
// resMap.put("flag", flag);
|
||||
//// log.info("请求SAP失败 E_MSG:{}", E_MSG);
|
||||
// return resMap;
|
||||
// }
|
||||
// }
|
||||
|
||||
/**
|
||||
* 调用ERP接口更新erp数据
|
||||
*/
|
||||
public ResponseEntity<String> pushDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||
try {
|
||||
// 构建完整URL
|
||||
String url = "http://" + erpAddress + "/api/rfc/post";
|
||||
// 构建请求参数
|
||||
JSONObject requestBody = new JSONObject();
|
||||
requestBody.put("uuid", UUID.randomUUID().toString());
|
||||
requestBody.put("sapsys", sapsys);
|
||||
requestBody.put("srcsys", "DSC");
|
||||
requestBody.put("funcnr", reqDTO.getFuncnr());
|
||||
requestBody.put("bskey", reqDTO.getBskey());
|
||||
requestBody.put("usrid", reqDTO.getUsrid());
|
||||
requestBody.put("usrnm", reqDTO.getUsrnm());
|
||||
if (reqDTO.getSign() != null){
|
||||
requestBody.put("sign", reqDTO.getSign());
|
||||
public HashMap<String, String> pushDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||
try {
|
||||
// 构建完整URL
|
||||
String url = "http://" + erpAddress + "/api/rfc/post";
|
||||
// 构建请求参数
|
||||
JSONObject requestBody = new JSONObject();
|
||||
requestBody.put("uuid", UUID.randomUUID().toString());
|
||||
requestBody.put("sapsys", sapsys);
|
||||
requestBody.put("srcsys", "DSC");
|
||||
requestBody.put("funcnr", reqDTO.getFuncnr());
|
||||
requestBody.put("bskey", reqDTO.getBskey());
|
||||
requestBody.put("usrid", reqDTO.getUsrid());
|
||||
requestBody.put("usrnm", reqDTO.getUsrnm());
|
||||
if (reqDTO.getSign() != null) {
|
||||
requestBody.put("sign", reqDTO.getSign());
|
||||
}
|
||||
if (reqDTO.getReq() != null) {
|
||||
requestBody.put("req", reqDTO.getReq());
|
||||
}
|
||||
// 设置请求头
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
|
||||
// 创建HTTP请求实体
|
||||
HttpEntity<String> requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers);
|
||||
|
||||
// 发送POST请求
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);
|
||||
|
||||
// 解析响应结果
|
||||
String responseBody = response.getBody();
|
||||
if (responseBody.isEmpty()) {
|
||||
throw new RuntimeException("ERP接口返回结果为空");
|
||||
}
|
||||
|
||||
JSONObject jsonResponse = JSON.parseObject(responseBody);
|
||||
if (jsonResponse == null) {
|
||||
throw new RuntimeException("ERP接口响应无法解析为JSON");
|
||||
}
|
||||
return postResult(jsonResponse);
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("调用ERP RFC接口失败: " + e);
|
||||
}
|
||||
if (reqDTO.getReq() != null) {
|
||||
requestBody.put("req", reqDTO.getReq());
|
||||
}
|
||||
// 设置请求头
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
|
||||
// 创建HTTP请求实体
|
||||
HttpEntity<String> requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers);
|
||||
|
||||
// 发送POST请求
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);
|
||||
|
||||
return response;
|
||||
} catch (Exception e) {
|
||||
log.error("调用ERP RFC接口失败:"+e.getMessage(), e);
|
||||
return ResponseEntity.status(500).body("调用ERP接口失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// POST请求处理
|
||||
public HashMap<String, String> postResult(JSONObject result) {
|
||||
HashMap<String, String> resMap = new HashMap<>();
|
||||
|
||||
boolean succeed = result.getBoolean("succeed");
|
||||
JSONObject data = result.getJSONObject("data");
|
||||
if (data == null) {
|
||||
throw new RuntimeException("SAP接口返回值为空," + result.getString("msg"));
|
||||
} else if (succeed && "S".equals(data.getString("E_FLAG"))) {
|
||||
String flag = "S";
|
||||
String E_RESP = data.getString("E_RESP");
|
||||
String E_MSG = data.getString("ET_MSG");
|
||||
resMap.put("E_RESP", E_RESP);
|
||||
resMap.put("resStr", E_MSG);
|
||||
resMap.put("flag", flag);
|
||||
return resMap;
|
||||
} else if (!succeed && "E".equals(data.getString("E_FLAG"))) {
|
||||
String flag = "E";
|
||||
String E_MSG = data.getString("ET_MSG");
|
||||
if (StrUtil.isBlank(E_MSG)) {
|
||||
E_MSG = result.getString("msg");
|
||||
}
|
||||
resMap.put("resStr", E_MSG);
|
||||
resMap.put("flag", flag);
|
||||
return resMap;
|
||||
} else {
|
||||
throw new RuntimeException("SAP接口异常," + result);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//list
|
||||
public Map<String, List<String>> numbers(JSONArray dataArray, String key, String dataKey) {
|
||||
|
||||
@@ -104,7 +104,7 @@ public class ErpAssetController {
|
||||
@PostMapping("/getErpAssetTask")
|
||||
@Operation(summary = "定时获得erp更新资产卡片")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-asset:create')")
|
||||
public CommonResult<Boolean> getErpCompanyTask() {
|
||||
public CommonResult<Boolean> getErpAssetTask() {
|
||||
erpAssetService.callErpRfcInterface();
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@@ -40,14 +40,14 @@ public class ErpFactoryController {
|
||||
|
||||
@PostMapping("/create")
|
||||
@Operation(summary = "创建ERP工厂")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:create')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:create')")
|
||||
public CommonResult<ErpFactoryRespVO> createErpFactory(@Valid @RequestBody ErpFactorySaveReqVO createReqVO) {
|
||||
return success(erpFactoryService.createErpFactory(createReqVO));
|
||||
}
|
||||
|
||||
@PutMapping("/update")
|
||||
@Operation(summary = "更新ERP工厂")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:update')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:update')")
|
||||
public CommonResult<Boolean> updateErpFactory(@Valid @RequestBody ErpFactorySaveReqVO updateReqVO) {
|
||||
erpFactoryService.updateErpFactory(updateReqVO);
|
||||
return success(true);
|
||||
@@ -56,7 +56,7 @@ public class ErpFactoryController {
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除ERP工厂")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:delete')")
|
||||
public CommonResult<Boolean> deleteErpFactory(@RequestParam("id") Long id) {
|
||||
erpFactoryService.deleteErpFactory(id);
|
||||
return success(true);
|
||||
@@ -65,7 +65,7 @@ public class ErpFactoryController {
|
||||
@DeleteMapping("/delete-list")
|
||||
@Parameter(name = "ids", description = "编号", required = true)
|
||||
@Operation(summary = "批量删除ERP工厂")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:delete')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:delete')")
|
||||
public CommonResult<Boolean> deleteErpFactoryList(@RequestBody BatchDeleteReqVO req) {
|
||||
erpFactoryService.deleteErpFactoryListByIds(req.getIds());
|
||||
return success(true);
|
||||
@@ -74,7 +74,7 @@ public class ErpFactoryController {
|
||||
@GetMapping("/get")
|
||||
@Operation(summary = "获得ERP工厂")
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:query')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:query')")
|
||||
public CommonResult<ErpFactoryRespVO> getErpFactory(@RequestParam("id") Long id) {
|
||||
ErpFactoryDO erpFactory = erpFactoryService.getErpFactory(id);
|
||||
return success(BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class));
|
||||
@@ -82,7 +82,7 @@ public class ErpFactoryController {
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得ERP工厂分页")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:query')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:query')")
|
||||
public CommonResult<PageResult<ErpFactoryRespVO>> getErpFactoryPage(@Valid ErpFactoryPageReqVO pageReqVO) {
|
||||
PageResult<ErpFactoryDO> pageResult = erpFactoryService.getErpFactoryPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, ErpFactoryRespVO.class));
|
||||
@@ -90,7 +90,7 @@ public class ErpFactoryController {
|
||||
|
||||
@GetMapping("/export-excel")
|
||||
@Operation(summary = "导出ERP工厂 Excel")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:export')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:export')")
|
||||
@ApiAccessLog(operateType = EXPORT)
|
||||
public void exportErpFactoryExcel(@Valid ErpFactoryPageReqVO pageReqVO,
|
||||
HttpServletResponse response) throws IOException {
|
||||
@@ -103,7 +103,7 @@ public class ErpFactoryController {
|
||||
|
||||
@PostMapping("/getErpFactoryTask")
|
||||
@Operation(summary = "定时获得erp工厂数据")
|
||||
@PreAuthorize("@ss.hasPermission('sply:erp-factory:create')")
|
||||
@PreAuthorize("@ss.hasPermission('base:erp-factory:create')")
|
||||
public CommonResult<Boolean> getErpFactoryTask() {
|
||||
erpFactoryService.callErpRfcInterface();
|
||||
return success(true);
|
||||
|
||||
@@ -4,8 +4,6 @@ import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线明细分页 Request VO")
|
||||
@Data
|
||||
public class ErpProcessDetailPageReqVO extends PageParam {
|
||||
@@ -14,7 +12,7 @@ public class ErpProcessDetailPageReqVO extends PageParam {
|
||||
private String processId;
|
||||
|
||||
@Schema(description = "工序编码")
|
||||
private BigDecimal processingNumber;
|
||||
private String processingNumber;
|
||||
|
||||
@Schema(description = "工序描述", example = "李四")
|
||||
private String processingName;
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线明细 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@@ -22,7 +20,7 @@ public class ErpProcessDetailRespVO {
|
||||
|
||||
@Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("工序编码")
|
||||
private BigDecimal processingNumber;
|
||||
private String processingNumber;
|
||||
|
||||
@Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
|
||||
@ExcelProperty("工序描述")
|
||||
|
||||
@@ -5,8 +5,6 @@ import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线明细新增/修改 Request VO")
|
||||
@Data
|
||||
public class ErpProcessDetailSaveReqVO {
|
||||
@@ -20,7 +18,7 @@ public class ErpProcessDetailSaveReqVO {
|
||||
|
||||
@Schema(description = "工序编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "工序编码不能为空")
|
||||
private BigDecimal processingNumber;
|
||||
private String processingNumber;
|
||||
|
||||
@Schema(description = "工序描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四")
|
||||
@NotEmpty(message = "工序描述不能为空")
|
||||
|
||||
@@ -4,14 +4,12 @@ import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线分页 Request VO")
|
||||
@Data
|
||||
public class ErpProcessPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "工厂编码")
|
||||
private BigDecimal factoryNumber;
|
||||
private String factoryNumber;
|
||||
|
||||
@Schema(description = "物料编码")
|
||||
private String materialNumber;
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@@ -18,7 +16,7 @@ public class ErpProcessRespVO {
|
||||
|
||||
@Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("工厂编码")
|
||||
private BigDecimal factoryNumber;
|
||||
private String factoryNumber;
|
||||
|
||||
@Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("物料编码")
|
||||
|
||||
@@ -5,8 +5,6 @@ import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP工艺路线新增/修改 Request VO")
|
||||
@Data
|
||||
public class ErpProcessSaveReqVO {
|
||||
@@ -16,7 +14,7 @@ public class ErpProcessSaveReqVO {
|
||||
|
||||
@Schema(description = "工厂编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "工厂编码不能为空")
|
||||
private BigDecimal factoryNumber;
|
||||
private String factoryNumber;
|
||||
|
||||
@Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "物料编码不能为空")
|
||||
|
||||
@@ -4,8 +4,6 @@ import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP生产版本分页 Request VO")
|
||||
@Data
|
||||
public class ErpProductiveVersionPageReqVO extends PageParam {
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP生产版本 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
|
||||
@@ -5,8 +5,6 @@ import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@Schema(description = "管理后台 - ERP生产版本新增/修改 Request VO")
|
||||
@Data
|
||||
public class ErpProductiveVersionSaveReqVO {
|
||||
|
||||
@@ -3,11 +3,6 @@ package com.zt.plat.module.erp.controller.admin.erp.vo;
|
||||
import com.zt.plat.framework.common.pojo.PageParam;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
|
||||
|
||||
@Schema(description = "管理后台 - ERP库位分页 Request VO")
|
||||
@Data
|
||||
|
||||
@@ -5,8 +5,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
@Schema(description = "管理后台 - ERP库位 Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ERP物料清单(BOM) DO
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
/**
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
/**
|
||||
* ERP工艺路线 DO
|
||||
*
|
||||
@@ -34,7 +31,7 @@ public class ErpProcessDO {
|
||||
* 工厂编码
|
||||
*/
|
||||
@TableField("FACT_NUM")
|
||||
private BigDecimal factoryNumber;
|
||||
private String factoryNumber;
|
||||
/**
|
||||
* 物料编码
|
||||
*/
|
||||
@@ -63,7 +60,7 @@ public class ErpProcessDO {
|
||||
/**
|
||||
* 计量单位
|
||||
*/
|
||||
@TableField("UOM")
|
||||
@TableField("UNT")
|
||||
private String uom;
|
||||
/**
|
||||
* 用途
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
/**
|
||||
* ERP工艺路线明细 DO
|
||||
*
|
||||
@@ -39,7 +36,7 @@ public class ErpProcessDetailDO {
|
||||
* 工序编码
|
||||
*/
|
||||
@TableField("PROC_NUM")
|
||||
private BigDecimal processingNumber;
|
||||
private String processingNumber;
|
||||
/**
|
||||
* 工序描述
|
||||
*/
|
||||
@@ -48,7 +45,7 @@ public class ErpProcessDetailDO {
|
||||
/**
|
||||
* 作业的计量单位
|
||||
*/
|
||||
@TableField("UOM")
|
||||
@TableField("UNT")
|
||||
private String uom;
|
||||
/**
|
||||
* 工作中心编号
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
/**
|
||||
* ERP生产版本 DO
|
||||
*
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package com.zt.plat.module.erp.dal.dataobject.erp;
|
||||
|
||||
import com.zt.plat.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import lombok.*;
|
||||
/**
|
||||
|
||||
@@ -5,7 +5,6 @@ import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpFactoryDO;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -11,18 +13,12 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpAssetPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpAssetRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCostcenterDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpAssetMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -11,15 +9,12 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpBomDetailMapper;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -122,6 +117,9 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService {
|
||||
Map<String, Long> existingNumbers = erpConfig.getRedisCacheMap(key);
|
||||
for (ErpBomDetailDO updateReqVO : updateReqVOS) {
|
||||
String mapKey = updateReqVO.getBomId() + "-" + updateReqVO.getErpBomId();
|
||||
if (existingNumbers.containsKey(mapKey)) {
|
||||
updateReqVO.setId(existingNumbers.get(mapKey));
|
||||
}
|
||||
if (updateReqVO.getId() == null) {
|
||||
toInsert.add(updateReqVO);
|
||||
} else {
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -11,22 +14,18 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpBomDetailDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpBomMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.http.HttpStatus;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_BOM_NOT_EXISTS;
|
||||
@@ -312,8 +311,8 @@ public class ErpBomServiceImpl implements ErpBomService {
|
||||
items.add(item);
|
||||
req.put("item", items);
|
||||
reqDTO.setReq(req);
|
||||
ResponseEntity<String> response = erpExternalApi.submitDataToErp(reqDTO);
|
||||
if (response.getStatusCode() == HttpStatus.OK) {
|
||||
HashMap<String, String> response = erpExternalApi.submitDataToErp(reqDTO);
|
||||
if (response.get("result").isEmpty()) {
|
||||
log.info("ERP数据提交成功");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -10,19 +13,13 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCostcenterDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCustomerDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpCompanyMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.erp.common.conf.ErpConfig;
|
||||
@@ -9,11 +12,7 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpContractMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -10,13 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCostcenterPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCostcenterDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCostcenterDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpCostcenterMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,14 +12,9 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCustomerDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpCustomerMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,13 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactoryPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactoryRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpFactoryDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpFactoryDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpFactoryMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -120,7 +118,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService {
|
||||
String companykey = "erp" + OftenEnum.FuncnrEnum.公司代码.getFuncnr();
|
||||
Map<String,Long> redisCache = erpConfig.getRedisCacheMap(companykey);
|
||||
if (CollUtil.isEmpty(redisCache)) {
|
||||
return;
|
||||
throw new RuntimeException("ERP公司代码缓存数据丢失,请重新同步公司代码");
|
||||
}
|
||||
for (String companyNumber : redisCache.keySet()) {
|
||||
req.put("BUKRS", companyNumber);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,13 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpInternalOrderPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpInternalOrderMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,12 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpInternalOrderDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpMaterialDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpMaterialMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -3,6 +3,9 @@ package com.zt.plat.module.erp.service.erp;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.zt.plat.module.erp.common.conf.ErpConfig;
|
||||
import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessDetailPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO;
|
||||
@@ -12,7 +15,11 @@ import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_DETAIL_NOT_EXISTS;
|
||||
@@ -29,6 +36,9 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService {
|
||||
@Resource
|
||||
private ErpProcessDetailMapper erpProcessDetailMapper;
|
||||
|
||||
@Resource
|
||||
private ErpConfig erpConfig;
|
||||
|
||||
@Override
|
||||
public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@@ -86,4 +96,96 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService {
|
||||
return erpProcessDetailMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
public void saveOrUpdateErpProcessDetail(List<ErpProcessDetailDO> updateReqVOS) {
|
||||
String key = "erpMap" + OftenEnum.FuncnrEnum.工艺路线.getFuncnr() + "Detail";
|
||||
// 1. 处理公司数据,区分新增和更新
|
||||
ProcessingResult result = processData(updateReqVOS, key);
|
||||
|
||||
// 2. 批量保存数据
|
||||
saveData(result);
|
||||
}
|
||||
|
||||
private ProcessingResult processData(List<ErpProcessDetailDO> updateReqVOS, String key) {
|
||||
if (erpConfig.getRedisCacheMap(key).isEmpty()) {
|
||||
initializeMap(key);
|
||||
}
|
||||
List<ErpProcessDetailDO> toUpdate = new ArrayList<>();
|
||||
List<ErpProcessDetailDO> toInsert = new ArrayList<>();
|
||||
|
||||
List<String> dataArrayNumbers = new ArrayList<>();
|
||||
Map<String, Long> existingNumbers = erpConfig.getRedisCacheMap(key);
|
||||
for (ErpProcessDetailDO updateReqVO : updateReqVOS) {
|
||||
String mapKey = updateReqVO.getProcessId() + "-" + updateReqVO.getProcessingNumber()+"-"+updateReqVO.getProcessingName();
|
||||
if (existingNumbers.containsKey(mapKey)) {
|
||||
updateReqVO.setId(existingNumbers.get(mapKey));
|
||||
}
|
||||
if (updateReqVO.getId() == null) {
|
||||
toInsert.add(updateReqVO);
|
||||
} else {
|
||||
toUpdate.add(updateReqVO);
|
||||
}
|
||||
dataArrayNumbers.add(mapKey);
|
||||
}
|
||||
|
||||
Map<String, Long> deleteNumbers = new HashMap<>();
|
||||
for (Map.Entry<String, Long> entry : existingNumbers.entrySet()) {
|
||||
if (!dataArrayNumbers.contains(entry.getKey())) {
|
||||
deleteNumbers.put(entry.getKey(), entry.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(toUpdate, toInsert, deleteNumbers, key);
|
||||
}
|
||||
|
||||
private void saveData(ProcessingResult result) {
|
||||
// 批量新增和更新
|
||||
if (!result.toInsert.isEmpty()) {
|
||||
erpProcessDetailMapper.insertBatch(result.toInsert);
|
||||
// 批量查询刚插入数据的id,提升效率
|
||||
List<ErpProcessDetailDO> insertedRecords = erpProcessDetailMapper.selectList(
|
||||
new LambdaQueryWrapperX<ErpProcessDetailDO>()
|
||||
.in(ErpProcessDetailDO::getProcessId, result.toInsert.stream().map(ErpProcessDetailDO::getProcessId).distinct().collect(Collectors.toList()))
|
||||
.in(ErpProcessDetailDO::getProcessingNumber, result.toInsert.stream().map(ErpProcessDetailDO::getProcessingNumber).distinct().collect(Collectors.toList()))
|
||||
.in(ErpProcessDetailDO::getProcessingName, result.toInsert.stream().map(ErpProcessDetailDO::getProcessingName).distinct().collect(Collectors.toList()))
|
||||
);
|
||||
Map<String, Long> numberIdMap = insertedRecords.stream()
|
||||
.collect(Collectors.toMap(asset -> asset.getProcessId() + "-" + asset.getProcessingNumber()+"-"+asset.getProcessingName(), ErpProcessDetailDO::getId));
|
||||
erpConfig.addRedisCacheMap(result.key, numberIdMap);
|
||||
}
|
||||
if (!result.toUpdate.isEmpty()) {
|
||||
erpProcessDetailMapper.updateBatch(result.toUpdate);
|
||||
}
|
||||
if (!result.deleteNumbers.isEmpty()) {
|
||||
// 使用流式处理和批处理优化删除逻辑
|
||||
List<Long> idsToDelete = new ArrayList<>(result.deleteNumbers.values());
|
||||
if (!idsToDelete.isEmpty()) {
|
||||
erpProcessDetailMapper.deleteByIds(idsToDelete);
|
||||
}
|
||||
erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet()));
|
||||
}
|
||||
}
|
||||
|
||||
private static class ProcessingResult {
|
||||
private final List<ErpProcessDetailDO> toUpdate;
|
||||
private final List<ErpProcessDetailDO> toInsert;
|
||||
private final Map<String, Long> deleteNumbers;
|
||||
private final String key;
|
||||
|
||||
public ProcessingResult(List<ErpProcessDetailDO> toUpdate, List<ErpProcessDetailDO> toInsert, Map<String, Long> deleteNumbers, String key) {
|
||||
this.toUpdate = toUpdate;
|
||||
this.toInsert = toInsert;
|
||||
this.deleteNumbers = deleteNumbers;
|
||||
this.key = key;
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeMap(String key) {
|
||||
List<ErpProcessDetailDO> assets = erpProcessDetailMapper.selectList(new LambdaQueryWrapperX<ErpProcessDetailDO>());
|
||||
Map<String, Long> existingNumbers = new HashMap<>();
|
||||
for (ErpProcessDetailDO asset : assets) {
|
||||
String mapKey = asset.getProcessId() + "-" + asset.getProcessingNumber()+"-"+asset.getProcessingName();
|
||||
existingNumbers.put(mapKey, asset.getId());
|
||||
}
|
||||
erpConfig.addRedisCacheMap(key, existingNumbers);
|
||||
}
|
||||
}
|
||||
@@ -1,25 +1,27 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.zt.plat.module.erp.common.conf.ErpConfig;
|
||||
import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProcessDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProcessDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProcessDetailDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpProcessMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -42,6 +44,10 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
@Resource
|
||||
private ErpConfig erpConfig;
|
||||
|
||||
@Resource
|
||||
private ErpProcessDetailServiceImpl processDetailService;
|
||||
|
||||
|
||||
@Override
|
||||
public ErpProcessRespVO createErpProcess(ErpProcessSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
@@ -69,12 +75,12 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteErpProcessListByIds(List<Long> ids) {
|
||||
public void deleteErpProcessListByIds(List<Long> ids) {
|
||||
// 校验存在
|
||||
validateErpProcessExists(ids);
|
||||
// 删除
|
||||
erpProcessMapper.deleteByIds(ids);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateErpProcessExists(List<Long> ids) {
|
||||
List<ErpProcessDO> list = erpProcessMapper.selectByIds(ids);
|
||||
@@ -104,16 +110,32 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
@XxlJob("getErpProcessTask")
|
||||
public void callErpRfcInterface() {
|
||||
try {
|
||||
OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.公司代码;
|
||||
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.工艺路线;
|
||||
String funcnr = funcnrEnum.getFuncnr();
|
||||
String key = "erpMap" + funcnr;
|
||||
if (erpConfig.getRedisCacheMap(key).isEmpty()) {
|
||||
initializeMap(key);
|
||||
}
|
||||
Map<String, Object> req = new HashMap<>();
|
||||
JSONArray dataArrayALL = new JSONArray();
|
||||
String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr();
|
||||
Map<String, Long> redisCache = erpConfig.getRedisCacheMap(factKey);
|
||||
if (CollUtil.isEmpty(redisCache)) {
|
||||
throw exception(ERP_PROCESS_NOT_EXISTS);
|
||||
}
|
||||
// 1. 调用ERP接口获取数据
|
||||
JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null);
|
||||
if (dataArray == null || dataArray.isEmpty()) {
|
||||
return;
|
||||
for (String factoryNumber : redisCache.keySet()) {
|
||||
req.put("WERKS", factoryNumber);
|
||||
// 1. 调用ERP接口获取数据
|
||||
JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req);
|
||||
if (dataArray == null || dataArray.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
dataArrayALL.addAll(dataArray);
|
||||
}
|
||||
|
||||
// 2. 处理公司数据,区分新增和更新
|
||||
ProcessingResult result = processData(dataArray,funcnrEnum);
|
||||
ProcessingResult result = processData(dataArrayALL, funcnrEnum);
|
||||
|
||||
// 3. 批量保存数据
|
||||
saveData(result);
|
||||
@@ -127,35 +149,69 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
/**
|
||||
* 处理数据,区分新增和更新
|
||||
*/
|
||||
private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) {
|
||||
String key = "erp" + funcnr.getFuncnr();
|
||||
Map<String,List<String>> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey());
|
||||
List<String> allnumbers = numbers.get("all");
|
||||
List<String> comnumbers = numbers.get("com");
|
||||
private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) {
|
||||
String key = "erpMap" + funcnrEnum.getFuncnr();
|
||||
Map<String, Long> numbers = erpConfig.getRedisCacheMap(key);
|
||||
List<ErpProcessDO> toUpdate = new ArrayList<>();
|
||||
List<ErpProcessDO> toInsert = new ArrayList<>();
|
||||
|
||||
List<ErpProcessDetailDO> erpProcessDetailDOList = new ArrayList<>();
|
||||
Map<String, Long> addnumbers = new HashMap<>();
|
||||
List<String> dataArrayNumbers = new ArrayList<>();
|
||||
|
||||
for (int i = 0; i < dataArray.size(); i++) {
|
||||
JSONObject dataJson = dataArray.getJSONObject(i);
|
||||
if (dataJson != null) {
|
||||
String number = dataJson.getString("BUKRS").trim();
|
||||
if (number != null) {
|
||||
ErpProcessDO DO = new ErpProcessDO();
|
||||
// DO.setName(dataJson.getString("BUTXT"));
|
||||
// DO.setNumber(number);
|
||||
// DO.setCurrency(dataJson.getString("WAERS"));
|
||||
if (comnumbers.contains(number)) {
|
||||
// 更新
|
||||
toUpdate.add(DO);
|
||||
} else {
|
||||
// 新增
|
||||
toInsert.add(DO);
|
||||
ErpProcessDO DO = new ErpProcessDO();
|
||||
DO.setFactoryNumber(dataJson.getString("WERKS"));
|
||||
DO.setMaterialNumber(dataJson.getString("MATNR"));
|
||||
DO.setMaterialName(dataJson.getString("MAKTX"));
|
||||
DO.setBlineGroup(dataJson.getString("PLNAL"));
|
||||
DO.setGroupCount(dataJson.getLong("PLNNR"));
|
||||
DO.setBlineDescription(dataJson.getString("KTEXT"));
|
||||
DO.setUom(dataJson.getString("PLNME"));
|
||||
DO.setUseDescription(dataJson.getString("VERWE"));
|
||||
DO.setStatus(dataJson.getString("STATU"));
|
||||
String number = DO.getFactoryNumber() + "-" + DO.getMaterialNumber() + "-" + DO.getBlineGroup();
|
||||
dataArrayNumbers.add(number);
|
||||
if (numbers.get(number) != null) {
|
||||
// 更新
|
||||
toUpdate.add(DO);
|
||||
} else {
|
||||
// 新增
|
||||
erpProcessMapper.insert(DO);
|
||||
addnumbers.put(number, DO.getId());
|
||||
}
|
||||
|
||||
JSONArray dataJsonItem = dataJson.getJSONArray("ITEM");
|
||||
if (dataJsonItem != null && !dataJsonItem.isEmpty()) {
|
||||
for (int j = 0; j < dataJsonItem.size(); j++) {
|
||||
JSONObject itemJson = dataJsonItem.getJSONObject(j);
|
||||
ErpProcessDetailDO detailDO = new ErpProcessDetailDO();
|
||||
detailDO.setProcessId(String.valueOf(DO.getId()));
|
||||
String processingNumber = itemJson.getString("VORNR");
|
||||
if (processingNumber != null) {
|
||||
processingNumber = processingNumber.replaceFirst("^0+(?!$)", "");
|
||||
}
|
||||
detailDO.setProcessingNumber(processingNumber);
|
||||
detailDO.setProcessingName(itemJson.getString("LTXA1"));
|
||||
detailDO.setUom(itemJson.getString("MEINH"));
|
||||
detailDO.setWorkCenterNumber(itemJson.getString("ARBPL"));
|
||||
detailDO.setWorkCenterName(itemJson.getString("KTEXT1"));
|
||||
erpProcessDetailDOList.add(detailDO);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(toUpdate, toInsert,key,allnumbers);
|
||||
// 识别需要删除的数据
|
||||
List<String> deleteNumbers = new ArrayList<>();
|
||||
for (String number : numbers.keySet()) {
|
||||
if (!dataArrayNumbers.contains(number)) {
|
||||
deleteNumbers.add(number);
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(toUpdate, key, addnumbers, deleteNumbers, erpProcessDetailDOList);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -163,13 +219,22 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
*/
|
||||
private void saveData(ProcessingResult result) {
|
||||
// 批量新增和更新
|
||||
if (!result.toInsert.isEmpty()) {
|
||||
erpProcessMapper.insertBatch(result.toInsert);
|
||||
}
|
||||
if (!result.toUpdate.isEmpty()) {
|
||||
erpProcessMapper.updateBatch(result.toUpdate);
|
||||
}
|
||||
erpConfig.updateRedisCache(result.key,result.allnumbers);
|
||||
// 保存或更新BOM详情
|
||||
if (!result.erpProcessDetailDOList.isEmpty()) {
|
||||
processDetailService.saveOrUpdateErpProcessDetail(result.erpProcessDetailDOList);
|
||||
}
|
||||
|
||||
// 更新Redis缓存
|
||||
if (!result.addnumbers.isEmpty()) {
|
||||
erpConfig.addRedisCacheMap(result.key, result.addnumbers);
|
||||
}
|
||||
|
||||
if (!result.deleteNumbers.isEmpty()) {
|
||||
erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,15 +242,28 @@ public class ErpProcessServiceImpl implements ErpProcessService {
|
||||
*/
|
||||
private static class ProcessingResult {
|
||||
private final List<ErpProcessDO> toUpdate;
|
||||
private final List<ErpProcessDO> toInsert;
|
||||
private final String key;
|
||||
private final List<String> allnumbers;
|
||||
private final Map<String, Long> addnumbers;
|
||||
private final List<String> deleteNumbers;
|
||||
private final List<ErpProcessDetailDO> erpProcessDetailDOList;
|
||||
|
||||
public ProcessingResult(List<ErpProcessDO> toUpdate, List<ErpProcessDO> toInsert,String key,List<String> allnumbers) {
|
||||
public ProcessingResult(List<ErpProcessDO> toUpdate, String key, Map<String, Long> addnumbers,
|
||||
List<String> deleteNumbers, List<ErpProcessDetailDO> erpProcessDetailDOList) {
|
||||
this.toUpdate = toUpdate;
|
||||
this.toInsert = toInsert;
|
||||
this.key = key;
|
||||
this.allnumbers = allnumbers;
|
||||
this.addnumbers = addnumbers;
|
||||
this.deleteNumbers = deleteNumbers;
|
||||
this.erpProcessDetailDOList = erpProcessDetailDOList;
|
||||
}
|
||||
}
|
||||
|
||||
private void initializeMap(String key) {
|
||||
List<ErpProcessDO> bomList = erpProcessMapper.selectList(new LambdaQueryWrapperX<ErpProcessDO>());
|
||||
Map<String, Long> existingNumbers = new HashMap<>();
|
||||
for (ErpProcessDO bom : bomList) {
|
||||
String mapKey = bom.getFactoryNumber() + "-" + bom.getMaterialNumber() + "-" + bom.getBlineGroup();
|
||||
existingNumbers.put(mapKey, bom.getId());
|
||||
}
|
||||
erpConfig.addRedisCacheMap(key, existingNumbers);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.module.erp.common.conf.ErpConfig;
|
||||
@@ -9,17 +12,15 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderPageReqV
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpProductiveOrderMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -71,12 +72,12 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteErpProductiveOrderListByIds(List<Long> ids) {
|
||||
public void deleteErpProductiveOrderListByIds(List<Long> ids) {
|
||||
// 校验存在
|
||||
validateErpProductiveOrderExists(ids);
|
||||
// 删除
|
||||
erpProductiveOrderMapper.deleteByIds(ids);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateErpProductiveOrderExists(List<Long> ids) {
|
||||
List<ErpProductiveOrderDO> list = erpProductiveOrderMapper.selectByIds(ids);
|
||||
@@ -98,7 +99,80 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
|
||||
@Override
|
||||
public PageResult<ErpProductiveOrderDO> getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) {
|
||||
return erpProductiveOrderMapper.selectPage(pageReqVO);
|
||||
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单;
|
||||
String funcnr = funcnrEnum.getFuncnr();
|
||||
Map<String, Object> req = new HashMap<>();
|
||||
|
||||
// 构建查询参数
|
||||
req.put("BUKRS", pageReqVO.getCompanyNumber());
|
||||
req.put("WERKS", pageReqVO.getFactoryNumber());
|
||||
|
||||
// 处理日期参数
|
||||
if (pageReqVO.getStartDate() != null) {
|
||||
req.put("BEGDA", pageReqVO.getStartDate()[0].format(DateTimeFormatter.ofPattern("yyyyMMdd")));
|
||||
}
|
||||
if (pageReqVO.getEndDate() != null) {
|
||||
req.put("ENDDA", pageReqVO.getEndDate()[0].format(DateTimeFormatter.ofPattern("yyyyMMdd")));
|
||||
}
|
||||
|
||||
// 调用ERP接口获取数据
|
||||
JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req);
|
||||
if (dataArray == null || dataArray.isEmpty()) {
|
||||
// 返回空结果而不是抛出异常
|
||||
return new PageResult<>(new ArrayList<>(), 0L);
|
||||
}
|
||||
|
||||
List<ErpProductiveOrderDO> list = new ArrayList<>();
|
||||
for (int i = 0; i < dataArray.size(); i++) {
|
||||
JSONObject dataJson = dataArray.getJSONObject(i);
|
||||
if (dataJson != null) {
|
||||
ErpProductiveOrderDO orderDO = new ErpProductiveOrderDO();
|
||||
|
||||
// 基本信息
|
||||
orderDO.setCompanyNumber(dataJson.getString("BUKRS"));
|
||||
orderDO.setFactoryNumber(dataJson.getString("WERKS").trim());
|
||||
orderDO.setFactoryName(dataJson.getString("NAME1"));
|
||||
orderDO.setOrderNumber(dataJson.getString("AUFNR"));
|
||||
|
||||
// 日期处理
|
||||
String plannedStartDate = dataJson.getString("GLTRP");
|
||||
String actualStartDate = dataJson.getString("GSTRP");
|
||||
|
||||
if (plannedStartDate != null && !plannedStartDate.equals("0000-00-00")) {
|
||||
try {
|
||||
orderDO.setStartDate(LocalDateTime.parse(plannedStartDate));
|
||||
} catch (Exception e) {
|
||||
// 忽略日期解析错误
|
||||
}
|
||||
}
|
||||
|
||||
if (actualStartDate != null && !actualStartDate.equals("0000-00-00")) {
|
||||
try {
|
||||
orderDO.setEndDate(LocalDateTime.parse(actualStartDate));
|
||||
} catch (Exception e) {
|
||||
// 忽略日期解析错误
|
||||
}
|
||||
}
|
||||
|
||||
// 物料和工艺信息
|
||||
orderDO.setMainMaterialNumber(dataJson.getString("STLBEZ"));
|
||||
orderDO.setUnit(dataJson.getString("GMEIN"));
|
||||
orderDO.setMaterialDescription(dataJson.getString("MAKTX"));
|
||||
orderDO.setProcessingList(dataJson.getString("L_AFVC"));
|
||||
orderDO.setProcessingNumber(dataJson.getString("VORNR"));
|
||||
orderDO.setProcessingDescription(dataJson.getString("LTXA1"));
|
||||
orderDO.setObjectNumber(dataJson.getString("OBJID"));
|
||||
orderDO.setWorkCenterNumber(dataJson.getString("ARBPL"));
|
||||
orderDO.setWorkCenterDescription(dataJson.getString("KTEXT"));
|
||||
orderDO.setCostcenterNumber(dataJson.getString("KOSTL"));
|
||||
orderDO.setCostcenterName(dataJson.getString("TEXT_C"));
|
||||
|
||||
list.add(orderDO);
|
||||
}
|
||||
}
|
||||
|
||||
// 返回分页结果
|
||||
return new PageResult<>(list, (long) list.size());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -106,7 +180,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
@XxlJob("getErpProductiveOrderTask")
|
||||
public void callErpRfcInterface() {
|
||||
try {
|
||||
OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.生产订单;
|
||||
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单;
|
||||
String funcnr = funcnrEnum.getFuncnr();
|
||||
|
||||
Map<String, Object> req = new HashMap<>();
|
||||
@@ -135,7 +209,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
}
|
||||
|
||||
// 2. 处理公司数据,区分新增和更新
|
||||
ProcessingResult result = processData(dataArrayALL,funcnrEnum);
|
||||
ProcessingResult result = processData(dataArrayALL, funcnrEnum);
|
||||
|
||||
// 3. 批量保存数据
|
||||
saveData(result);
|
||||
@@ -151,7 +225,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
*/
|
||||
private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) {
|
||||
String key = "erp" + funcnr.getFuncnr();
|
||||
Map<String,List<String>> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey());
|
||||
Map<String, List<String>> numbers = erpConfig.numbers(dataArray, key, funcnr.getDatakey());
|
||||
List<String> allnumbers = numbers.get("all");
|
||||
List<String> comnumbers = numbers.get("com");
|
||||
List<ErpProductiveOrderDO> toUpdate = new ArrayList<>();
|
||||
@@ -177,7 +251,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
}
|
||||
}
|
||||
|
||||
return new ProcessingResult(toUpdate, toInsert,key,allnumbers);
|
||||
return new ProcessingResult(toUpdate, toInsert, key, allnumbers);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -191,7 +265,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
if (!result.toUpdate.isEmpty()) {
|
||||
erpProductiveOrderMapper.updateBatch(result.toUpdate);
|
||||
}
|
||||
erpConfig.updateRedisCache(result.key,result.allnumbers);
|
||||
erpConfig.updateRedisCache(result.key, result.allnumbers);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -203,7 +277,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
||||
private final String key;
|
||||
private final List<String> allnumbers;
|
||||
|
||||
public ProcessingResult(List<ErpProductiveOrderDO> toUpdate, List<ErpProductiveOrderDO> toInsert,String key,List<String> allnumbers) {
|
||||
public ProcessingResult(List<ErpProductiveOrderDO> toUpdate, List<ErpProductiveOrderDO> toInsert, String key, List<String> allnumbers) {
|
||||
this.toUpdate = toUpdate;
|
||||
this.toInsert = toInsert;
|
||||
this.key = key;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,14 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpAssetDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpProductiveVersionMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,14 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpPurchaseOrganizationMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,13 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationPageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpPurchaseOrganizationDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpSalesOrganizationDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpSalesOrganizationMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package com.zt.plat.module.erp.service.erp;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import com.zt.plat.framework.common.pojo.PageResult;
|
||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
@@ -9,12 +12,8 @@ import com.zt.plat.module.erp.common.enums.OftenEnum;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO;
|
||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.*;
|
||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO;
|
||||
import com.zt.plat.module.erp.dal.mysql.erp.ErpWarehouseMapper;
|
||||
import com.alibaba.fastjson.JSONArray;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
Reference in New Issue
Block a user