Merge remote-tracking branch 'origin/main'

This commit is contained in:
liuzhaotian
2024-06-26 19:09:00 +08:00
23 changed files with 158 additions and 105 deletions
@@ -241,6 +241,7 @@ public class OrderController {
public void exportTest(@RequestPart("file") MultipartFile file,
@RequestParam(value = "type", required = false, defaultValue = "true") Integer type,
HttpServletResponse response) throws IOException {
System.out.println("kkkkkkkk");
List<?> list = null;
OrderDO orderDO = new OrderDO();
@@ -263,6 +264,10 @@ public class OrderController {
// 获取数据
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");
}
}
} else if (type == 1) { // json
@@ -7,11 +7,7 @@ import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @projectName: cf_imes_server
* @author: 晨丰科技
* @date: 2024/3/6 10:03
*/
@Schema(description = "管理后台 - 生产单导入 Response VO")
@Data
@Builder
@@ -56,7 +56,7 @@ public class GoodsDO extends BaseDO {
/**
* 纹路 0 正纹 1 可翻转 2 反纹
*/
private Integer texture;
private Boolean texture;
/**
* 颜色
*/
@@ -43,7 +43,7 @@ public class PlateGoodDO extends BaseDO {
/**
* 纹路
*/
private String texture;
private Boolean texture;
/**
* 宽度
*/
@@ -54,7 +54,7 @@ public class RawGoodsDO extends BaseDO {
/**
* 纹路 0 正纹 1 可翻转 2 反纹
*/
private Integer texture;
private Boolean texture;
/**
* 厚度
*/
@@ -25,7 +25,7 @@ public interface PlateGoodMapper extends BaseMapperX<PlateGoodDO> {
}
// 其他信息匹配
default PlateGoodDO selectGood(String goodsName, String material, String color, Integer texture, BigDecimal width,
default PlateGoodDO selectGood(String goodsName, String material, String color, Boolean texture, BigDecimal width,
BigDecimal thickness, BigDecimal height, String brand, String spec, Long organId) {
return selectOne(new LambdaQueryWrapper<PlateGoodDO>()
.eq(PlateGoodDO::getGoodsName, goodsName)
@@ -157,4 +157,8 @@ public interface OrderService {
}
/**
* 自定义单号是否存在
*/
Boolean customOrderNoIsExists(String customOrderNo);
}
@@ -3,7 +3,6 @@ package com.cf.imes.module.executor.service.order;
import cn.smallbun.screw.core.util.CollectionUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
@@ -34,10 +33,8 @@ import com.cf.imes.module.executor.dal.mysql.processStep.ProcessStepMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.util.ExcelWriterUtil;
import com.cf.imes.module.executor.util.deviseData.dataTwo.PlateDetail;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.ExcelTypeRealize;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import com.cf.imes.module.system.api.dict.DictDataApi;
import com.cf.imes.module.system.api.user.AdminUserApi;
import org.springframework.stereotype.Service;
@@ -486,6 +483,20 @@ public class OrderServiceImpl implements OrderService {
}
}
@Override
public Boolean customOrderNoIsExists(String customOrderNo) {
if (customOrderNo != null) {
if (!customOrderNo.isEmpty()) {
if (orderMapper.selectCount(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getCustomOrderNo, customOrderNo)
.eq(OrderDO::getDeleted, false)
.eq(OrderDO::getOrganId, OrganContextHolder.getOrganId())) > 0) {
return false;
}
}
}
return true;
}
// 业务员是否存在
private void validateSalesmanOrderNoExists(String salesman, Long organId) {
if (adminUserApi.validateUser(salesman, organId).getData() == null) {
@@ -341,7 +341,7 @@ public class ApiTypeRealize {
.goodsName(goods.getString("GoodsName"))
.material(goods.getString("Material"))
.color(goods.getString("Color"))
.texture(goods.getInteger("Wave"))
.texture(false)
.thickness(goods.getDouble("Thickness"))
.price(goods.getDouble("Price"))
.brand(goods.getString("Brand"))
@@ -357,7 +357,7 @@ public class ApiTypeRealize {
.goodsName(goods.getString("GoodsName"))
.material(goods.getString("Material"))
.color(goods.getString("Color"))
.texture(goods.getInteger("Wave"))
.texture(false)
.width(BigDecimal.valueOf(goods.getDouble("Width")))
.height(BigDecimal.valueOf(goods.getDouble("Height")))
.thickness(BigDecimal.valueOf(goods.getDouble("Thickness")))
@@ -53,7 +53,7 @@ public class ExcelReadUtil { // 文件读取
}
if (index.get()) {
orderMap.put(item.get(0), item.get(1));
orderMap.put(item.get(12), item.get(13));
orderMap.put(item.get(13), item.get(14));
} else {
if (!(item.get(0).equals("序号") || item.get(0).equals("###"))) {
list.add(changeValue(item));
@@ -130,110 +130,112 @@ public class ExcelReadUtil { // 文件读取
case 4:// 材质
vo.setMaterial(value);
break;
case 5:// 颜色
case 5:// 纹理
vo.setWave(value);
break;
case 6:// 颜色
vo.setColor(value);
break;
case 6:// 厂家
case 7:// 厂家
vo.setFactory(value);
break;
case 7:// 品牌
case 8:// 品牌
vo.setBrand(value);
break;
case 8:// 型号
case 9:// 型号
vo.setModel(value);
break;
case 9:// 规格
case 10:// 规格
vo.setSpec(value);
break;
case 10:// 单位
case 11:// 单位
vo.setUnit(value);
break;
case 11:// 数量
case 12:// 数量
vo.setGoodsNumber(value);
break;
case 12:// 房间
case 13:// 房间
vo.setRoomsName(value);
break;
case 13:// 柜体
case 14:// 柜体
vo.setCabinetsName(value);
break;
case 14:// 加工组类型
case 15:// 加工组类型
vo.setSynthesisTypeName(value);
break;
case 15:// 加工组名称
case 16:// 加工组名称
vo.setCombinationName(value);
break;
case 16://板名称
case 17://板名称
vo.setName(value);
break;
case 17:// 自定义板编号
case 18:// 自定义板编号
vo.setPlateNo(value);
break;
case 18:// 成品长
case 19:// 成品长
vo.setHeight(value);
break;
case 19:// 成品宽
case 20:// 成品宽
vo.setWidth(value);
break;
case 20:// 拆单长
case 21:// 拆单长
vo.setSplitHeight(value);
break;
case 21:// 拆单宽
case 22:// 拆单宽
vo.setSplitWidth(value);
break;
case 22:// 厚
case 23:// 厚
vo.setThickness(value);
break;
case 23:// 左封边
case 24:// 左封边
vo.setSealLeft(value);
break;
case 24:// 右封边
case 25:// 右封边
vo.setSealRight(value);
break;
case 25:// 上封边
case 26:// 上封边
vo.setSealUp(value);
break;
case 26:// 下封边
case 27:// 下封边
vo.setSealDown(value);
break;
case 27:// 排版面
case 28:// 排版面
vo.setTypographicFace(value);
break;
case 28:// 纹路
case 29:// 纹路
vo.setTexture(value);
break;
case 29:// 开门方向
case 30:// 开门方向
vo.setOpenDoorType(value);
break;
case 30://备注1
case 31://备注1
vo.setRemark1(value);
break;
case 31://备注2
case 32://备注2
vo.setRemark2(value);
break;
case 32://备注3
case 33://备注3
vo.setRemark3(value);
break;
case 33://备注4
case 34://备注4
vo.setRemark4(value);
break;
case 34://备注5
case 35://备注5
vo.setRemark5(value);
break;
case 35://备注6
case 36://备注6
vo.setRemark6(value);
break;
case 36://备注7
case 37://备注7
vo.setRemark7(value);
break;
case 37://备注8
case 38://备注8
vo.setRemark8(value);
break;
case 38://备注9
case 39://备注9
vo.setRemark9(value);
break;
case 39://备注10
case 40://备注10
vo.setRemark10(value);
break;
default:
@@ -262,6 +264,16 @@ public class ExcelReadUtil { // 文件读取
}
// 若商品类型为板材,需检查房间、柜体、板名称、成品长、成品宽、拆单长、拆单宽、厚、左封边、右封边、上封边、下封边、排版面、纹路、开门方向不能为空
if (StringUtils.equals(vo.getGoodType(), "板材")) {
// 纹理有效性判断
if (StringUtils.isEmpty(vo.getWave())) {
errList.add("板材纹理不可为空");
flag = false;
}else {
if (!StringUtils.equals(vo.getWave().trim(), "") && !StringUtils.equals(vo.getWave().trim(), "")) {
flag = false;
errList.add("纹理无效");
}
}
if (StringUtils.isEmpty(vo.getRoomsName()) && StringUtils.isEmpty(vo.getCabinetsName()) && StringUtils.isEmpty(vo.getName())) {
flag = false;
errList.add("房间、柜体、板名称不能为空");
@@ -365,22 +377,16 @@ public class ExcelReadUtil { // 文件读取
if (typographyDTO == null) {
flag = false;
errList.add("排版面数据不存在");
} else {
vo.setTypographicFace(typographyDTO.getValue());
}
DictDataRespDTO grainDTO = dictDataApi.parseDictData(DictTypeConstants.GRAIN_TYPE, vo.getTexture()).getData();// 纹路
if (grainDTO == null) {
flag = false;
errList.add("纹路数据不存在");
} else {
vo.setTexture(grainDTO.getValue());
}
DictDataRespDTO doorDTO = dictDataApi.parseDictData(DictTypeConstants.DOOR_OPENING_DIRECTIONS, vo.getOpenDoorType()).getData();
if (doorDTO == null) {
flag = false;
errList.add("开门方向数据不存在");
} else {
vo.setOpenDoorType(doorDTO.getValue());
}
}
}
@@ -1,6 +1,7 @@
package com.cf.imes.module.executor.util.fileConversion.admin.files.excel;
import cn.hutool.json.JSONObject;
import com.alibaba.nacos.common.utils.StringUtils;
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRemark;
@@ -16,6 +17,9 @@ import com.cf.imes.module.executor.dal.dataobject.plate.PlateGoodDO;
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
import com.cf.imes.module.executor.enums.OrderItemTypeEnum;
import com.cf.imes.module.executor.util.fileConversion.admin.SnowflakeIdWorker3rd;
import com.cf.imes.module.system.api.dict.DictDataApi;
import com.cf.imes.module.system.api.dict.dto.DictDataRespDTO;
import com.cf.imes.module.system.enums.DictTypeConstants;
import io.swagger.v3.oas.models.security.SecurityScheme;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -41,6 +45,9 @@ public class ExcelTypeRealize {
@Resource
SnowflakeIdWorker3rd idWorker;
@Resource
private DictDataApi dictDataApi;
// 数据转换 + 错误验证
public Map<String, List<?>> changeDate(List<?> list, Long orderId) {
if (list.isEmpty()){
@@ -82,7 +89,7 @@ public class ExcelTypeRealize {
p.getMaterial(),
p.getColor(),
p.getSpec(),
p.getTexture(),
p.getWave(), // 纹理
// p.getModel(),
p.getBrand()),
Collectors.toList()
@@ -114,7 +121,6 @@ public class ExcelTypeRealize {
.setRawGoodsId(String.valueOf(rawGoodsDO.getId())).setGoodsId(String.valueOf(rawGoodsDO.getRawGoodsId()))
.setHeight(BigDecimal.valueOf(specList.get(0))).setWidth(BigDecimal.valueOf(specList.get(1)));
goodsDOS.add(plateDO);
// 赋值给板件未对应前order_raw_goods的id
for (OrderPlateImportExcelVO reqVO : value) {
reqVO.setGoodId(goodId);
@@ -186,6 +192,11 @@ public class ExcelTypeRealize {
.movePointLeft(6)
.setScale(2, RoundingMode.HALF_UP);
Long plateId = (Long) snowFlakeGenerator.nextId(null);
// 排版面 纹路 开门方向转换
DictDataRespDTO typographyDTO = dictDataApi.parseDictData(DictTypeConstants.TYPOGRAPHY_TYPE, combination.getTypographicFace()).getData();// 排版面
DictDataRespDTO grainDTO = dictDataApi.parseDictData(DictTypeConstants.GRAIN_TYPE, combination.getTexture()).getData();// 纹路
DictDataRespDTO doorDTO = dictDataApi.parseDictData(DictTypeConstants.DOOR_OPENING_DIRECTIONS, combination.getOpenDoorType()).getData();
PlateDO plateDO = PlateDO.builder()
.id(plateId).orderId(orderId)
.name(combination.getName())
@@ -202,10 +213,10 @@ public class ExcelTypeRealize {
.sealRight(BigDecimal.valueOf(Double.parseDouble(combination.getSealRight())))
.sealUp(BigDecimal.valueOf(Double.parseDouble(combination.getSealUp())))
.sealDown(BigDecimal.valueOf(Double.parseDouble(combination.getSealDown())))
.holeFace(Integer.valueOf(combination.getTypographicFace()))
.texture(Integer.valueOf(combination.getTexture()))
.holeFace(Integer.valueOf(typographyDTO.getValue()))
.texture(Integer.valueOf(grainDTO.getValue()))
.area(area)
.openDoorType(Integer.valueOf(combination.getOpenDoorType()))
.openDoorType(Integer.valueOf(doorDTO.getValue()))
.isSpecialShaped(false)
.isSculpt(false)
.remark(remarkExtract(combination.remarkJSON()))
@@ -217,14 +228,13 @@ public class ExcelTypeRealize {
.num(1.0).groupId(groupId).build();
orderItemDOS.add(orderItemDO);
orderModelDOS.add(OrderModelDO.builder().orderId(orderId).plateId(plateId)
.typographicFace(Integer.valueOf(combination.getTypographicFace())).build());
.typographicFace(Integer.valueOf(typographyDTO.getValue())).build());
}
plateCountByCabinetName[0] = plateCountByCabinetName[0] + plateCountByCombination[0];
} else {
//配件
Long partsId = (Long) snowFlakeGenerator.nextId(null);
System.err.println(" remark " + combination.remarkJSON());
OrderPartsDO orderPartsDO = OrderPartsDO.builder().id(partsId).orderId(orderId).goodsId(combination.getGoodsId())
.name(combination.getGoodsName()).material(combination.getMaterial()).type(combination.getGoodType())
.model(combination.getModel()).spec(combination.getSpec()).brand(combination.getBrand()).factory(combination.getFactory())
@@ -265,7 +275,8 @@ public class ExcelTypeRealize {
map.put("orderModuleExtraDOS", orderModuleExtraDOS);
map.put("orderModelDOS", orderModelDOS);
map.put("orderPartsRemarks", orderPartsRemarks);
System.out.println(" orderGroupDOS " + orderGroupDOS);
System.out.println(" goodsDOS " + goodsDOS);
System.out.println(" rawGoodsDOS " + rawGoodsDOS);
return map;
}
@@ -284,43 +295,35 @@ public class ExcelTypeRealize {
return nonNullJsonObject.toString();
}
// 板材库数据
private PlateGoodDO setPlateGoodDO(OrderPlateImportExcelVO excelVO) {
return PlateGoodDO.builder()
// .id(plateGoodId)
.goodsId("")
.goodsName(excelVO.getGoodsName())
.material(excelVO.getMaterial())
.color(excelVO.getColor())
.width(Double.valueOf(excelVO.getWidth()))
.height(Double.valueOf(excelVO.getHeight()))
.thickness(Double.valueOf(excelVO.getThickness()))
.spec(excelVO.getSpec())
.brand(excelVO.getBrand())
.texture(excelVO.getTexture())
// .organId(organId)
.build();
}
// RawGoodsDO数据
private RawGoodsDO setRawGoodsDO(OrderPlateImportExcelVO excelVO) {
if (StringUtils.equals(excelVO.getWave().trim(), "")) {
excelVO.setWave("false");
} else if (StringUtils.equals(excelVO.getWave().trim(), "")) {
excelVO.setWave("true");
}
return RawGoodsDO.builder()
// .id(rawGoodsId)
// .orderId(orderId)
.rawGoodsId(excelVO.getGoodsId())
.goodsName(excelVO.getGoodsName())
.material(excelVO.getMaterial())
.texture(Integer.valueOf(excelVO.getTexture()))
.texture(Boolean.valueOf(excelVO.getWave()))
.color(excelVO.getColor())
.thickness(Double.valueOf(excelVO.getThickness()))
.spec(excelVO.getSpec())
.brand(excelVO.getBrand())
.texture(Integer.valueOf(excelVO.getTexture()))
.build();
}
// GoodsDO数据
private GoodsDO setGoodsDO(OrderPlateImportExcelVO excelVO) {
if (StringUtils.equals(excelVO.getWave().trim(), "")) {
excelVO.setWave("false");
} else if (StringUtils.equals(excelVO.getWave().trim(), "")) {
excelVO.setWave("true");
}
return GoodsDO.builder()
// .id(goodId)
// .orderId(orderId)
@@ -328,7 +331,7 @@ public class ExcelTypeRealize {
// .goodsId(plateGoodId)
.goodsName(excelVO.getGoodsName())
.material(excelVO.getMaterial())
.texture(Integer.valueOf(excelVO.getTexture()))
.texture(Boolean.valueOf(excelVO.getWave()))
.color(excelVO.getColor())
.width(BigDecimal.valueOf(Double.valueOf(excelVO.getWidth())))
.height(BigDecimal.valueOf(Double.valueOf(excelVO.getHeight())))
@@ -49,6 +49,10 @@ public class OrderPlateImportExcelVO {
@JsonIgnore
private String material;
@ExcelProperty(value = "纹理")
@JsonIgnore
private String wave;
@ExcelProperty(value = "颜色")
@JsonIgnore
private String color;