|
@@ -1,25 +1,33 @@
|
|
|
package org.dromara.management.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import org.dromara.common.core.constant.DevelopmentBulkOrderConstants;
|
|
|
+import org.dromara.common.core.exception.ServiceException;
|
|
|
+import org.dromara.common.core.utils.MapstructUtils;
|
|
|
+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.management.domain.BulkOrder;
|
|
|
+import org.dromara.management.domain.BulkOrderLogs;
|
|
|
import org.dromara.management.domain.bo.BulkOrderBo;
|
|
|
+import org.dromara.management.domain.bo.BulkOrderLogsBo;
|
|
|
+import org.dromara.management.domain.vo.BulkOrderLogsVo;
|
|
|
import org.dromara.management.domain.vo.BulkOrderVo;
|
|
|
import org.dromara.management.domain.vo.DevelopmentOrderTableDataInfo;
|
|
|
+import org.dromara.management.domain.vo.DevelopmentOrderVo;
|
|
|
+import org.dromara.management.mapper.BulkOrderLogsMapper;
|
|
|
import org.dromara.management.mapper.BulkOrderMapper;
|
|
|
import org.dromara.management.service.BulkOrderService;
|
|
|
import org.dromara.management.service.DevelopmentOrderService;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.time.LocalDate;
|
|
|
-import java.util.HashMap;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
|
|
|
import static cn.hutool.core.date.LocalDateTimeUtil.parseDate;
|
|
|
|
|
@@ -29,6 +37,7 @@ public class BulkOrderServiceImpl extends ServiceImpl<BulkOrderMapper, BulkOrder
|
|
|
|
|
|
private final BulkOrderMapper bulkOrderMapper;
|
|
|
private final DevelopmentOrderService developmentOrderService;
|
|
|
+ private final BulkOrderLogsMapper bulkOrderLogsMapper;
|
|
|
|
|
|
private static final Set<Integer> STATUS_CODES = Set.of(
|
|
|
DevelopmentBulkOrderConstants.AWAIT_BULK_ORDER,
|
|
@@ -36,10 +45,12 @@ public class BulkOrderServiceImpl extends ServiceImpl<BulkOrderMapper, BulkOrder
|
|
|
DevelopmentBulkOrderConstants.THE_BULK_ORDER_HAS_BEEN_COMPLETED
|
|
|
);
|
|
|
|
|
|
+ private static final String FIELD_NAME = "fa_template_dahuo_order";
|
|
|
private static final Map<Integer, String> SPECIAL_STATUS_FIELDS = new HashMap<>();
|
|
|
|
|
|
static {
|
|
|
SPECIAL_STATUS_FIELDS.put(DevelopmentBulkOrderConstants.AWAIT_BULK_ORDER, "status_1_end_time");
|
|
|
+ SPECIAL_STATUS_FIELDS.put(DevelopmentBulkOrderConstants.ARRANGE_BULK_ORDERS, "status_2_end_time");
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -47,8 +58,16 @@ public class BulkOrderServiceImpl extends ServiceImpl<BulkOrderMapper, BulkOrder
|
|
|
QueryWrapper<BulkOrder> queryWrapper = new QueryWrapper<>();
|
|
|
addDynamicConditions(queryWrapper, bo);
|
|
|
// 获取所有状态的数量(画图中、确认中、修改中、调色中、排版中、打版中字段为:进行中/总数量、其余为:总数量)
|
|
|
- Map<Integer, String> statusCount = developmentOrderService.getStatusCount(STATUS_CODES, SPECIAL_STATUS_FIELDS);
|
|
|
- return DevelopmentOrderTableDataInfo.build(bulkOrderMapper.getList(pageQuery.build(), queryWrapper), statusCount);
|
|
|
+ Map<Integer, String> statusCount = developmentOrderService.getStatusCount(STATUS_CODES, SPECIAL_STATUS_FIELDS, FIELD_NAME);
|
|
|
+
|
|
|
+ Page<BulkOrderVo> page = bulkOrderMapper.getList(pageQuery.build(), queryWrapper);
|
|
|
+ page.getRecords().forEach(item -> {
|
|
|
+ QueryWrapper<BulkOrderLogs> wrapper = new QueryWrapper<>();
|
|
|
+ wrapper.eq("dahuo_orderid", item.getId());
|
|
|
+ List<BulkOrderLogsVo> bulkOrderLogsVo = bulkOrderLogsMapper.selectVoList(wrapper);
|
|
|
+ item.setBulkOrderLogsVo(bulkOrderLogsVo);
|
|
|
+ });
|
|
|
+ return DevelopmentOrderTableDataInfo.build(page, statusCount);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -60,17 +79,17 @@ public class BulkOrderServiceImpl extends ServiceImpl<BulkOrderMapper, BulkOrder
|
|
|
private void addDynamicConditions(QueryWrapper<BulkOrder> queryWrapper, BulkOrderBo bo) {
|
|
|
Map<String, Object> params = bo.getParams();
|
|
|
// 字符串字段处理
|
|
|
- if (StringUtils.isNotBlank(bo.getDevelopmentOrderBo().getCustomerName())) {
|
|
|
- queryWrapper.like("fo.customer_name", bo.getDevelopmentOrderBo().getCustomerName());
|
|
|
+ if (StringUtils.isNotBlank(bo.getCustomerName())) {
|
|
|
+ queryWrapper.like("fo.customer_name", bo.getCustomerName());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getDevelopmentOrderBo().getMianliao())) {
|
|
|
- queryWrapper.like("fo.mianliao", bo.getDevelopmentOrderBo().getMianliao());
|
|
|
+ if (StringUtils.isNotBlank(bo.getMianliao())) {
|
|
|
+ queryWrapper.like("fo.mianliao", bo.getMianliao());
|
|
|
}
|
|
|
- if (StringUtils.isNotBlank(bo.getDevelopmentOrderBo().getKuanhao())) {
|
|
|
- queryWrapper.like("fo.kuanhao", bo.getDevelopmentOrderBo().getKuanhao());
|
|
|
+ if (StringUtils.isNotBlank(bo.getKuanhao())) {
|
|
|
+ queryWrapper.like("fo.kuanhao", bo.getKuanhao());
|
|
|
}
|
|
|
- if (bo.getDevelopmentOrderBo().getStatus() != null) {
|
|
|
- queryWrapper.eq("fo.status", bo.getDevelopmentOrderBo().getStatus());
|
|
|
+ if (bo.getStatus() != 0) {
|
|
|
+ queryWrapper.eq("fd.status", bo.getStatus());
|
|
|
}
|
|
|
|
|
|
// 时间范围处理
|
|
@@ -81,9 +100,63 @@ public class BulkOrderServiceImpl extends ServiceImpl<BulkOrderMapper, BulkOrder
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public int insertBulkOrder(BulkOrderBo bo) {
|
|
|
+ DevelopmentOrderVo developmentOrderVo = developmentOrderService.selectById(bo.getDevOrderid());
|
|
|
+ bo.setPaperDesignFile(developmentOrderVo.getPaperDesignFile());
|
|
|
+ bo.setStatus_1StartTime(new Date());
|
|
|
+ bo.setStatus(DevelopmentBulkOrderConstants.AWAIT_BULK_ORDER);
|
|
|
+ bo.setOrderNum(OrderNumberGenerator.getInstance().generateOrderNumber("DH%s%03d"));
|
|
|
+ return bulkOrderMapper.insert(MapstructUtils.convert(bo, BulkOrder.class));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public boolean editBulkOrder(List<BulkOrderBo> bo) {
|
|
|
+ bo.forEach(this::checkStatus);
|
|
|
+ return bulkOrderMapper.updateBatchById(MapstructUtils.convert(bo, BulkOrder.class));
|
|
|
+ }
|
|
|
|
|
|
- return false;
|
|
|
+ private void checkStatus(BulkOrderBo bo) {
|
|
|
+ BulkOrderVo bulkOrderVo = bulkOrderMapper.selectVoById(bo.getId());
|
|
|
+ bo.setDevOrderid(bulkOrderVo.getDevOrderid());
|
|
|
+ if (bo.getStatus() != 0) {
|
|
|
+// 状态为排大货中
|
|
|
+ if (bo.getStatus() == DevelopmentBulkOrderConstants.ARRANGE_BULK_ORDERS) {
|
|
|
+// 设置待排大货完成时间
|
|
|
+ bo.setStatus_1EndTime(new Date());
|
|
|
+// 设置排大货中开始时间
|
|
|
+ bo.setStatus_2StartTime(new Date());
|
|
|
+ insertBulkOrderLogs(bulkOrderVo.getId(), "排大货中");
|
|
|
+ }
|
|
|
+// 状态为大货已完成
|
|
|
+ if (bo.getStatus() == DevelopmentBulkOrderConstants.THE_BULK_ORDER_HAS_BEEN_COMPLETED) {
|
|
|
+ if (bulkOrderVo.getPlateFile() == null || bulkOrderVo.getPlateFile().isEmpty()) {
|
|
|
+ throw new ServiceException("订单:" + bulkOrderVo.getOrderNum() + "还未上传排大版全码截图");
|
|
|
+ } else {
|
|
|
+// 设置排大货结束时间
|
|
|
+ bo.setStatus_2EndTime(new Date());
|
|
|
+ insertBulkOrderLogs(bulkOrderVo.getId(), "排大货完成");
|
|
|
+// 设置大货已完成时间
|
|
|
+ bo.setStatus_3StartTime(new Date());
|
|
|
+ insertBulkOrderLogs(bulkOrderVo.getId(), "大货完成");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 新增大货订单日志
|
|
|
+ *
|
|
|
+ * @param devOrderId
|
|
|
+ * @param content
|
|
|
+ */
|
|
|
+ public void insertBulkOrderLogs(int devOrderId, String content) {
|
|
|
+ BulkOrderLogs bulkOrderLogs = new BulkOrderLogs();
|
|
|
+ bulkOrderLogs.setDahuoOrderid(devOrderId);
|
|
|
+ bulkOrderLogs.setContent(content);
|
|
|
+ bulkOrderLogs.setCreatetime(new Date());
|
|
|
+ bulkOrderLogs.setName(LoginHelper.getUsername());
|
|
|
+ bulkOrderLogsMapper.insert(bulkOrderLogs);
|
|
|
}
|
|
|
}
|