生产单添加空单状态以及空单相关修改

This commit is contained in:
lym
2024-07-01 17:05:56 +08:00
parent 3aebaf3cb3
commit b326d15605
8 changed files with 94 additions and 11 deletions
@@ -64,6 +64,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, "存在状态不符合强制删除的生产单,禁止删除");
@@ -262,17 +262,22 @@ 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"));
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
@@ -61,4 +61,11 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
.eq(OrderBodyDO::getOrganId, 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)));
}
}
@@ -211,6 +211,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) {
@@ -346,6 +352,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
@@ -560,7 +570,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,13 +99,54 @@ 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 Boolean validateDate(String dateString) {
// 定义日期正则表达式
String regex = "^\\d{4}/\\d{2}/\\d{2}$";
// 编译正则表达式
Pattern pattern = Pattern.compile(regex);
// 创建 Matcher 对象
Matcher matcher = pattern.matcher(dateString);
// 判断日期是否匹配正则表达式
if (!matcher.matches()) {
return false;
}
return true;
}
private LocalDateTime changeTime(String dateString) {
// 使用 DateTimeFormatter 解析字符串为 LocalDateTime 对象