Browse Source

durabilityDays

master
han\hanst 9 months ago
parent
commit
3b943ca22d
  1. 27
      src/main/java/com/gaotao/modules/base/controller/LabelSettingController.java
  2. 95
      src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java
  3. 17
      src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java

27
src/main/java/com/gaotao/modules/base/controller/LabelSettingController.java

@ -1012,31 +1012,4 @@ public class LabelSettingController extends AbstractController {
} }
} }
/**
* @description: 测试系统变量功能
* @author AI Assistant
* @date 2024/12/18
* @version 1.0
*/
@PostMapping("testSystemVariables")
public R testSystemVariables() {
try {
log.info("开始测试系统变量功能");
// 调用测试方法
if (labelDataProcessorService instanceof com.gaotao.modules.base.service.Impl.LabelDataProcessorServiceImpl) {
((com.gaotao.modules.base.service.Impl.LabelDataProcessorServiceImpl) labelDataProcessorService).testSystemVariables();
}
return R.ok()
.put("code", 200)
.put("msg", "系统变量功能测试完成,请查看日志")
.put("data", "测试已执行,详细结果请查看服务器日志");
} catch (Exception e) {
log.error("系统变量功能测试失败: {}", e.getMessage(), e);
return R.error("测试失败: " + e.getMessage());
}
}
} }

95
src/main/java/com/gaotao/modules/base/service/Impl/LabelDataProcessorServiceImpl.java

@ -1530,99 +1530,4 @@ public class LabelDataProcessorServiceImpl implements LabelDataProcessorService
} }
} }
/**
* 测试系统变量功能
* 用于验证日期拼接功能的正确性
*/
public void testSystemVariables() {
log.info("=== 系统变量功能测试开始 ===");
// 测试所有系统变量
String[] testVariables = {
"CURRENT_DATE_YYYYMMDD",
"CURRENT_DATE_YYYY-MM-DD",
"CURRENT_TIME_HHMMSS",
"CURRENT_DATETIME"
};
for (String varName : testVariables) {
boolean isSystemVar = isSystemVariable(varName);
String value = getSystemVariableValue(varName);
log.info("系统变量测试: {} -> 是否为系统变量: {}, 值: {}", varName, isSystemVar, value);
}
// 测试具体业务场景P + site + YYYYMMDD + 8位流水号
log.info("=== 测试业务场景:P + site + YYYYMMDD + 流水号 ===");
java.util.List<com.gaotao.modules.base.entity.LabelContentSerialRuleData> businessRules = new java.util.ArrayList<>();
// 规则1固定前缀 "P"
com.gaotao.modules.base.entity.LabelContentSerialRuleData rule1 = new com.gaotao.modules.base.entity.LabelContentSerialRuleData();
rule1.setObjectName("P");
businessRules.add(rule1);
// 规则2数据源字段 site
com.gaotao.modules.base.entity.LabelContentSerialRuleData rule2 = new com.gaotao.modules.base.entity.LabelContentSerialRuleData();
rule2.setObjectName("#{site}");
businessRules.add(rule2);
// 规则3当前日期 YYYYMMDD
com.gaotao.modules.base.entity.LabelContentSerialRuleData rule3 = new com.gaotao.modules.base.entity.LabelContentSerialRuleData();
rule3.setObjectName("#{CURRENT_DATE_YYYYMMDD}");
businessRules.add(rule3);
// 规则48位流水号
com.gaotao.modules.base.entity.LabelContentSerialRuleData rule4 = new com.gaotao.modules.base.entity.LabelContentSerialRuleData();
rule4.setObjectName("流水号");
businessRules.add(rule4);
// 模拟数据源数据
java.util.Map<String, Object> businessDataMap = new java.util.HashMap<>();
businessDataMap.put("site", "SH001"); // 模拟站点数据
// 测试组装流水号8位流水号
String businessSerialNumber = assembleFullSerialNumber(businessRules, businessDataMap, "00000001");
log.info("业务场景流水号组装结果: {}", businessSerialNumber);
// 测试KeyInfo生成用于区分不同条件下的流水号序列
String businessKeyInfo = generateSerialKeyInfo(businessRules, businessDataMap);
log.info("业务场景KeyInfo生成结果: {}", businessKeyInfo);
// 测试不同站点的情况
businessDataMap.put("site", "BJ002");
String anotherSerialNumber = assembleFullSerialNumber(businessRules, businessDataMap, "00000001");
String anotherKeyInfo = generateSerialKeyInfo(businessRules, businessDataMap);
log.info("不同站点流水号组装结果: {}", anotherSerialNumber);
log.info("不同站点KeyInfo生成结果: {}", anotherKeyInfo);
// 测试真实数据预览场景
log.info("=== 测试真实数据预览场景 ===");
// 模拟真实数据预览的数据映射包含site字段
java.util.Map<String, Object> realDataMap = new java.util.HashMap<>();
realDataMap.put("site", "SH001");
realDataMap.put("product_code", "ABC123");
realDataMap.put("batch_no", "B20241218");
// 测试replaceDataSourceFields方法是否支持系统变量
String testText1 = "P#{site}#{CURRENT_DATE_YYYYMMDD}";
String replacedText1 = replaceDataSourceFields(testText1, realDataMap);
log.info("真实数据预览测试1: {} -> {}", testText1, replacedText1);
String testText2 = "#{product_code}-#{CURRENT_DATE_YYYYMMDD}-#{batch_no}";
String replacedText2 = replaceDataSourceFields(testText2, realDataMap);
log.info("真实数据预览测试2: {} -> {}", testText2, replacedText2);
// 测试混合场景固定字符串 + 数据源字段 + 系统变量
String testText3 = "PREFIX_#{site}_#{CURRENT_DATE_YYYYMMDD}_SUFFIX";
String replacedText3 = replaceDataSourceFields(testText3, realDataMap);
log.info("真实数据预览测试3: {} -> {}", testText3, replacedText3);
// 测试仅系统变量的场景
String testText4 = "#{CURRENT_DATE_YYYYMMDD}";
String replacedText4 = replaceDataSourceFields(testText4, null); // 空数据源
log.info("真实数据预览测试4(空数据源): {} -> {}", testText4, replacedText4);
log.info("=== 系统变量功能测试完成 ===");
}
} }

