Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -10,16 +10,17 @@ import com.zt.plat.framework.common.exception.ErrorCode;
|
|||||||
public interface ErrorCodeConstants {
|
public interface ErrorCodeConstants {
|
||||||
|
|
||||||
// ========== 示例模块 1-001-000-000 ==========
|
// ========== 示例模块 1-001-000-000 ==========
|
||||||
ErrorCode MATERIAL_OTHER_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode MATERIAL_OTHER_NOT_EXISTS = new ErrorCode(1_001_000_001, "物料不存在");
|
||||||
ErrorCode ELEMENT_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode ELEMENT_NOT_EXISTS = new ErrorCode(1_001_000_001, "金属元素不存在");
|
||||||
ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode CONTACT_NOT_EXISTS = new ErrorCode(1_001_000_001, "联系人不存在");
|
||||||
ErrorCode ACCOUNT_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode ACCOUNT_NOT_EXISTS = new ErrorCode(1_001_000_001, "账户条款不存在");
|
||||||
ErrorCode MATERIAL_DESTROY_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode MATERIAL_DESTROY_NOT_EXISTS = new ErrorCode(1_001_000_001, "物料回收率不存在");
|
||||||
ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode MATERIAL_INFOMATION_NOT_EXISTS = new ErrorCode(1_001_000_001, "物料信息不存在");
|
||||||
ErrorCode COMPANY_RELATIVITY_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode COMPANY_RELATIVITY_NOT_EXISTS = new ErrorCode(1_001_000_001, "公司关系不存在");
|
||||||
ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_001, "库位不存在");
|
||||||
ErrorCode FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode WAREHOUSE_CODE_EXISTS = new ErrorCode(1_001_000_002, "库位编码已存在");
|
||||||
ErrorCode TAX_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在");
|
ErrorCode FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_001, "工厂不存在");
|
||||||
|
ErrorCode TAX_NOT_EXISTS = new ErrorCode(1_001_000_001, "公司关系不存在");
|
||||||
|
|
||||||
|
|
||||||
ErrorCode BUSINESS_RULE_NOT_EXISTS = new ErrorCode(1_027_100_001, "规则模型不存在");
|
ErrorCode BUSINESS_RULE_NOT_EXISTS = new ErrorCode(1_027_100_001, "规则模型不存在");
|
||||||
|
|||||||
@@ -33,4 +33,10 @@ public interface WarehouseMapper extends BaseMapperX<WarehouseDO> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String selectMaxCode();
|
String selectMaxCode();
|
||||||
|
|
||||||
|
default WarehouseDO selectByCode(String code){
|
||||||
|
return selectOne(new LambdaQueryWrapperX<WarehouseDO>()
|
||||||
|
.eq(WarehouseDO::getCoding, code)
|
||||||
|
.last("LIMIT 1"));
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -16,6 +16,7 @@ import org.springframework.validation.annotation.Validated;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
|
import static com.zt.plat.module.base.enums.ErrorCodeConstants.WAREHOUSE_CODE_EXISTS;
|
||||||
import static com.zt.plat.module.base.enums.ErrorCodeConstants.WAREHOUSE_NOT_EXISTS;
|
import static com.zt.plat.module.base.enums.ErrorCodeConstants.WAREHOUSE_NOT_EXISTS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,16 +36,17 @@ public class WarehouseServiceImpl implements WarehouseService {
|
|||||||
// 插入
|
// 插入
|
||||||
WarehouseDO warehouse = BeanUtils.toBean(createReqVO, WarehouseDO.class);
|
WarehouseDO warehouse = BeanUtils.toBean(createReqVO, WarehouseDO.class);
|
||||||
// 库位编码自动生成,格式 KW-0001,依次新增
|
// 库位编码自动生成,格式 KW-0001,依次新增
|
||||||
String maxCode = warehouseMapper.selectMaxCode();
|
// String maxCode = warehouseMapper.selectMaxCode();
|
||||||
if (maxCode == null) {
|
// if (maxCode == null) {
|
||||||
warehouse.setCoding("KW-0001");
|
// warehouse.setCoding("KW-0001");
|
||||||
} else {
|
// } else {
|
||||||
String prefix = "KW-";
|
// String prefix = "KW-";
|
||||||
String numberPart = maxCode.substring(prefix.length());
|
// String numberPart = maxCode.substring(prefix.length());
|
||||||
int nextNumber = Integer.parseInt(numberPart) + 1;
|
// int nextNumber = Integer.parseInt(numberPart) + 1;
|
||||||
String nextCode = prefix + String.format("%04d", nextNumber);
|
// String nextCode = prefix + String.format("%04d", nextNumber);
|
||||||
warehouse.setCoding(nextCode);
|
// warehouse.setCoding(nextCode);
|
||||||
}
|
// }
|
||||||
|
validateWarehouseCodeExists(warehouse.getCoding());
|
||||||
warehouseMapper.insert(warehouse);
|
warehouseMapper.insert(warehouse);
|
||||||
// 返回
|
// 返回
|
||||||
return BeanUtils.toBean(warehouse, WarehouseRespVO.class);
|
return BeanUtils.toBean(warehouse, WarehouseRespVO.class);
|
||||||
@@ -68,12 +70,12 @@ public class WarehouseServiceImpl implements WarehouseService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteWarehouseListByIds(List<Long> ids) {
|
public void deleteWarehouseListByIds(List<Long> ids) {
|
||||||
// 校验存在
|
// 校验存在
|
||||||
validateWarehouseExists(ids);
|
validateWarehouseExists(ids);
|
||||||
// 删除
|
// 删除
|
||||||
warehouseMapper.deleteByIds(ids);
|
warehouseMapper.deleteByIds(ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateWarehouseExists(List<Long> ids) {
|
private void validateWarehouseExists(List<Long> ids) {
|
||||||
List<WarehouseDO> list = warehouseMapper.selectByIds(ids);
|
List<WarehouseDO> list = warehouseMapper.selectByIds(ids);
|
||||||
@@ -88,6 +90,13 @@ public class WarehouseServiceImpl implements WarehouseService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void validateWarehouseCodeExists(String code) {
|
||||||
|
WarehouseDO warehouse = warehouseMapper.selectByCode(code);
|
||||||
|
if (warehouse != null) {
|
||||||
|
throw exception(WAREHOUSE_CODE_EXISTS);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WarehouseDO getWarehouse(Long id) {
|
public WarehouseDO getWarehouse(Long id) {
|
||||||
return warehouseMapper.selectById(id);
|
return warehouseMapper.selectById(id);
|
||||||
@@ -101,7 +110,7 @@ public class WarehouseServiceImpl implements WarehouseService {
|
|||||||
@Override
|
@Override
|
||||||
public void enableWarehouseList(List<WarehouseRespVO> saveReqVOS) {
|
public void enableWarehouseList(List<WarehouseRespVO> saveReqVOS) {
|
||||||
List<WarehouseDO> updateObj = BeanUtils.toBean(saveReqVOS, WarehouseDO.class);
|
List<WarehouseDO> updateObj = BeanUtils.toBean(saveReqVOS, WarehouseDO.class);
|
||||||
List<BatchResult> count = warehouseMapper.updateById(updateObj);
|
List<BatchResult> count = warehouseMapper.updateById(updateObj);
|
||||||
if (CollUtil.isEmpty(count)) {
|
if (CollUtil.isEmpty(count)) {
|
||||||
throw exception(WAREHOUSE_NOT_EXISTS);
|
throw exception(WAREHOUSE_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,8 +6,24 @@ import lombok.Data;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
public class IntContractPageReq extends PageParam {
|
public class IntContractPageReq extends PageParam {
|
||||||
@Schema(description = "合同编号")
|
|
||||||
private String contractCode;
|
// 合同名称:模糊搜索
|
||||||
@Schema(description = "合同名称")
|
@Schema(description = "合同名称")
|
||||||
private String contractName;
|
private String contractName;
|
||||||
|
// 合同有效期起:日期选择
|
||||||
|
@Schema(description = "合同有效期起")
|
||||||
|
private String contractStartDate;
|
||||||
|
// 合同有效期止:日期选择
|
||||||
|
@Schema(description = "合同有效期止")
|
||||||
|
private String contractEndDate;
|
||||||
|
// 合同版本号:精确搜索 TODO 不确定
|
||||||
|
// 签约地:模糊搜索
|
||||||
|
@Schema(description = "签约地")
|
||||||
|
private String signSite;
|
||||||
|
// 经办人姓名:模糊搜索
|
||||||
|
@Schema(description = "经办人姓名")
|
||||||
|
private String createdUserName;
|
||||||
|
// 签约日期: 模糊搜索
|
||||||
|
@Schema(description = "签约日期")
|
||||||
|
private String signDate;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -42,12 +42,13 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
import java.util.stream.Collectors;
|
||||||
import java.util.Iterator;
|
import java.util.stream.Stream;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
import static com.zt.plat.framework.common.pojo.CommonResult.success;
|
||||||
@@ -251,6 +252,12 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
return success(true);
|
return success(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国贸合同信息未映射合同主信息字段保存到动态条款
|
||||||
|
*
|
||||||
|
* @param reqVO 国贸合同信息
|
||||||
|
* @param contractId 合同主信息ID
|
||||||
|
*/
|
||||||
private void saveIntContractFields(IntContract reqVO, Long contractId) {
|
private void saveIntContractFields(IntContract reqVO, Long contractId) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -371,10 +378,28 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
DictEnum.SPLY_BSN_TP_03BX.getCode()
|
DictEnum.SPLY_BSN_TP_03BX.getCode()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// 合同编号
|
// 合同名称:模糊搜索
|
||||||
queryWrapperX.likeIfPresent(ContractMainDO::getContractPaperNumber, pageReq.getContractCode());
|
|
||||||
// 合同名称
|
|
||||||
queryWrapperX.likeIfPresent(ContractMainDO::getContractName, pageReq.getContractName());
|
queryWrapperX.likeIfPresent(ContractMainDO::getContractName, pageReq.getContractName());
|
||||||
|
// 合同有效期起:日期选择
|
||||||
|
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
|
||||||
|
queryWrapperX.geIfPresent(ContractMainDO::getStartDate,
|
||||||
|
pageReq.getContractStartDate() != null
|
||||||
|
? LocalDateTime.of(LocalDate.parse(pageReq.getContractStartDate(), formatter), LocalTime.MIN)
|
||||||
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||||
|
: null);
|
||||||
|
// 合同有效期止:日期选择
|
||||||
|
queryWrapperX.leIfPresent(ContractMainDO::getEndDate,
|
||||||
|
pageReq.getContractEndDate() != null
|
||||||
|
? LocalDateTime.of(LocalDate.parse(pageReq.getContractEndDate(), formatter), LocalTime.MAX)
|
||||||
|
.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))
|
||||||
|
: null);
|
||||||
|
// 签约地:模糊搜索
|
||||||
|
queryWrapperX.likeIfPresent(ContractMainDO::getSignPlace, pageReq.getSignSite());
|
||||||
|
// 经办人姓名:模糊搜索
|
||||||
|
// 签约日期: 模糊搜索
|
||||||
|
if (pageReq.getSignDate() != null) {
|
||||||
|
queryWrapperX.apply("to_char(SGN_DT, 'yyyymmdd') like concat('%',{0},'%')", pageReq.getSignDate());
|
||||||
|
}
|
||||||
|
|
||||||
// 查询
|
// 查询
|
||||||
PageResult<ContractMainDO> pageResult = contractMainMapper.selectPage(pageReq, queryWrapperX);
|
PageResult<ContractMainDO> pageResult = contractMainMapper.selectPage(pageReq, queryWrapperX);
|
||||||
@@ -388,94 +413,64 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
|
|
||||||
// 遍历查询结果,设置返回数据列表
|
// 遍历查询结果,设置返回数据列表
|
||||||
if (pageResult.getTotal() > 0) {
|
if (pageResult.getTotal() > 0) {
|
||||||
pageResult.getList().forEach(contractMainDO -> {
|
pageResult.getList().forEach(contractMainDO
|
||||||
|
-> resultList.add(getIntContractByMainId(contractMainDO.getId())));
|
||||||
// 合同ID
|
|
||||||
Long mainDOId = contractMainDO.getId();
|
|
||||||
|
|
||||||
// 合同主信息
|
|
||||||
List<ContractOtherFieldDO> mainFields = contractOtherFieldMapper.selectList(
|
|
||||||
new LambdaQueryWrapperX<ContractOtherFieldDO>()
|
|
||||||
.eq(ContractOtherFieldDO::getContractMainId, mainDOId)
|
|
||||||
.isNull(ContractOtherFieldDO::getRelativityId)
|
|
||||||
);
|
|
||||||
JSONObject resultJson = new JSONObject();
|
|
||||||
mainFields.forEach(field
|
|
||||||
-> resultJson.putOnce(field.getFieldNumber(), field.getFieldValue()));
|
|
||||||
|
|
||||||
// 附件清单列表
|
|
||||||
List<ContractOtherFormDO> attachForms = contractOtherFormMapper.selectList(
|
|
||||||
new LambdaQueryWrapperX<ContractOtherFormDO>()
|
|
||||||
.eq(ContractOtherFormDO::getContractMainId, mainDOId)
|
|
||||||
.eq(ContractOtherFormDO::getFormNumber, "attachList")
|
|
||||||
);
|
|
||||||
if (attachForms != null && !attachForms.isEmpty()) {
|
|
||||||
JSONArray jsonArray = new JSONArray();
|
|
||||||
attachForms.forEach(form -> {
|
|
||||||
ContractOtherFieldDO fieldDO = contractOtherFieldMapper.selectOne(
|
|
||||||
new LambdaQueryWrapperX<ContractOtherFieldDO>()
|
|
||||||
.eq(ContractOtherFieldDO::getContractMainId, mainDOId)
|
|
||||||
.eq(ContractOtherFieldDO::getRelativityId, form.getId())
|
|
||||||
);
|
|
||||||
if (fieldDO != null) {
|
|
||||||
jsonArray.add(fieldDO.getFieldValue());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (!jsonArray.isEmpty()) {
|
|
||||||
resultJson.putOnce("attachList", jsonArray);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 客商信息
|
|
||||||
resultJson.putOnce("partnerList", getQueryFieldJsonArray(mainDOId, "partnerList"));
|
|
||||||
// 收发港/站点
|
|
||||||
resultJson.putOnce("goodsSiteList", getQueryFieldJsonArray(mainDOId, "goodsSiteList"));
|
|
||||||
// 货物装卸要求
|
|
||||||
resultJson.putOnce("loadingRequirementsList", getQueryFieldJsonArray(mainDOId, "loadingRequirementsList"));
|
|
||||||
// 收付款账号
|
|
||||||
resultJson.putOnce("accountList", getQueryFieldJsonArray(mainDOId, "accountList"));
|
|
||||||
// 费用明细
|
|
||||||
resultJson.putOnce("freightList", getQueryFieldJsonArray(mainDOId, "freightList"));
|
|
||||||
// 服务费用项目
|
|
||||||
resultJson.putOnce("serviceFeeList", getQueryFieldJsonArray(mainDOId, "serviceFeeList"));
|
|
||||||
// 仓库明细
|
|
||||||
resultJson.putOnce("storgeList", getQueryFieldJsonArray(mainDOId, "storgeList"));
|
|
||||||
// 接货地址
|
|
||||||
resultJson.putOnce("receivingAddrList", getQueryFieldJsonArray(mainDOId, "receivingAddrList"));
|
|
||||||
|
|
||||||
// 添加到结果集
|
|
||||||
resultList.add(resultJson.toBean(IntContract.class));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return success(result);
|
return success(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
private JSONArray getQueryFieldJsonArray(Long mainDOId, String fieldName) {
|
/**
|
||||||
|
* 获取国贸合同信息通过合同主信息ID
|
||||||
JSONArray jsonArray = new JSONArray();
|
*
|
||||||
List<ContractOtherFormDO> forms = contractOtherFormMapper.selectList(
|
* @param mainId 同主信息ID
|
||||||
|
* @return 国贸合同信息
|
||||||
|
*/
|
||||||
|
private IntContract getIntContractByMainId(Long mainId) {
|
||||||
|
// 合同动态条款查询
|
||||||
|
List<ContractOtherFormDO> otherFormDOs = contractOtherFormMapper.selectList(
|
||||||
new LambdaQueryWrapperX<ContractOtherFormDO>()
|
new LambdaQueryWrapperX<ContractOtherFormDO>()
|
||||||
.eq(ContractOtherFormDO::getContractMainId, mainDOId)
|
.eq(ContractOtherFormDO::getContractMainId, mainId)
|
||||||
.eq(ContractOtherFormDO::getFormNumber, fieldName)
|
);
|
||||||
|
// 合同动态条款明细查询
|
||||||
|
List<ContractOtherFieldDO> otherFieldDOs = contractOtherFieldMapper.selectList(
|
||||||
|
new LambdaQueryWrapperX<ContractOtherFieldDO>()
|
||||||
|
.eq(ContractOtherFieldDO::getContractMainId, mainId)
|
||||||
);
|
);
|
||||||
if (forms != null && !forms.isEmpty()) {
|
|
||||||
forms.forEach(form -> {
|
|
||||||
List<ContractOtherFieldDO> fieldDOs = contractOtherFieldMapper.selectList(
|
|
||||||
new LambdaQueryWrapperX<ContractOtherFieldDO>()
|
|
||||||
.eq(ContractOtherFieldDO::getContractMainId, mainDOId)
|
|
||||||
.eq(ContractOtherFieldDO::getRelativityId, form.getId())
|
|
||||||
);
|
|
||||||
if (fieldDOs != null && !fieldDOs.isEmpty()) {
|
|
||||||
JSONObject jsonObject = new JSONObject();
|
|
||||||
fieldDOs.forEach(field
|
|
||||||
-> jsonObject.putOnce(field.getFieldNumber(), field.getFieldValue()));
|
|
||||||
jsonArray.add(jsonObject);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return jsonArray.isEmpty() ? null : jsonArray;
|
JSONObject resultJson = new JSONObject();
|
||||||
|
|
||||||
|
// 设置主信息
|
||||||
|
otherFieldDOs.stream()
|
||||||
|
.filter(otherFieldDO -> otherFieldDO.getRelativityId() == null)
|
||||||
|
.forEach(otherFieldDO
|
||||||
|
-> resultJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue()));
|
||||||
|
|
||||||
|
// 设置明细信息
|
||||||
|
otherFormDOs.stream()
|
||||||
|
.collect(Collectors.groupingBy(ContractOtherFormDO::getFormNumber))
|
||||||
|
.forEach((key, value) -> {
|
||||||
|
JSONArray detailsJson = new JSONArray();
|
||||||
|
value.forEach(detail -> {
|
||||||
|
// 根据条款id筛选条款明细
|
||||||
|
Stream<ContractOtherFieldDO> stream = otherFieldDOs.stream()
|
||||||
|
.filter(otherFieldDO
|
||||||
|
-> Objects.equals(otherFieldDO.getRelativityId(), detail.getId()));
|
||||||
|
if ("attachList".equals(key)) {
|
||||||
|
// 基础数据类型
|
||||||
|
stream.forEach(otherFieldDO
|
||||||
|
-> detailsJson.add(otherFieldDO.getFieldValue()));
|
||||||
|
} else {
|
||||||
|
// 对象数据类型
|
||||||
|
JSONObject detailJson = new JSONObject();
|
||||||
|
stream.forEach(otherFieldDO
|
||||||
|
-> detailJson.putOnce(otherFieldDO.getFieldNumber(), otherFieldDO.getFieldValue()));
|
||||||
|
detailsJson.add(detailJson);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
resultJson.putOnce(key, detailsJson);
|
||||||
|
});
|
||||||
|
return resultJson.toBean(IntContract.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -509,6 +504,12 @@ public class ContractApiImpl implements ContractApi {
|
|||||||
return CommonResult.success(purchaseOrderDetails);
|
return CommonResult.success(purchaseOrderDetails);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 国贸合同信息映射到合同主信息
|
||||||
|
*
|
||||||
|
* @param reqVO 国贸合同信息
|
||||||
|
* @return 合同主信息
|
||||||
|
*/
|
||||||
private ContractMainDO internationalToMainDO(IntContract reqVO) {
|
private ContractMainDO internationalToMainDO(IntContract reqVO) {
|
||||||
|
|
||||||
// 合同主信息表映射
|
// 合同主信息表映射
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.zt.plat.module.erp.api;
|
package com.zt.plat.module.erp.api;
|
||||||
|
|
||||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||||
|
import com.zt.plat.module.erp.api.dto.ErpMaterialDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
||||||
@@ -12,6 +13,7 @@ import org.springframework.cloud.openfeign.FeignClient;
|
|||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@@ -30,7 +32,11 @@ public interface ErpExternalApi {
|
|||||||
@Operation(summary = "erp数据查询")
|
@Operation(summary = "erp数据查询")
|
||||||
HashMap<String, Object> queryDataToErp(@Valid @RequestBody ErpQueryReqDTO reqDTO);
|
HashMap<String, Object> queryDataToErp(@Valid @RequestBody ErpQueryReqDTO reqDTO);
|
||||||
|
|
||||||
@GetMapping(PREFIX + "/queryProductiveVersion")
|
@PostMapping(PREFIX + "/queryProductiveVersion")
|
||||||
@Operation(summary = "生产版本数据查询")
|
@Operation(summary = "生产版本数据查询")
|
||||||
CommonResult<String> getErpProductiveVersionByFM(@Valid @RequestBody ErpProductiveVersionReqDTO reqDTO);
|
CommonResult<String> getErpProductiveVersionByFM(@Valid @RequestBody ErpProductiveVersionReqDTO reqDTO);
|
||||||
|
|
||||||
|
@GetMapping(PREFIX + "/getMaterialUnit")
|
||||||
|
@Operation(summary = "根据物料编码查询对应计量单位")
|
||||||
|
CommonResult<String> getMaterialUnit(@RequestParam("downCenterNumber") String downCenterNumber);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.zt.plat.module.erp.api.dto;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
@Schema(description = "管理后台 - ERP物料数据 Response VO")
|
||||||
|
@Data
|
||||||
|
public class ErpMaterialDTO {
|
||||||
|
|
||||||
|
@Schema(description = "主键")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
@Schema(description = "中铜物料编码;系统使用时使用该编码")
|
||||||
|
private String downCenterNumber;
|
||||||
|
|
||||||
|
@Schema(description = "物料编码")
|
||||||
|
private String materialNumber;
|
||||||
|
|
||||||
|
@Schema(description = "中铝物料编码")
|
||||||
|
private String centerNumber;
|
||||||
|
|
||||||
|
@Schema(description = "创建日期")
|
||||||
|
private LocalDateTime createDate;
|
||||||
|
|
||||||
|
@Schema(description = "物料类型", example = "2")
|
||||||
|
private String materialType;
|
||||||
|
|
||||||
|
@Schema(description = "物料大类组")
|
||||||
|
private String materialGroupDate;
|
||||||
|
|
||||||
|
@Schema(description = "外部物料小类组")
|
||||||
|
private String externalMaterialGroupDate;
|
||||||
|
|
||||||
|
@Schema(description = "计量单位编码")
|
||||||
|
private String unit;
|
||||||
|
|
||||||
|
@Schema(description = "计量单位描述")
|
||||||
|
private String unitDescription;
|
||||||
|
|
||||||
|
@Schema(description = "物料类型描述")
|
||||||
|
private String materialTypeDescription;
|
||||||
|
|
||||||
|
@Schema(description = "物料组描述")
|
||||||
|
private String materialGroupDescription;
|
||||||
|
|
||||||
|
@Schema(description = "外部物料小类组描述")
|
||||||
|
private String externalMaterialGroupDescription;
|
||||||
|
|
||||||
|
@Schema(description = "物料名称", example = "李四")
|
||||||
|
private String materialName;
|
||||||
|
|
||||||
|
@Schema(description = "物料长描述")
|
||||||
|
private String materialLengthDescription;
|
||||||
|
|
||||||
|
@Schema(description = "类型")
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素缩写")
|
||||||
|
private String abbreviation;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素名称", example = "赵六")
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@Schema(description = "金属元素编码")
|
||||||
|
private String coding;
|
||||||
|
|
||||||
|
@Schema(description = "品位单位")
|
||||||
|
private String gradeUnit;
|
||||||
|
|
||||||
|
@Schema(description = "小数位数")
|
||||||
|
private Long decimalValue;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -2,9 +2,12 @@ package com.zt.plat.module.erp.api;
|
|||||||
|
|
||||||
import com.zt.plat.framework.common.pojo.CommonResult;
|
import com.zt.plat.framework.common.pojo.CommonResult;
|
||||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||||
|
import com.zt.plat.module.erp.api.dto.ErpMaterialDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO;
|
||||||
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialRespVO;
|
||||||
|
import com.zt.plat.module.erp.service.erp.ErpMaterialService;
|
||||||
import com.zt.plat.module.erp.service.erp.ErpProductiveVersionService;
|
import com.zt.plat.module.erp.service.erp.ErpProductiveVersionService;
|
||||||
import com.zt.plat.module.erp.utils.ErpConfig;
|
import com.zt.plat.module.erp.utils.ErpConfig;
|
||||||
import jakarta.annotation.Resource;
|
import jakarta.annotation.Resource;
|
||||||
@@ -34,6 +37,9 @@ public class ErpExternalApiImpl implements ErpExternalApi {
|
|||||||
private ErpConfig erpConfig;
|
private ErpConfig erpConfig;
|
||||||
@Resource
|
@Resource
|
||||||
private ErpProductiveVersionService erpProductiveVersionService;
|
private ErpProductiveVersionService erpProductiveVersionService;
|
||||||
|
@Resource
|
||||||
|
private ErpMaterialService erpMaterialService;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HashMap<String, String> submitDataToErp(ErpSubmitReqDTO reqDTO) {
|
public HashMap<String, String> submitDataToErp(ErpSubmitReqDTO reqDTO) {
|
||||||
@@ -52,4 +58,10 @@ public class ErpExternalApiImpl implements ErpExternalApi {
|
|||||||
String productiveVersionNumber = erpProductiveVersionService.getErpProductiveVersionByFM(reqDTO);
|
String productiveVersionNumber = erpProductiveVersionService.getErpProductiveVersionByFM(reqDTO);
|
||||||
return success(productiveVersionNumber);
|
return success(productiveVersionNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CommonResult<String> getMaterialUnit(String materialNumber) {
|
||||||
|
String materialUnit = erpMaterialService.getMaterialUnit(materialNumber);
|
||||||
|
return success(materialUnit);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.zt.plat.module.erp.controller.admin.erp.vo;
|
|||||||
|
|
||||||
import com.zt.plat.framework.common.pojo.PageParam;
|
import com.zt.plat.framework.common.pojo.PageParam;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
@@ -14,9 +15,11 @@ import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
|
|||||||
public class ErpProductiveOrderPageReqVO extends PageParam {
|
public class ErpProductiveOrderPageReqVO extends PageParam {
|
||||||
|
|
||||||
@Schema(description = "公司编号")
|
@Schema(description = "公司编号")
|
||||||
|
@NotEmpty(message = "公司编号不能为空")
|
||||||
private String companyNumber;
|
private String companyNumber;
|
||||||
|
|
||||||
@Schema(description = "工厂编码")
|
@Schema(description = "工厂编码")
|
||||||
|
@NotEmpty(message = "公司编号不能为空")
|
||||||
private String factoryNumber;
|
private String factoryNumber;
|
||||||
|
|
||||||
@Schema(description = "工厂名称", example = "赵六")
|
@Schema(description = "工厂名称", example = "赵六")
|
||||||
@@ -27,10 +30,12 @@ public class ErpProductiveOrderPageReqVO extends PageParam {
|
|||||||
|
|
||||||
@Schema(description = "基本开始日期")
|
@Schema(description = "基本开始日期")
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@NotEmpty(message = "公司编号不能为空")
|
||||||
private LocalDateTime[] startDate;
|
private LocalDateTime[] startDate;
|
||||||
|
|
||||||
@Schema(description = "基本完成日期")
|
@Schema(description = "基本完成日期")
|
||||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||||
|
@NotEmpty(message = "公司编号不能为空")
|
||||||
private LocalDateTime[] endDate;
|
private LocalDateTime[] endDate;
|
||||||
|
|
||||||
@Schema(description = "主产品物料编号")
|
@Schema(description = "主产品物料编号")
|
||||||
|
|||||||
@@ -40,5 +40,11 @@ public interface ErpMaterialMapper extends BaseMapperX<ErpMaterialDO> {
|
|||||||
|
|
||||||
String selectMaxCode();
|
String selectMaxCode();
|
||||||
|
|
||||||
Integer selectByErpMNumbers(List<String> erpMNumber);
|
Integer countByErpMNumbers(List<String> erpMNumber);
|
||||||
|
|
||||||
|
default String getMaterialUnit(String downCenterNumber) {
|
||||||
|
return selectOne(new LambdaQueryWrapperX<ErpMaterialDO>()
|
||||||
|
.eq(ErpMaterialDO::getDownCenterNumber, downCenterNumber)
|
||||||
|
.last("limit 1")).getUnit();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -30,6 +30,8 @@ public class ErpJob {
|
|||||||
@Resource
|
@Resource
|
||||||
private ErpProcessService erpProcessService;
|
private ErpProcessService erpProcessService;
|
||||||
@Resource
|
@Resource
|
||||||
|
private ErpProductiveOrderService erpProductiveOrderService;
|
||||||
|
@Resource
|
||||||
private ErpProductiveVersionService erpProductiveVersionService;
|
private ErpProductiveVersionService erpProductiveVersionService;
|
||||||
@Resource
|
@Resource
|
||||||
private ErpPurchaseOrganizationService erpPurchaseOrganizationService;
|
private ErpPurchaseOrganizationService erpPurchaseOrganizationService;
|
||||||
@@ -50,6 +52,7 @@ public class ErpJob {
|
|||||||
erpInternalOrderService.callErpRfcInterface();
|
erpInternalOrderService.callErpRfcInterface();
|
||||||
erpMaterialService.callErpRfcInterface();
|
erpMaterialService.callErpRfcInterface();
|
||||||
erpProcessService.callErpRfcInterface();
|
erpProcessService.callErpRfcInterface();
|
||||||
|
erpProductiveOrderService.callErpRfcInterface();
|
||||||
erpProductiveVersionService.callErpRfcInterface();
|
erpProductiveVersionService.callErpRfcInterface();
|
||||||
erpPurchaseOrganizationService.callErpRfcInterface();
|
erpPurchaseOrganizationService.callErpRfcInterface();
|
||||||
erpSalesOrganizationService.callErpRfcInterface();
|
erpSalesOrganizationService.callErpRfcInterface();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.zt.plat.module.erp.service.erp;
|
package com.zt.plat.module.erp.service.erp;
|
||||||
|
|
||||||
import com.zt.plat.framework.common.pojo.PageResult;
|
import com.zt.plat.framework.common.pojo.PageResult;
|
||||||
|
import com.zt.plat.module.erp.api.dto.ErpMaterialDTO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialPageReqVO;
|
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.ErpMaterialRespVO;
|
||||||
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO;
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO;
|
||||||
@@ -64,4 +65,6 @@ public interface ErpMaterialService {
|
|||||||
void callErpRfcInterface();
|
void callErpRfcInterface();
|
||||||
|
|
||||||
PageResult<ErpMaterialRespVO> getErpMaterialPageAndOther(ErpMaterialPageReqVO pageReqVO);
|
PageResult<ErpMaterialRespVO> getErpMaterialPageAndOther(ErpMaterialPageReqVO pageReqVO);
|
||||||
|
|
||||||
|
String getMaterialUnit(String materialNumber);
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ import com.zt.plat.framework.common.util.object.BeanUtils;
|
|||||||
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.zt.plat.module.api.BaseApi;
|
import com.zt.plat.module.api.BaseApi;
|
||||||
import com.zt.plat.module.api.dto.MaterialOtherDTO;
|
import com.zt.plat.module.api.dto.MaterialOtherDTO;
|
||||||
|
import com.zt.plat.module.erp.api.dto.ErpMaterialDTO;
|
||||||
import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO;
|
import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO;
|
||||||
import com.zt.plat.module.erp.utils.ErpConfig;
|
import com.zt.plat.module.erp.utils.ErpConfig;
|
||||||
import com.zt.plat.module.erp.utils.MyRedisConfig;
|
import com.zt.plat.module.erp.utils.MyRedisConfig;
|
||||||
@@ -124,7 +125,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
|
|||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
// 使用IN语句批量查询所有物料编码的数量
|
// 使用IN语句批量查询所有物料编码的数量
|
||||||
Integer countMap = erpMaterialMapper.selectByErpMNumbers(downCenterNumbers);
|
Integer countMap = erpMaterialMapper.countByErpMNumbers(downCenterNumbers);
|
||||||
if (countMap > 1) {
|
if (countMap > 1) {
|
||||||
throw exception(ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE);
|
throw exception(ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE);
|
||||||
}
|
}
|
||||||
@@ -175,6 +176,11 @@ public class ErpMaterialServiceImpl implements ErpMaterialService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getMaterialUnit(String materialNumber) {
|
||||||
|
return erpMaterialMapper.getMaterialUnit(materialNumber);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@XxlJob("getErpMaterialTask")
|
@XxlJob("getErpMaterialTask")
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import com.alibaba.fastjson.JSONObject;
|
|||||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||||
import com.zt.plat.framework.common.pojo.PageResult;
|
import com.zt.plat.framework.common.pojo.PageResult;
|
||||||
import com.zt.plat.framework.common.util.object.BeanUtils;
|
import com.zt.plat.framework.common.util.object.BeanUtils;
|
||||||
|
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO;
|
||||||
|
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO;
|
||||||
import com.zt.plat.module.erp.utils.ErpConfig;
|
import com.zt.plat.module.erp.utils.ErpConfig;
|
||||||
import com.zt.plat.module.erp.utils.MyRedisConfig;
|
import com.zt.plat.module.erp.utils.MyRedisConfig;
|
||||||
import com.zt.plat.module.erp.enums.OftenEnum;
|
import com.zt.plat.module.erp.enums.OftenEnum;
|
||||||
@@ -102,83 +104,89 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<ErpProductiveOrderDO> getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) {
|
public PageResult<ErpProductiveOrderDO> getErpProductiveOrderPage(ErpProductiveOrderPageReqVO pageReqVO) {
|
||||||
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单;
|
return erpProductiveOrderMapper.selectPage(pageReqVO);
|
||||||
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接口获取数据
|
|
||||||
HashMap<String, Object> dataFromERP = erpConfig.fetchDataFromERP(funcnr, req);
|
|
||||||
JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP");
|
|
||||||
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());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//直接从erp查询生产订单
|
||||||
|
// @Override
|
||||||
|
// public PageResult<ErpProductiveOrderDO> getErpProductiveOrderPage(ErpProductiveOrderPageReqVO 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接口获取数据
|
||||||
|
// HashMap<String, Object> dataFromERP = erpConfig.fetchDataFromERP(funcnr, req);
|
||||||
|
// JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP");
|
||||||
|
// 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
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
@XxlJob("getErpProductiveOrderTask")
|
@XxlJob("getErpProductiveOrderTask")
|
||||||
|
|||||||
@@ -22,10 +22,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||||
@@ -56,18 +53,18 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService {
|
|||||||
// 插入
|
// 插入
|
||||||
ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class);
|
ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class);
|
||||||
// 库位编码自动生成,格式 KW-0001,依次新增
|
// 库位编码自动生成,格式 KW-0001,依次新增
|
||||||
if (warehouse.getNumber() == null) {
|
// if (warehouse.getNumber() == null) {
|
||||||
String maxCode = erpWarehouseMapper.selectMaxCode();
|
// String maxCode = erpWarehouseMapper.selectMaxCode();
|
||||||
if (maxCode == null) {
|
// if (maxCode == null) {
|
||||||
warehouse.setNumber("KW-0001");
|
// warehouse.setNumber("KW-0001");
|
||||||
} else {
|
// } else {
|
||||||
String prefix = "KW-";
|
// String prefix = "KW-";
|
||||||
String numberPart = maxCode.substring(prefix.length());
|
// String numberPart = maxCode.substring(prefix.length());
|
||||||
int nextNumber = Integer.parseInt(numberPart) + 1;
|
// int nextNumber = Integer.parseInt(numberPart) + 1;
|
||||||
String nextCode = prefix + String.format("%04d", nextNumber);
|
// String nextCode = prefix + String.format("%04d", nextNumber);
|
||||||
warehouse.setNumber(nextCode);
|
// warehouse.setNumber(nextCode);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
warehouse.setType("SPLY");
|
warehouse.setType("SPLY");
|
||||||
warehouse.setIsEnable("1");
|
warehouse.setIsEnable("1");
|
||||||
erpWarehouseMapper.insert(warehouse);
|
erpWarehouseMapper.insert(warehouse);
|
||||||
@@ -120,7 +117,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService {
|
|||||||
private void validateErpFactoryExistsNumber(String number, String factoryNumber) {
|
private void validateErpFactoryExistsNumber(String number, String factoryNumber) {
|
||||||
List<ErpWarehouseDO> list = erpWarehouseMapper.selectList(new LambdaQueryWrapperX<ErpWarehouseDO>()).stream()
|
List<ErpWarehouseDO> list = erpWarehouseMapper.selectList(new LambdaQueryWrapperX<ErpWarehouseDO>()).stream()
|
||||||
.filter(erpWarehouseDO -> erpWarehouseDO.getNumber().equals(number))
|
.filter(erpWarehouseDO -> erpWarehouseDO.getNumber().equals(number))
|
||||||
.filter(erpWarehouseDO -> erpWarehouseDO.getFactoryNumber().equals(factoryNumber))
|
.filter(erpWarehouseDO -> Objects.equals(erpWarehouseDO.getFactoryNumber(), factoryNumber))
|
||||||
.toList();
|
.toList();
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
throw exception(ERP_WAREHOUSE_EXISTS);
|
throw exception(ERP_WAREHOUSE_EXISTS);
|
||||||
@@ -230,6 +227,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService {
|
|||||||
DO.setName(dataJson.getString("LGOBE"));
|
DO.setName(dataJson.getString("LGOBE"));
|
||||||
DO.setNumber(dataJson.getString("LGORT").trim());
|
DO.setNumber(dataJson.getString("LGORT").trim());
|
||||||
DO.setFactoryNumber(dataJson.getString("WERKS"));
|
DO.setFactoryNumber(dataJson.getString("WERKS"));
|
||||||
|
DO.setType("ERP");
|
||||||
String number = dataJson.getString("WERKS").trim() + "-" + dataJson.getString("LGORT").trim();
|
String number = dataJson.getString("WERKS").trim() + "-" + dataJson.getString("LGORT").trim();
|
||||||
if (numbers.get(number) != null) {
|
if (numbers.get(number) != null) {
|
||||||
// 更新
|
// 更新
|
||||||
|
|||||||
@@ -100,13 +100,16 @@ public class ErpConfig {
|
|||||||
String url = "http://" + erpAddress + "/api/rfc/post";
|
String url = "http://" + erpAddress + "/api/rfc/post";
|
||||||
// 构建请求参数
|
// 构建请求参数
|
||||||
JSONObject requestBody = new JSONObject();
|
JSONObject requestBody = new JSONObject();
|
||||||
requestBody.put("uuid", UUID.randomUUID().toString());
|
String uuid = UUID.randomUUID().toString();
|
||||||
|
requestBody.put("uuid", uuid);
|
||||||
requestBody.put("sapsys", sapsys);
|
requestBody.put("sapsys", sapsys);
|
||||||
requestBody.put("srcsys", "DSC");
|
requestBody.put("srcsys", "DSC");
|
||||||
requestBody.put("funcnr", reqDTO.getFuncnr());
|
requestBody.put("funcnr", reqDTO.getFuncnr());
|
||||||
requestBody.put("bskey", reqDTO.getBskey());
|
requestBody.put("bskey", reqDTO.getBskey());
|
||||||
requestBody.put("usrid", reqDTO.getUsrid());
|
requestBody.put("usrid", reqDTO.getUsrid());
|
||||||
requestBody.put("usrnm", reqDTO.getUsrnm());
|
requestBody.put("usrnm", reqDTO.getUsrnm());
|
||||||
|
//todo 密码另行约定
|
||||||
|
// requestBody.put("sign", StrUtil.(uuid + sapsys + "密码另行约定"));
|
||||||
if (reqDTO.getReq() != null) {
|
if (reqDTO.getReq() != null) {
|
||||||
requestBody.put("req", reqDTO.getReq());
|
requestBody.put("req", reqDTO.getReq());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
WHERE DOWN_CTR_NUM = #{item.downCenterNumber}
|
WHERE DOWN_CTR_NUM = #{item.downCenterNumber}
|
||||||
</foreach>
|
</foreach>
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
<select id="selectMaxCode" resultType="java.lang.String">
|
<select id="selectMaxCode" resultType="java.lang.String">
|
||||||
SELECT MAX(MTRL_CODE) FROM SPLY_ERP_MTRL
|
SELECT MAX(MTRL_CODE) FROM SPLY_ERP_MTRL
|
||||||
</select>
|
</select>
|
||||||
@@ -41,7 +42,7 @@
|
|||||||
SELECT * FROM SPLY_ERP_MTRL WHERE MTRL_ID = #{erpMId}
|
SELECT * FROM SPLY_ERP_MTRL WHERE MTRL_ID = #{erpMId}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectByErpMNumbers" resultType="java.lang.Integer">
|
<select id="countByErpMNumbers" resultType="java.lang.Integer">
|
||||||
SELECT COUNT(*)
|
SELECT COUNT(*)
|
||||||
FROM sply_mtrl_oth
|
FROM sply_mtrl_oth
|
||||||
WHERE ERP_MTRL_NUM IN
|
WHERE ERP_MTRL_NUM IN
|
||||||
|
|||||||
Reference in New Issue
Block a user