mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
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:
+2
@@ -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, "存在状态不符合强制删除的生产单,禁止删除");
|
||||
|
||||
+17
-5
@@ -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
|
||||
|
||||
|
||||
+7
@@ -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)));
|
||||
}
|
||||
}
|
||||
+11
-1
@@ -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);
|
||||
|
||||
+9
-1
@@ -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())) {
|
||||
|
||||
+40
-5
@@ -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) {
|
||||
|
||||
BIN
Binary file not shown.
BIN
Binary file not shown.
+3
@@ -49,6 +49,9 @@ public class RemainPlatePageReqVO extends PageParam {
|
||||
@Schema(description = "颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "纹理")
|
||||
private String texture;
|
||||
|
||||
@Schema(description = "宽度")
|
||||
private BigDecimal[] width;
|
||||
|
||||
|
||||
+6
@@ -7,6 +7,8 @@ import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
import com.alibaba.excel.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
|
||||
@Schema(description = "管理后台 - 生产单余料板表 order_remain_plate_{N} Response VO")
|
||||
@Data
|
||||
@ExcelIgnoreUnannotated
|
||||
@@ -56,6 +58,10 @@ public class RemainPlateRespVO {
|
||||
@ExcelProperty("颜色")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "纹理 有 无", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("纹理 有 无")
|
||||
private String texture;
|
||||
|
||||
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@ExcelProperty("宽度")
|
||||
private BigDecimal width;
|
||||
|
||||
+4
@@ -47,6 +47,10 @@ public class RemainPlateSaveReqVO {
|
||||
@NotEmpty(message = "颜色不能为空")
|
||||
private String color;
|
||||
|
||||
@Schema(description = "纹理 有 无", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotEmpty(message = "纹理不能为空")
|
||||
private String texture;
|
||||
|
||||
@Schema(description = "宽度", requiredMode = Schema.RequiredMode.REQUIRED)
|
||||
@NotNull(message = "宽度不能为空")
|
||||
private BigDecimal width;
|
||||
|
||||
+4
@@ -66,6 +66,10 @@ public class RemainPlateDO extends BaseDO {
|
||||
* 颜色
|
||||
*/
|
||||
private String color;
|
||||
/**
|
||||
* 纹理
|
||||
*/
|
||||
private Boolean texture;
|
||||
/**
|
||||
* 宽度
|
||||
*/
|
||||
|
||||
+1
@@ -36,6 +36,7 @@ public interface RemainPlateMapper extends BaseMapperX<RemainPlateDO> {
|
||||
.eqIfPresent(RemainPlateDO::getPlaceStyle, reqVO.getPlaceStyle())
|
||||
.likeIfPresent(RemainPlateDO::getStore, reqVO.getStore())
|
||||
.eqIfPresent(RemainPlateDO::getCount, reqVO.getCount())
|
||||
.eqIfPresent(RemainPlateDO::getTexture, reqVO.getTexture())
|
||||
.likeIfPresent(RemainPlateDO::getRemark, reqVO.getRemark())
|
||||
.eqIfPresent(RemainPlateDO::getUseType, reqVO.getUseType())
|
||||
.eqIfPresent(RemainPlateDO::getOrganId, reqVO.getOrganId())
|
||||
|
||||
Reference in New Issue
Block a user