17
src/main/java/com/gaotao/modules/po/service/impl/PoServiceImpl.java

@ -142,7 +142,7 @@ public class PoServiceImpl extends ServiceImpl<PoMapper, PurchaseOrder> implemen
List<Map<String, Object>> poData = mapper.readValue(poResponse, new TypeReference<>() {}); List<Map<String, Object>> poData = mapper.readValue(poResponse, new TypeReference<>() {});
Integer shelfLife = null; // 有效期 Integer shelfLife = null; // 有效期
if (poData!=null && !poData.isEmpty()) { if (poData!=null && !poData.isEmpty()) {
shelfLife = poData.getFirst().get("shelfLife")!=null?(Integer) poData.getFirst().get("shelfLife"):null;
shelfLife = poData.getFirst().get("durabilityDays")!=null?(Integer) poData.getFirst().get("durabilityDays"):null;
} }
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
String transType = "CRT"; String transType = "CRT";
@ -164,14 +164,15 @@ public class PoServiceImpl extends ServiceImpl<PoMapper, PurchaseOrder> implemen
transHeader.setOrderRef2(inData.getOrderRef2()); transHeader.setOrderRef2(inData.getOrderRef2());
transHeader.setOrderRef3(inData.getOrderRef3()); transHeader.setOrderRef3(inData.getOrderRef3());
transHeader.setEnterDate(new Date()); transHeader.setEnterDate(new Date());
// 创建采购接收记录 - 在库存更新之前创建
String receiptNo = createPoReceiptRecords(inData,shelfLife);
inData.setReceiptNo(receiptNo);
if ("Y".equals(inData.getNeedHandlingUnit())) { if ("Y".equals(inData.getNeedHandlingUnit())) {
// 创建Handling Unit相关数据 // 创建Handling Unit相关数据
for (int i = 0; i < inData.getHandlingUnitList().size(); i++) { for (int i = 0; i < inData.getHandlingUnitList().size(); i++) {
handlingUnitPart(inData, i, transHeader, currentUser,shelfLife); handlingUnitPart(inData, i, transHeader, currentUser,shelfLife);
} }
} }
// 创建采购接收记录 - 在库存更新之前创建
createPoReceiptRecords(inData,shelfLife);
// 免检更新库存 待检验的出入库记录状态为待检验 // 免检更新库存 待检验的出入库记录状态为待检验
if ("N".equals(inData.getNeedCheck())) { if ("N".equals(inData.getNeedCheck())) {
headerService.save(transHeader); headerService.save(transHeader);
@ -565,13 +566,12 @@ public class PoServiceImpl extends ServiceImpl<PoMapper, PurchaseOrder> implemen
/** /**
* 创建采购接收记录 * 创建采购接收记录
*/ */
private void createPoReceiptRecords(TransDetailDto inData,Integer shelfLife) {
private String createPoReceiptRecords(TransDetailDto inData,Integer shelfLife) {
// 生成接收单号
TransNoControl receiptNoControl = transNoService.getTransNo(inData.getSite(), "PR", 10);
String receiptNo = receiptNoControl.getNewTransNo();
try { try {
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal(); SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
// 生成接收单号
TransNoControl receiptNoControl = transNoService.getTransNo(inData.getSite(), "PR", 10);
String receiptNo = receiptNoControl.getNewTransNo();
// 创建采购接收单主记录 // 创建采购接收单主记录
PoReceipt poReceipt = new PoReceipt(); PoReceipt poReceipt = new PoReceipt();
poReceipt.setSite(inData.getSite()); poReceipt.setSite(inData.getSite());
@ -773,6 +773,7 @@ public class PoServiceImpl extends ServiceImpl<PoMapper, PurchaseOrder> implemen
log.error("创建采购接收记录失败,PO号: {}, 错误: {}", inData.getPoNo(), e.getMessage()); log.error("创建采购接收记录失败,PO号: {}, 错误: {}", inData.getPoNo(), e.getMessage());
throw new XJException("创建采购接收记录失败: " + e.getMessage()); throw new XJException("创建采购接收记录失败: " + e.getMessage());
} }
return receiptNo;
} }
} }
Loading…
Cancel
Save