提交 2a4e62bf authored 作者: douxy's avatar douxy

增加店内执行计划导出/入功能:1.处理空值更新;2.增加权限校验;3.增加错误返回

上级 bdd28e3f
package com.sfa.operation.controller.sales.excel;
import com.sfa.common.core.constant.RoleConstants;
import com.sfa.common.core.domain.R;
import com.sfa.common.security.annotation.Logical;
import com.sfa.common.security.annotation.RequiresRoles;
import com.sfa.operation.pojo.sales.request.ImportApExcelRequest;
import com.sfa.operation.service.sales.export.IImportExcelService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -28,7 +31,9 @@ public class ApImportExcelController {
return importExcelService.importApExcel(request);
}
@PostMapping("/update")
@RequiresRoles(value = {RoleConstants.OPERATION_AP_MANAGER, RoleConstants.OPERATIONZQ_AP_MANAGER, RoleConstants.OPERATIONDQ_AP_MANAGER, RoleConstants.DISTRICT_AP_MANAGER}, logical = Logical.OR)
public R updateApDisplayExcel(@RequestBody ImportApExcelRequest request) {
return importExcelService.updateApEntity(request);
}
......
......@@ -188,24 +188,6 @@ public class NormalDisplayImportStrategyImpl implements IImportApExcelStrategy<S
SalesApDisplay updateDisplay = new SalesApDisplay();
BeanUtils.copyProperties(dbDisplay, updateDisplay);
updateDisplay.setActualMainShelfType(dto.getActualMainShelfType());
updateDisplay.setActualMainShelfQty(dto.getActualMainShelfQty());
updateDisplay.setActualEndCapQty(dto.getActualEndCapQty());
updateDisplay.setActualFloorStackArea(dto.getActualFloorStackArea());
updateDisplay.setActualFloorStackQty(dto.getActualFloorStackQty());
String actualMultiDisplay = StringUtils.trimToNull(dto.getActualMultiDisplay());
updateDisplay.setActualMultiDisplay(actualMultiDisplay);
String actualHangingStrip = StringUtils.trimToNull(dto.getActualHangingStripQuantityForm());
updateDisplay.setActualHangingStripQuantityForm(actualHangingStrip);
updateDisplay.setRemark(dto.getRemark());
if (updateDisplay.getPlannedMainShelfType() != null && updateDisplay.getPlannedMainShelfQty() != null
......@@ -246,53 +228,102 @@ public class NormalDisplayImportStrategyImpl implements IImportApExcelStrategy<S
} else if (updateDisplay.getPlannedMainShelfType() != null && updateDisplay.getPlannedMainShelfQty() != null
&& (updateDisplay.getActualMainShelfType() != null || dto.getActualMainShelfQty() != null)
&& (dto.getActualMainShelfType() == null || dto.getActualMainShelfQty() == null) ){
// 计划/实际值不全,清空执行状态
updateDisplay.setActualMainShelfExecuted("未执行");
}else {
updateDisplay.setActualMainShelfExecuted(null);
}
// 2. 端架执行状态计算
if (dto.getActualEndCapQty() != null && updateDisplay.getPlannedEndCapQty() != null) {
updateDisplay.setActualEndCapExecuted(
dto.getActualEndCapQty() >= updateDisplay.getPlannedEndCapQty() ? "执行" : "未执行"
);
} else {
updateDisplay.setActualEndCapExecuted(null);
if (updateDisplay.getPlannedEndCapQty() != null) {
Double oldActualEndCapQty = updateDisplay.getActualEndCapQty();
if (oldActualEndCapQty != null) {
if (dto.getActualEndCapQty() != null) {
updateDisplay.setActualEndCapExecuted(
dto.getActualEndCapQty() >= updateDisplay.getPlannedEndCapQty() ? "执行" : "未执行"
);
} else { // DTO没值(原本有值→现在没值):改为未执行
updateDisplay.setActualEndCapExecuted("未执行");
}
}
}
// 3. 地堆执行状态计算
if (updateDisplay.getPlannedFloorStackArea() != null && updateDisplay.getPlannedFloorStackQty() != null
&& dto.getActualFloorStackArea() != null && dto.getActualFloorStackQty() != null) {
boolean areaSufficient = dto.getActualFloorStackArea() >= updateDisplay.getPlannedFloorStackArea();
boolean qtySufficient = dto.getActualFloorStackQty() >= updateDisplay.getPlannedFloorStackQty();
updateDisplay.setActualFloorStackExecuted((areaSufficient && qtySufficient) ? "执行" : "未执行");
} else {
updateDisplay.setActualFloorStackExecuted(null);
// 3. 地堆是否执行计算
if (updateDisplay.getPlannedFloorStackArea() != null && updateDisplay.getPlannedFloorStackQty() != null) {
Double oldActualFloorStackArea = updateDisplay.getActualFloorStackArea();
Integer oldActualFloorStackQty = updateDisplay.getActualFloorStackQty();
boolean hasOldActualValue = (oldActualFloorStackArea != null) || (oldActualFloorStackQty != null);
if (hasOldActualValue) {
boolean hasNewArea = dto.getActualFloorStackArea() != null;
boolean hasNewQty = dto.getActualFloorStackQty() != null;
if (hasNewArea && hasNewQty) {
boolean areaSufficient = dto.getActualFloorStackArea() >= updateDisplay.getPlannedFloorStackArea();
boolean qtySufficient = dto.getActualFloorStackQty() >= updateDisplay.getPlannedFloorStackQty();
updateDisplay.setActualFloorStackExecuted((areaSufficient && qtySufficient) ? "执行" : "未执行");
} else {
updateDisplay.setActualFloorStackExecuted("未执行");
}
}
}
// 4. 多点陈列执行状态(处理空字符串)
if (updateDisplay.getPlannedMultiDisplay() != null && actualMultiDisplay != null) {
updateDisplay.setActualMultiDisplayExecuted(
StringUtils.equals("执行与计划一致", actualMultiDisplay) ? "执行" : "未执行"
);
} else {
updateDisplay.setActualMultiDisplayExecuted(null);
// 4. 多点陈列执行状态计算
// 计划有值才处理
if (updateDisplay.getPlannedMultiDisplay() != null) {
// 获取原有实际值(updateDisplay的旧值)
String oldActualMultiDisplay = updateDisplay.getActualMultiDisplay();
// 判断原有实际值是否有值(非空非空白)
// 原本实际有值
if (oldActualMultiDisplay != null && !StringUtils.isBlank(oldActualMultiDisplay)) {
// DTO传了新值:判断是否一致
if (updateDisplay.getActualMultiDisplay() != null && !StringUtils.isBlank(dto.getActualMultiDisplay())) {
updateDisplay.setActualMultiDisplayExecuted(
StringUtils.equals("执行与计划一致", dto.getActualMultiDisplay()) ? "执行" : "未执行"
);
} else { // DTO没传新值(原本有值→现在没值):改为未执行
updateDisplay.setActualMultiDisplayExecuted("未执行");
}
}
}
// 5. 挂条执行状态(处理空字符串)
if (updateDisplay.getPlannedHangingStripQuantityForm() != null && actualHangingStrip != null) {
updateDisplay.setHangingStripExecuted(
StringUtils.equals("执行与计划一致", actualHangingStrip) ? "执行" : "未执行"
);
} else {
updateDisplay.setHangingStripExecuted(null);
if (updateDisplay.getPlannedHangingStripQuantityForm() != null) {
String oldActualHangingStrip = updateDisplay.getActualHangingStripQuantityForm();
if (oldActualHangingStrip != null && !StringUtils.isBlank(oldActualHangingStrip)) {
if (updateDisplay.getActualHangingStripQuantityForm() != null && !StringUtils.isBlank(dto.getActualHangingStripQuantityForm())) {
updateDisplay.setHangingStripExecuted(
StringUtils.equals("执行与计划一致", dto.getActualHangingStripQuantityForm()) ? "执行" : "未执行"
);
} else {
updateDisplay.setHangingStripExecuted("未执行");
}
}
}
updateDisplay.setActualMainShelfType(dto.getActualMainShelfType());
updateDisplay.setActualMainShelfQty(dto.getActualMainShelfQty());
updateDisplay.setActualEndCapQty(dto.getActualEndCapQty());
updateDisplay.setActualFloorStackArea(dto.getActualFloorStackArea());
updateDisplay.setActualFloorStackQty(dto.getActualFloorStackQty());
String actualMultiDisplay = StringUtils.trimToNull(dto.getActualMultiDisplay());
updateDisplay.setActualMultiDisplay(actualMultiDisplay);
String actualHangingStrip = StringUtils.trimToNull(dto.getActualHangingStripQuantityForm());
updateDisplay.setActualHangingStripQuantityForm(actualHangingStrip);
// 添加到更新列表
updateEntityList.add(updateDisplay);
}
return updateEntityList;
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论