Merge remote-tracking branch 'origin/main'

# Conflicts:
#	cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/dal/mysql/orderBody/OrderBodyMapper.java
This commit is contained in:
liuzhaotian
2024-07-02 16:14:49 +08:00
13 changed files with 104 additions and 12 deletions
@@ -56,6 +56,7 @@ public interface ErrorCodeConstants {
ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1_002_029_006, "生产单不允许删除");
ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败");
ErrorCode PLATE_PLAN_DATA_ERROR = new ErrorCode(1_002_029_008, "板材生产数据获取错误或此单不存在");
ErrorCode PLATE_PLAN_DATA_NULL = new ErrorCode(1_002_029_008, "板材生产源数据为空");
ErrorCode PARTS_DATA_ERROR = new ErrorCode(1_002_029_009, "配件数据获取错误");
ErrorCode BODY_DATA_ERROR = new ErrorCode(1_002_029_010, "柜体数据获取错误");
ErrorCode GOODS_DATA_ERROR = new ErrorCode(1_002_029_011, "商品信息获取错误");
@@ -64,6 +65,7 @@ public interface ErrorCodeConstants {
ErrorCode FILE_READ_ERR = new ErrorCode(1_002_029_012, "文件读取错误");
ErrorCode FILE_ADD_ERR = new ErrorCode(1_002_029_012, "文件已经存在是否强制保存");
ErrorCode FILE_UPLOAD_ERR = new ErrorCode(1_002_029_012, "文件内容为空");
ErrorCode ORDER_STATUS_CONFLICT = new ErrorCode(1_002_029_006, "生产单状态冲突,禁止投入生产");
ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败");
ErrorCode ORDER_CAN_NOT_DELETE = new ErrorCode(1_002_029_013, "存在状态不符合强制删除的生产单,禁止删除");
@@ -39,6 +39,7 @@ import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_ERROR;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_NULL;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.service.order.OrderService;
@@ -228,6 +229,9 @@ public class OrderController {
if (!dataPlates.getString("err_code").equals("0")) {
throw exception(PLATE_PLAN_DATA_ERROR);
}
if (dataPlates.getJSONObject("value") == null) {
throw exception(PLATE_PLAN_DATA_NULL);
}
JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get();
JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get();
JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get();
@@ -273,17 +277,25 @@ public class OrderController {
return;
} else if (excelReadUtil.isErr() > 0) {
// 返回文件
// System.out.println("(Map<Object, Object>) " + (Map<Object, Object>) map.get("order")+ " , (List<OrderPlateImportExcelVO>)" +(List<OrderPlateImportExcelVO>) map.get("plate"));
ExcelWriterUtil.write(response, (Map<Object, Object>) map.get("order"), (List<OrderPlateImportExcelVO>) map.get("plate"), orderService.getSavePath() + File.separator + "生产单Excel导入错误导出模板.xlsx");
return;
} else {
// 获取数据
list = (List<?>) map.get("plate");
orderDO = excelReadUtil.changeOrderDO((Map<Object, Object>) map.get("order")).setOrderType(0).setStatus(1);
if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) {
ExcelWriterUtil.writeErr(response, "自定义生产单号存在", orderService.getSavePath() + File.separator + "错误文件.xlsx");
Map<String, Object> mapOrder = excelReadUtil.changeOrderDO((Map<Object, Object>) map.get("order"));
if (list.size() == 0) {
orderDO.setStatus(0);
}
orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(0).setStatus(1);
String err = ((String) mapOrder.get("error"));
if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) {
err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;";
}
if (!err.equals("")) {
ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "错误文件.xlsx");
}
}
} else if (type == 1) { // json
@@ -64,4 +64,11 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
List<OrderRoomBodyRespVO> selectRoomAndBody(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
// 生产单柜体记录数量
default int selectCountByOrderId(Long orderId, Long organId, Integer deleted) {
return Math.toIntExact(selectCount(new LambdaUpdateWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getDeleted, deleted)
.eq(OrderBodyDO::getOrganId, organId)));
}
}
@@ -219,6 +219,12 @@ public class OrderServiceImpl implements OrderService {
orderProcessMapper.updateOrderDeleted(orderId, OrderDeletedEnum.NOT_DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
processStepMapper.updateOrderDeleted(orderId, OrderDeletedEnum.NOT_DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
if (orderDO.getStatus() == OrderStatusEnum.EMPTY.getStatus() ) {
if (orderBodyMapper.selectCountByOrderId(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) {
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.NEW_ORDER.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
}
}
}
private void validateOrderExists(Long id, Long organId) {
@@ -365,6 +371,10 @@ public class OrderServiceImpl implements OrderService {
orderPartsMapper.updateDeletedById(partsList, OrderDeletedEnum.DELETED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
});
}
// 生产单柜体数量判断
if (orderBodyMapper.selectCountByOrderId(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(),OrderDeletedEnum.NOT_DELETED.getStatus()) == 0) {
orderMapper.updateOrderStatus(orderId, OrderStatusEnum.EMPTY.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
}
}
@Override
@@ -579,7 +589,7 @@ public class OrderServiceImpl implements OrderService {
goodsDO = (List<GoodsDO>) map.get("goodsDO");
List<PlateGoodDO> plateGoodDOS = (List<PlateGoodDO>) map.get("plateGoodDOLists");
validateCustomOrderNoExists(orderDO.getCustomOrderNo());
// validateCustomOrderNoExists(orderDO.getCustomOrderNo());
orderInputProcessor.batchInsert(rawGoodsDO, bodyDO, groupDO, partsDO, plateDO, null, itemDO, orderDO, goodsDO, plateGoodDOS);
orderInputProcessor.batchSaveModel(orderModelDOS);
orderInputProcessor.batchSaveOrderPartsModel(orderPartsRemarks);
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.processStep.ProcessStepDO;
@@ -15,6 +16,7 @@ import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
import com.cf.imes.module.executor.dal.mysql.processStepItem.ProcessStepItemMapper;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.enums.ProcessTypeEnum;
import com.cf.imes.module.system.api.process.ProcessGroupApi;
@@ -84,9 +86,15 @@ public class OrderProcessServiceImpl implements OrderProcessService {
@Override
@Transactional(rollbackFor = Exception.class)
public Long createOrderProcess(OrderProcessSaveReqVO createReqVO) {
OrderDO order = orderMapper.selectOrderOne(createReqVO.getOrderId(), SecurityFrameworkUtils.getLoginUser().getOrganId(), OrderDeletedEnum.NOT_DELETED.getStatus());
// 当生产不为删除时,校验生产单存在
if (orderMapper.selectOrder(createReqVO.getOrderId(), SecurityFrameworkUtils.getLoginUser().getOrganId()).isEmpty()) {
if (order == null) {
throw exception(ORDER_NOT_EXISTS);
}else {
// 校验生产单状态
if (order.getStatus() != OrderStatusEnum.NEW_ORDER.getStatus()) {
throw exception(ORDER_STATUS_CONFLICT);
}
}
// 校验工序组存在
if (!processGroupApi.getProcessGroup(createReqVO.getGroupId())) {
@@ -21,9 +21,12 @@ import java.io.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
import java.util.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
@Component
@@ -73,11 +76,19 @@ public class ExcelReadUtil { // 文件读取
}
// order 数据转换
public OrderDO changeOrderDO(Map<Object, Object> orderMap) {
public Map<String, Object> changeOrderDO(Map<Object, Object> orderMap) {
Map<String, Object> map = new HashMap<>();
String s = (String) orderMap.get("出货日期");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate orderDate = LocalDate.parse(s, formatter);
// string 拼接
String error = "";
// 电话校验
if (!validatePhoneNumber((String) orderMap.get("客户电话"))) {
error += (String) orderMap.get("客户电话")+ "-客户电话格式错误;";
}
if (!validatePhoneNumber((String) orderMap.get("经销商电话"))) {
error += (String) orderMap.get("经销商电话")+ "-经销商电话格式错误;";
}
OrderDO orderDO = OrderDO.builder()
.organId(OrganContextHolder.getOrganId())
.dataType(0)
@@ -88,11 +99,35 @@ public class ExcelReadUtil { // 文件读取
.address((String) orderMap.get("客户地址"))
.phoneNumber((String) orderMap.get("客户电话"))
.salesman((String) orderMap.get("业务员"))
.deliveryDate(orderDate.atStartOfDay())
.splitter((String) orderMap.get("拆单员"))
.remark((String) orderMap.get("备注"))
.build();
return orderDO;
try {
LocalDate orderDate = LocalDate.parse(s, formatter);
orderDO.setDeliveryDate(orderDate.atStartOfDay());
} catch (DateTimeParseException e) {
error += s + "-出货日期格式错误;";
}
map.put("order", orderDO);
map.put("error", error);
return map;
}
private Boolean validatePhoneNumber(String phoneNumber) {
// 定义手机号正则表达式
String regex = "^1[3-9]\\d{9}$";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建 Matcher 对象
Matcher matcher = pattern.matcher(phoneNumber);
// 判断手机号是否匹配正则表达式
if (!matcher.matches()) {
return false;
}
return true;
}
private LocalDateTime changeTime(String dateString) {