|
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
+import org.dromara.bulk.context.DevelopmentOrderContext;
|
|
|
import org.dromara.bulk.domain.DevelopmentOrder;
|
|
|
import org.dromara.bulk.domain.DevelopmentOrderRemark;
|
|
|
import org.dromara.bulk.domain.bo.DevelopmentOrderBo;
|
|
@@ -14,6 +15,8 @@ import org.dromara.bulk.domain.vo.DevelopmentOrderVo;
|
|
|
import org.dromara.bulk.mapper.DevelopmentOrderMapper;
|
|
|
import org.dromara.bulk.mapper.DevelopmentOrderRemarkMapper;
|
|
|
import org.dromara.bulk.service.DevelopmentOrderService;
|
|
|
+import org.dromara.bulk.service.DevelopmentOrderState;
|
|
|
+import org.dromara.bulk.service.stateModeServiceImpl.*;
|
|
|
import org.dromara.common.core.constant.DevelopmentOrderConstants;
|
|
|
import org.dromara.common.core.exception.ServiceException;
|
|
|
import org.dromara.common.core.service.OssService;
|
|
@@ -22,16 +25,12 @@ import org.dromara.common.core.utils.OrderNumberGenerator;
|
|
|
import org.dromara.common.core.utils.StringUtils;
|
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
|
|
import org.dromara.common.satoken.utils.LoginHelper;
|
|
|
-import org.dromara.common.tenant.helper.TenantHelper;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
-import java.time.LocalDateTime;
|
|
|
-import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.time.format.DateTimeParseException;
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
|
|
/**
|
|
|
* 开发订单Service业务层处理
|
|
@@ -46,7 +45,7 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
/**
|
|
|
* 创建所有状态的常量Set集合
|
|
|
*/
|
|
|
- private static final Set<Long> STATUS_CODES = Set.of(
|
|
|
+ private static final Set<Integer> STATUS_CODES = Set.of(
|
|
|
DevelopmentOrderConstants.PENDING_PROCESSING,
|
|
|
DevelopmentOrderConstants.IN_THE_DRAWING,
|
|
|
DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS,
|
|
@@ -58,12 +57,13 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
DevelopmentOrderConstants.CANCELLED
|
|
|
);
|
|
|
|
|
|
- private static final Map<Long, String> SPECIAL_STATUS_FIELDS = new HashMap<>();
|
|
|
+ private static final Map<Integer, String> SPECIAL_STATUS_FIELDS = new HashMap<>();
|
|
|
+
|
|
|
static {
|
|
|
- SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS, "confirm_user_id");
|
|
|
- SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT, "color_user_id");
|
|
|
- SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.IN_TYPESETTING, "layout_user_id");
|
|
|
- SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.PRINTING_IN_PROGRESS, "pattern_user_id");
|
|
|
+ SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS, "confirm_userid");
|
|
|
+ SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT, "color_userid");
|
|
|
+ SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.IN_TYPESETTING, "layout_userid");
|
|
|
+ SPECIAL_STATUS_FIELDS.put(DevelopmentOrderConstants.PRINTING_IN_PROGRESS, "pattern_userid");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -80,41 +80,40 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
List<DevelopmentOrderRemarkVo> developmentOrderRemarkVoList = developmentOrderRemarkMapper.selectVoList(remarkQueryWrapper);
|
|
|
item.setDevelopmentOrderRemarkVoList(developmentOrderRemarkVoList);
|
|
|
// 查询各个文件URL
|
|
|
- item.setColorFileList(ossService.selectByIds(item.getColorFile()));
|
|
|
- item.setDesignFileList(ossService.selectByIds(item.getDesignFile()));
|
|
|
- item.setDesignMaterialList(ossService.selectByIds(item.getDesignMaterial()));
|
|
|
- item.setDesignImageList(ossService.selectByIds(item.getDesignImage()));
|
|
|
- item.setPaperDesignFileList(ossService.selectByIds(item.getPaperDesignFile()));
|
|
|
- item.setPatternFileList(ossService.selectByIds(item.getPatternFile()));
|
|
|
- item.setRefernceImageList(ossService.selectByIds(item.getReferenceImage()));
|
|
|
+// item.setColorFileList(ossService.selectByIds(item.getColorFile()));
|
|
|
+// item.setDesignFileList(ossService.selectByIds(item.getDesignFile()));
|
|
|
+// item.setDesignMaterialList(ossService.selectByIds(item.getDesignMaterial()));
|
|
|
+// item.setDesignImageList(ossService.selectByIds(item.getDesignImage()));
|
|
|
+// item.setPaperDesignFileList(ossService.selectByIds(item.getPaperDesignFile()));
|
|
|
+// item.setPatternFileList(ossService.selectByIds(item.getPatternFile()));
|
|
|
+// item.setRefernceImageList(ossService.selectByIds(item.getReferenceImage()));
|
|
|
});
|
|
|
- Map<Long, String> statusCount = getStatusCount();
|
|
|
+ Map<Integer, String> statusCount = getStatusCount();
|
|
|
// 组装数据返回
|
|
|
return DevelopmentOrderTableDataInfo.build(page, statusCount);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 查询每个状态的数量
|
|
|
+ *
|
|
|
* @return
|
|
|
*/
|
|
|
- public Map<Long, String> getStatusCount() {
|
|
|
- // 定义所有的状态代码
|
|
|
- Set<Long> allStatusCodes = Set.of(0L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L);
|
|
|
+ public Map<Integer, String> getStatusCount() {
|
|
|
// 调用 Mapper 方法获取 List<Map<String, Object>>
|
|
|
List<Map<String, Object>> resultList = developmentOrderMapper.countStatusBatch(STATUS_CODES);
|
|
|
// 将 List<Map<String, Object>> 转换为 Map<Long, Integer>
|
|
|
- Map<Long, Integer> result = new HashMap<>();
|
|
|
- for (Long statusCode : allStatusCodes) {
|
|
|
+ Map<Integer, Integer> result = new HashMap<>();
|
|
|
+ for (Integer statusCode : STATUS_CODES) {
|
|
|
result.put(statusCode, 0); // 初始化所有状态代码,默认值为0
|
|
|
}
|
|
|
for (Map<String, Object> row : resultList) {
|
|
|
- Long key = ((Number) row.get("key")).longValue();
|
|
|
+ Integer key = (Integer) row.get("key");
|
|
|
Integer value = ((Number) row.get("value")).intValue();
|
|
|
result.put(key, value);
|
|
|
}
|
|
|
- Map<Long, String> statusCountMap = new HashMap<>();
|
|
|
- for (Map.Entry<Long, Integer> entry : result.entrySet()) {
|
|
|
- Long status = entry.getKey();
|
|
|
+ Map<Integer, String> statusCountMap = new HashMap<>();
|
|
|
+ for (Map.Entry<Integer, Integer> entry : result.entrySet()) {
|
|
|
+ Integer status = entry.getKey();
|
|
|
Integer baseCount = entry.getValue();
|
|
|
|
|
|
statusCountMap.put(status, String.valueOf(baseCount));
|
|
@@ -135,11 +134,14 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
if (StringUtils.isNotBlank(bo.getCustomerName())) {
|
|
|
queryWrapper.like(DevelopmentOrder::getCustomerName, bo.getCustomerName());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getFabric())) {
|
|
|
- queryWrapper.like(DevelopmentOrder::getFabric, bo.getFabric());
|
|
|
+ if (StringUtils.isNotBlank(bo.getMianliao())) {
|
|
|
+ queryWrapper.like(DevelopmentOrder::getMianliao, bo.getMianliao());
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(bo.getKuanhao())) {
|
|
|
+ queryWrapper.like(DevelopmentOrder::getKuanhao, bo.getKuanhao());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getItemNumber())) {
|
|
|
- queryWrapper.like(DevelopmentOrder::getItemNumber, bo.getItemNumber());
|
|
|
+ if (bo.getStatus() != null) {
|
|
|
+ queryWrapper.eq(DevelopmentOrder::getStatus, bo.getStatus());
|
|
|
}
|
|
|
|
|
|
// 时间范围处理
|
|
@@ -166,9 +168,9 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public int update(DevelopmentOrderBo developmentOrderBo) {
|
|
|
- checkStatus(developmentOrderBo);
|
|
|
- return developmentOrderMapper.updateById(MapstructUtils.convert(developmentOrderBo, DevelopmentOrder.class));
|
|
|
+ public boolean update(List<DevelopmentOrderBo> developmentOrderBo) {
|
|
|
+ developmentOrderBo.forEach(this::checkStatus);
|
|
|
+ return developmentOrderMapper.updateBatchById(MapstructUtils.convert(developmentOrderBo, DevelopmentOrder.class));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -190,68 +192,35 @@ public class DevelopmentOrderServiceImpl implements DevelopmentOrderService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public DevelopmentOrderVo selectById(Long id) {
|
|
|
+ public DevelopmentOrderVo selectById(int id) {
|
|
|
return MapstructUtils.convert(developmentOrderMapper.selectById(id), DevelopmentOrderVo.class);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void checkStatus(DevelopmentOrderBo developmentOrderBo) {
|
|
|
-// 状态为画图中
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_THE_DRAWING)) {
|
|
|
- assertNotLongBlank(developmentOrderBo.getDesignUserId(), "设计师不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getDesignFile(), "设计文件不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getDesignImage(), "设计图片不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getDesignMaterial(), "素材图片不能为空");
|
|
|
-// 设置画图开始时间
|
|
|
- developmentOrderBo.setStatus1StartTime(LocalDateTime.now());
|
|
|
- }
|
|
|
-// 状态为确认中
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS)) {
|
|
|
- assertNotLongBlank(developmentOrderBo.getConfirmUserId(), "确认人不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getPaperDesignFile(), "纸样文件不能为空");
|
|
|
-// 设置画图结束时间
|
|
|
- developmentOrderBo.setStatus1EndTime(LocalDateTime.now());
|
|
|
-// 设置确认开始时间
|
|
|
- developmentOrderBo.setStatus2StartTime(LocalDateTime.now());
|
|
|
- }
|
|
|
-// 状态为调色中
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT)) {
|
|
|
- assertNotLongBlank(developmentOrderBo.getColorUserId(), "调色人不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getColorFile(), "调色文件不能为空");
|
|
|
-// 设置确认结束时间
|
|
|
- developmentOrderBo.setStatus2EndTime(LocalDateTime.now());
|
|
|
-// 设置调色开始时间
|
|
|
- developmentOrderBo.setStatus3StartTime(LocalDateTime.now());
|
|
|
- }
|
|
|
-// 状态为排版中
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.IN_TYPESETTING)) {
|
|
|
- assertNotLongBlank(developmentOrderBo.getLayoutUserId(), "排版人不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getLayoutFile(), "排版文件不能为空");
|
|
|
-// 设置调色结束时间
|
|
|
- developmentOrderBo.setStatus3EndTime(LocalDateTime.now());
|
|
|
-// 设置排版开始时间
|
|
|
- developmentOrderBo.setStatus4StartTime(LocalDateTime.now());
|
|
|
- }
|
|
|
-// 状态为打版中
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.PRINTING_IN_PROGRESS)) {
|
|
|
- assertNotLongBlank(developmentOrderBo.getPatternUserid(), "打版人不能为空");
|
|
|
- assertNotBlank(developmentOrderBo.getPatternFile(), "打版文件不能为空");
|
|
|
-// 设置排版结束时间
|
|
|
- developmentOrderBo.setStatus4EndTime(LocalDateTime.now());
|
|
|
-// 设置打版开始时间
|
|
|
- developmentOrderBo.setStatus5StartTime(LocalDateTime.now());
|
|
|
- }
|
|
|
-// 状态为已完成
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.COMPLETED)) {
|
|
|
-
|
|
|
- }
|
|
|
-// 状态为取消
|
|
|
- if (developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CANCELLED)) {
|
|
|
- if (!developmentOrderBo.getStatus().equals(DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS)) {
|
|
|
- throw new ServiceException("状态为确认中才可以取消");
|
|
|
- }
|
|
|
- developmentOrderBo.setCancelTime(LocalDateTime.now());
|
|
|
- }
|
|
|
+ DevelopmentOrderVo developmentOrderVo = selectById(developmentOrderBo.getId());
|
|
|
+ developmentOrderBo.setOrderNum(developmentOrderVo.getOrderNum());
|
|
|
+ developmentOrderBo.setStatus(developmentOrderVo.getStatus());
|
|
|
+ DevelopmentOrderState initialState = switch (developmentOrderBo.getStatus()) {
|
|
|
+// 待处理
|
|
|
+ case DevelopmentOrderConstants.PENDING_PROCESSING -> new PendingStatusServiceImpl();
|
|
|
+// 画图中
|
|
|
+ case DevelopmentOrderConstants.IN_THE_DRAWING -> new StateInDrawingServiceImpl();
|
|
|
+// 确认中
|
|
|
+ case DevelopmentOrderConstants.CONFIRMING_IN_PROGRESS -> new ConfirmTheStatusInProgressServiceImpl();
|
|
|
+// 调色中
|
|
|
+ case DevelopmentOrderConstants.IN_COLOR_ADJUSTMENT -> new ColorGradingStatusServiceImpl();
|
|
|
+// 排版中
|
|
|
+ case DevelopmentOrderConstants.IN_TYPESETTING -> new StatusInTypesettingServiceImpl();
|
|
|
+// 打版中
|
|
|
+ case DevelopmentOrderConstants.PRINTING_IN_PROGRESS -> new PrintingStatusServiceImpl();
|
|
|
+// 已完成
|
|
|
+ case DevelopmentOrderConstants.COMPLETED -> new CompletedStatusServiceImpl();
|
|
|
+ default -> throw new IllegalStateException("意外状态: " + developmentOrderBo.getStatus());
|
|
|
+ };
|
|
|
+
|
|
|
+ DevelopmentOrderContext context = new DevelopmentOrderContext(initialState);
|
|
|
+ context.handle(developmentOrderBo, developmentOrderVo);
|
|
|
}
|
|
|
|
|
|
public static void assertNotLongBlank(Long longId, String errorMessage) {
|