mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
板材库修改
This commit is contained in:
+34
-16
@@ -1,6 +1,8 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.PlateRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import io.swagger.v3.oas.annotations.Parameters;
|
||||
import org.springframework.util.ResourceUtils;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
@@ -74,10 +76,10 @@ public class OrderController {
|
||||
|
||||
@DeleteMapping("/delete")
|
||||
@Operation(summary = "删除生产单表 order_{N}")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
@Parameter(name = "orderIds", description = "生产单id组", required = true, example = "1,2")
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:delete')")
|
||||
public CommonResult<Boolean> deleteOrder(@RequestParam("id") Long id) {
|
||||
orderService.deleteOrder(id);
|
||||
public CommonResult<Boolean> deleteOrder(@RequestParam("postIds") Collection<Long> orderIds) {
|
||||
orderService.deleteOrder(orderIds);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
@@ -154,28 +156,44 @@ public class OrderController {
|
||||
@Operation(summary = "导入生产单新增")
|
||||
@Parameters({
|
||||
@Parameter(name = "file", description = "Excel 文件", required = true),
|
||||
@Parameter(name = "updateSupport", description = "是否支持更新,默认为 false", example = "true"),
|
||||
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
|
||||
@Parameter(name = "upload", description = "是否只上传表头,默认为只上传表头", example = "true")
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:import')")
|
||||
public CommonResult<OrderImportRespVO> importExcel(@RequestPart("file") MultipartFile file,
|
||||
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
|
||||
@RequestParam(value = "upload", required = false, defaultValue = "true") Boolean upload,
|
||||
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
|
||||
|
||||
OrderImportRespVO orderImportRespVO = orderService.importOrderList(upload , file, createReqVO);
|
||||
OrderImportRespVO orderImportRespVO = orderService.importOrderList(upload, file, createReqVO, isAddPlate);
|
||||
return success(orderImportRespVO);
|
||||
}
|
||||
|
||||
//生产单信息修改
|
||||
@PostMapping("/addPlates")
|
||||
@Operation(summary = "生产单添加板材")
|
||||
@Parameters({
|
||||
@Parameter(name = "id", description = "编号", required = true, example = "1024")
|
||||
})
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:update')")
|
||||
public CommonResult updateOrder(@RequestParam("id") Long id,
|
||||
@RequestPart("file") MultipartFile file){
|
||||
// orderService.updateOrder(updateReq);
|
||||
return null;
|
||||
// 清理生产单
|
||||
@DeleteMapping("/clean")
|
||||
@Operation(summary = "清理生产单")
|
||||
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:delete')")
|
||||
public CommonResult<Boolean> cleanOrder(@RequestParam("orderId") Long orderId) {
|
||||
orderService.cleanOrder(orderId);
|
||||
return success(true);
|
||||
}
|
||||
|
||||
// 获取当前条件下所有生产单信息
|
||||
@GetMapping("/allOrder")
|
||||
@Operation(summary = "条件选择获得生产单表")
|
||||
@PreAuthorize("@ss.hasPermission('executor:order:query')")
|
||||
public CommonResult<PageResult<OrderRespVO>> getAllOrder(@Valid OrderPageReqVO pageReqVO) {
|
||||
PageResult<OrderDO> pageResult = orderService.getOrderPage(pageReqVO);
|
||||
return success(BeanUtils.toBean(pageResult, OrderRespVO.class));
|
||||
}
|
||||
|
||||
// 获得当前生产单的工序信息
|
||||
// @GetMapping("/getOrderProcess")
|
||||
// @Operation(summary = "生产单获取工序信息")
|
||||
// @Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
|
||||
// @PreAuthorize("@ss.hasPermission('executor:order:query')")
|
||||
// public CommonResult<List<OrderProcessRespVO>> getOrderProcess(@RequestParam("orderId")Long orderId) {
|
||||
// return success(BeanUtils.toBean(orderService.getOrderProcess(orderId), OrderProcessRespVO.class));
|
||||
// }
|
||||
}
|
||||
+1
@@ -67,4 +67,5 @@ public class OrderPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
private Boolean deleted;
|
||||
}
|
||||
+25
-1
@@ -1,6 +1,12 @@
|
||||
package com.cf.imes.module.executor.controller.admin.order.vo.order;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||
import com.cf.imes.framework.excel.core.annotations.DictFormat;
|
||||
import com.cf.imes.framework.excel.core.convert.DictConvert;
|
||||
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 com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
@@ -9,7 +15,9 @@ import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.Accessors;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 生产单 Excel 导入 VO
|
||||
@@ -20,6 +28,7 @@ import java.math.BigDecimal;
|
||||
@NoArgsConstructor
|
||||
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
|
||||
public class OrderPlateImportExcelVO {
|
||||
|
||||
@ExcelProperty(value = "序号")
|
||||
@JsonIgnore
|
||||
private int ordinal;
|
||||
@@ -130,14 +139,17 @@ public class OrderPlateImportExcelVO {
|
||||
|
||||
@ExcelProperty(value = "排版面")
|
||||
@JsonIgnore
|
||||
@DictFormat(DictTypeConstants.YPOGRAPHY_TYPE)
|
||||
private int typographicFace;
|
||||
|
||||
@ExcelProperty(value = "纹路")
|
||||
@JsonIgnore
|
||||
// @DictFormat(DictTypeConstants.GRAIN_TYPE)
|
||||
private int texture;
|
||||
|
||||
@ExcelProperty(value = "开门方向")
|
||||
@JsonIgnore
|
||||
// @DictFormat(DictTypeConstants.DOOR_OPENING_DIRECTIONS)
|
||||
private int openDoorType;
|
||||
|
||||
@ExcelProperty(value = "备注1")
|
||||
@@ -219,7 +231,6 @@ public class OrderPlateImportExcelVO {
|
||||
public String remarkJSON(){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
// 设置实体类字段的值
|
||||
|
||||
try {
|
||||
String json = objectMapper.writeValueAsString(this);
|
||||
return json;
|
||||
@@ -229,4 +240,17 @@ public class OrderPlateImportExcelVO {
|
||||
}
|
||||
}
|
||||
|
||||
// excel中字典转换
|
||||
private int getDictValue(String dictType, int index) {
|
||||
int value = 0;
|
||||
if(index == 1){
|
||||
// CommonResult<DictDataRespDTO> dictDataRespDTOCommonResult = dictDataApi.getDictData(dictType, label);
|
||||
}else if(index == 2){
|
||||
|
||||
}else if(index == 3){
|
||||
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
@@ -83,4 +83,6 @@ public class OrderRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
private Boolean deleted;
|
||||
|
||||
}
|
||||
+2
@@ -76,4 +76,6 @@ public class OrderSaveReqVO {
|
||||
@NotEmpty(message = "备注不能为空")
|
||||
private String remark;
|
||||
|
||||
private Boolean deleted;
|
||||
|
||||
}
|
||||
+9
@@ -92,4 +92,13 @@ public class PlateController {
|
||||
BeanUtils.toBean(list, PlateRespVO.class));
|
||||
}
|
||||
|
||||
// 批量删除小板
|
||||
@DeleteMapping("deletePlenty")
|
||||
@Operation(summary = "批量删除小板")
|
||||
@PreAuthorize("@ss.hasPermission('executor:plate:deletePlenty')")
|
||||
@Parameter(name = "id", description = "编号", required = true)
|
||||
public CommonResult<Boolean> deletePlates(@RequestBody Set<Long> ids) {
|
||||
plateService.deletePlates(ids);
|
||||
return success(true);
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -89,5 +89,8 @@ public class OrderDO extends OrganBaseDO {
|
||||
* 备注
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Boolean deleted;
|
||||
}
|
||||
|
||||
+28
-2
@@ -1,7 +1,5 @@
|
||||
package com.cf.imes.module.executor.dal.mysql.order;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.core.toolkit.Constants;
|
||||
@@ -11,9 +9,13 @@ import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
|
||||
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
/**
|
||||
* 生产单表 order_{N} Mapper
|
||||
*
|
||||
@@ -39,10 +41,34 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
|
||||
.eqIfPresent(OrderDO::getSalesman, reqVO.getSalesman())
|
||||
.eqIfPresent(OrderDO::getSplitter, reqVO.getSplitter())
|
||||
.eqIfPresent(OrderDO::getRemark, reqVO.getRemark())
|
||||
.eqIfPresent(OrderDO::getDeleted, reqVO.getDeleted())
|
||||
.betweenIfPresent(OrderDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(OrderDO::getId));
|
||||
}
|
||||
|
||||
|
||||
IPage<OrderRespVO> selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
|
||||
|
||||
default PageResult<OrderDO> selectOrderCheck(OrderPageReqVO reqVO) {
|
||||
return selectPage(reqVO , null, new MPJLambdaWrapper<OrderDO>()
|
||||
.eqIfExists(OrderDO::getParentNo, reqVO.getParentNo())
|
||||
.between(OrderDO::getDeliveryDate, reqVO.getDeliveryDate()[0],reqVO.getDeliveryDate()[1])
|
||||
.eqIfExists(OrderDO::getType, reqVO.getType())
|
||||
.eqIfExists(OrderDO::getSort, reqVO.getSort())
|
||||
.eqIfExists(OrderDO::getDataType, reqVO.getDataType())
|
||||
.eqIfExists(OrderDO::getStatus, reqVO.getStatus())
|
||||
.eqIfExists(OrderDO::getCustomOrderNo, reqVO.getCustomOrderNo())
|
||||
.eqIfExists(OrderDO::getCustomer, reqVO.getCustomer())
|
||||
.eqIfExists(OrderDO::getAddress, reqVO.getAddress())
|
||||
.eqIfExists(OrderDO::getPhoneNumber, reqVO.getPhoneNumber())
|
||||
.eqIfExists(OrderDO::getDealer, reqVO.getDealer())
|
||||
.eqIfExists(OrderDO::getDealerPhoneNumber, reqVO.getDealerPhoneNumber())
|
||||
.eqIfExists(OrderDO::getSalesman, reqVO.getSalesman())
|
||||
.eqIfExists(OrderDO::getSplitter, reqVO.getSplitter())
|
||||
.eqIfExists(OrderDO::getRemark, reqVO.getRemark())
|
||||
.eqIfExists(OrderDO::getDeleted, reqVO.getDeleted())
|
||||
.between(OrderDO::getDeliveryDate, reqVO.getDeliveryDate()[0],reqVO.getDeliveryDate()[1])
|
||||
.orderByDesc(OrderDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+2
-1
@@ -3,6 +3,7 @@ package com.cf.imes.module.executor.framework.rpc.config;
|
||||
import com.cf.imes.module.infra.api.file.FileApi;
|
||||
import com.cf.imes.module.system.api.machine.MachineApi;
|
||||
import com.cf.imes.module.system.api.user.AdminUserApi;
|
||||
import com.cf.imes.module.system.api.dict.DictDataApi;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@@ -10,6 +11,6 @@ import org.springframework.context.annotation.Configuration;
|
||||
* @author there
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, FileApi.class})
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, MachineApi.class, DictDataApi.class, FileApi.class})
|
||||
public class RpcConfiguration {
|
||||
}
|
||||
|
||||
+22
-3
@@ -5,9 +5,13 @@ import javax.validation.*;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
|
||||
import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 生产单表 order_{N} Service 接口
|
||||
@@ -34,9 +38,9 @@ public interface OrderService {
|
||||
/**
|
||||
* 删除生产单表 order_{N}
|
||||
*
|
||||
* @param id 编号
|
||||
* @param orderIds 编号组
|
||||
*/
|
||||
void deleteOrder(Long id);
|
||||
void deleteOrder(Collection<Long> orderIds);
|
||||
|
||||
/**
|
||||
* 获得生产单表 order_{N}
|
||||
@@ -56,10 +60,25 @@ public interface OrderService {
|
||||
|
||||
/**
|
||||
* 批量导入生产单
|
||||
*
|
||||
* @param upload 是否只上传表头,默认为只上传表头
|
||||
* @param file 文件内容
|
||||
* @param createReqVO 生产单信息
|
||||
* @param isAddPlate 是否为生产单新增板材
|
||||
* @return OrderImportRespVO
|
||||
*/
|
||||
OrderImportRespVO importOrderList(Boolean upload , MultipartFile file , OrderSaveReqVO createReqVO) throws IOException;
|
||||
OrderImportRespVO importOrderList(Boolean upload, MultipartFile file, OrderSaveReqVO createReqVO ,Boolean isAddPlate) throws IOException;
|
||||
|
||||
/**
|
||||
* 清除生产单表 order_{N}
|
||||
* 清除还没有清除生产单与工序相关、生产单与模块相关、生产单与包裹、余料、补板、相关
|
||||
* @param orderId 编号
|
||||
*/
|
||||
void cleanOrder(Long orderId);
|
||||
|
||||
/**
|
||||
* @param pageReqVO: 查询信息
|
||||
* @return List<OrderDO>
|
||||
*/
|
||||
PageResult<OrderDO> getAllOrderCheck(OrderPageReqVO pageReqVO);
|
||||
}
|
||||
+55
-11
@@ -1,5 +1,6 @@
|
||||
package com.cf.imes.module.executor.service.order;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.cf.imes.framework.mybatis.core.generator.SnowFlakeGenerator;
|
||||
import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
|
||||
import com.cf.imes.framework.datapermission.core.util.DataPermissionUtils;
|
||||
@@ -10,6 +11,7 @@ import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO;
|
||||
import com.cf.imes.module.executor.dal.dataobject.rawgoods.RawGoodsDO;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderBody.OrderBodyMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderGroup.OrderGroupMapper;
|
||||
import com.cf.imes.module.executor.dal.mysql.orderItem.OrderItemMapper;
|
||||
@@ -47,6 +49,7 @@ import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.e
|
||||
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
|
||||
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
|
||||
/**
|
||||
* 生产单表 order_{N} Service 实现类
|
||||
*
|
||||
@@ -85,7 +88,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
private static final int DEFAULT_DAYS_TO_ADD = 30;
|
||||
|
||||
// private Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
|
||||
|
||||
@Override
|
||||
public Long createOrder(OrderSaveReqVO createReqVO) {
|
||||
@@ -114,11 +116,12 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteOrder(Long id) {
|
||||
public void deleteOrder(Collection<Long> orderIds) {
|
||||
// 校验存在
|
||||
validateOrderExists(id);
|
||||
if (orderMapper.selectBatchIds(orderIds).size() != orderIds.size())
|
||||
throw exception(ORDER_NOT_EXISTS);
|
||||
// 删除
|
||||
orderMapper.deleteById(id);
|
||||
orderMapper.deleteBatchIds(orderIds);
|
||||
}
|
||||
|
||||
private void validateOrderExists(Long id) {
|
||||
@@ -138,8 +141,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public OrderImportRespVO importOrderList(Boolean upload, MultipartFile file, OrderSaveReqVO createReqVO) throws IOException {
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public OrderImportRespVO importOrderList(Boolean upload, MultipartFile file, OrderSaveReqVO createReqVO, Boolean isAddPlate) throws IOException {
|
||||
OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
|
||||
.updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
|
||||
// 上传文件类型判断,抽出文件中的板件信息
|
||||
@@ -150,18 +153,27 @@ public class OrderServiceImpl implements OrderService {
|
||||
return orderImportRespVO;
|
||||
} else if (createReqVO.getDataType() == 3) {//Excel
|
||||
//文件数据读取
|
||||
list = OrderExcelUtil.read(file, OrderPlateImportExcelVO.class);
|
||||
list = OrderExcelUtil.read(file, OrderPlateImportExcelVO.class);//缺少数据转换
|
||||
System.out.println("================== " +list);
|
||||
if (list == null || list.size() == 0) {
|
||||
orderImportRespVO.getFailureOrder().put("生产单导入错误", String.valueOf(OrderExcelUtil.getValue()));
|
||||
return orderImportRespVO;
|
||||
}
|
||||
}
|
||||
Long id;
|
||||
// 判断是否为为生产单添加板材
|
||||
if (!isAddPlate) {//只是添加板材
|
||||
// 判断是否只新建生产单
|
||||
Long id = createOrder(createReqVO);
|
||||
id = createOrder(createReqVO);
|
||||
if (upload) {
|
||||
orderImportRespVO.getCreateOrder().add(String.valueOf(id));
|
||||
return orderImportRespVO;
|
||||
}
|
||||
} else {
|
||||
validateOrderExists(createReqVO.getId());
|
||||
id = createReqVO.getId();
|
||||
}
|
||||
|
||||
// 根据字段筛选出重复数据
|
||||
List<OrderPlateImportExcelVO> duplicateOrder = list.stream()
|
||||
.collect(
|
||||
@@ -229,7 +241,7 @@ public class OrderServiceImpl implements OrderService {
|
||||
if (plateOrParts.getGoodType().replaceAll(" ", "").equals("板材") ||
|
||||
plateOrParts.getGoodType().replaceAll(" ", "").equals("1")) {//板材
|
||||
for (int i = 0; i < plateOrParts.getGoodsNumber(); i++) {
|
||||
PlateDO plateDO = BeanUtils.toBean(plateOrParts, PlateDO.class);
|
||||
PlateDO plateDO = BeanUtils.toBean(plateOrParts, PlateDO.class).setOrderId(id).setGoodsId("");
|
||||
plateMapper.insert(plateDO);
|
||||
Long plateId = plateDO.getId();
|
||||
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(id).type(1)
|
||||
@@ -262,12 +274,43 @@ public class OrderServiceImpl implements OrderService {
|
||||
return orderImportRespVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cleanOrder(Long orderId) {
|
||||
// 校验存在
|
||||
validateOrderExists(orderId);
|
||||
// 清除
|
||||
orderBodyMapper.delete(new LambdaQueryWrapper<OrderBodyDO>().eq(OrderBodyDO::getOrderId, orderId));
|
||||
orderItemMapper.delete(new LambdaQueryWrapper<OrderItemDO>().eq(OrderItemDO::getOrderId, orderId));
|
||||
orderGroupMapper.delete(new LambdaQueryWrapper<OrderGroupDO>().eq(OrderGroupDO::getOrderId, orderId));
|
||||
rawGoodsMapper.delete(new LambdaQueryWrapper<RawGoodsDO>().eq(RawGoodsDO::getOrderId, orderId));
|
||||
orderPartsMapper.delete(new LambdaQueryWrapper<OrderPartsDO>().eq(OrderPartsDO::getOrderId, orderId));
|
||||
plateMapper.delete(new LambdaQueryWrapper<PlateDO>().eq(PlateDO::getOrderId, orderId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResult<OrderDO> getAllOrderCheck(OrderPageReqVO pageReqVO) {
|
||||
return orderMapper.selectOrderCheck(pageReqVO);
|
||||
}
|
||||
|
||||
|
||||
// 板材信息收集
|
||||
private List<RawGoodsSaveReqVO> collectImportRawPlate(List<OrderPlateImportExcelVO> list, Long id) {
|
||||
List<RawGoodsSaveReqVO> rawGoodsDOList = new ArrayList<>();
|
||||
|
||||
for (OrderPlateImportExcelVO orderPlateImportExcelVO : list) {
|
||||
RawGoodsSaveReqVO rawGoodsSaveReqVO = BeanUtils.toBean(orderPlateImportExcelVO, RawGoodsSaveReqVO.class);
|
||||
rawGoodsSaveReqVO.setOrderId(id);
|
||||
rawGoodsSaveReqVO.setRawGoodsId(orderPlateImportExcelVO.getGoodsId());
|
||||
// 创建 Pattern 对象
|
||||
Pattern pattern = Pattern.compile(".*?[^\\d]+(\\d+).*");
|
||||
Matcher matcher = pattern.matcher(orderPlateImportExcelVO.getSpec());
|
||||
if (matcher.matches()) {
|
||||
String number = matcher.group(1);
|
||||
// 去除空格
|
||||
number = number.trim();
|
||||
rawGoodsSaveReqVO.setThickness(Double.valueOf(number));
|
||||
}
|
||||
rawGoodsDOList.add(rawGoodsSaveReqVO);
|
||||
}
|
||||
return rawGoodsDOList;
|
||||
@@ -322,14 +365,14 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
// 业务员是否存在
|
||||
private void validateSalesmanOrderNoExists(String salesman, Long organId) {
|
||||
if (adminUserApi.validateUser(salesman,organId) == null) {
|
||||
if (adminUserApi.validateUser(salesman, organId).getData() == null) {
|
||||
throw exception(SALESMAN_ORDER_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
// 拆单员是否存在
|
||||
private void validateSplitterOrderNoExists(String splitter, Long organId) {
|
||||
if (adminUserApi.validateUser(splitter,organId) == null) {
|
||||
if (adminUserApi.validateUser(splitter, organId).getData() == null) {
|
||||
throw exception(SPLITTER_ORDER_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
@@ -362,4 +405,5 @@ public class OrderServiceImpl implements OrderService {
|
||||
validateSplitterOrderNoExists(splitter, organId);
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+14
@@ -2,6 +2,7 @@ package com.cf.imes.module.executor.service.plate;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
|
||||
import com.cf.imes.module.executor.controller.admin.plate.vo.*;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
|
||||
@@ -63,4 +64,17 @@ public interface PlateService {
|
||||
*/
|
||||
PlateImportRespVO importPlatesList(List<PlateSaveReqVO> importPlates, Long orderId);
|
||||
|
||||
/**
|
||||
* @param ids: 待删除板件id集合
|
||||
* @return void
|
||||
*/
|
||||
void deletePlates(Set<Long> ids);
|
||||
|
||||
/**
|
||||
* 获得生产单所有板材
|
||||
*
|
||||
* @param orderId 生产单id
|
||||
* @return List<PlateDO>
|
||||
*/
|
||||
List<PlateDO> getPlatesByOrderId(Long orderId);
|
||||
}
|
||||
+14
@@ -1,6 +1,7 @@
|
||||
package com.cf.imes.module.executor.service.plate;
|
||||
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
|
||||
@@ -89,6 +90,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
.updatePlates(new ArrayList<>()).failurePlates(new LinkedHashMap<>()).build();
|
||||
importPlates.forEach(plateSaveReqVO -> {
|
||||
try {
|
||||
// 改成plateMapper.insertBatch()
|
||||
Long id = (long) plateMapper.insert(BeanUtils.toBean(plateSaveReqVO, PlateDO.class)
|
||||
.setOrderId(orderId));
|
||||
respVO.getCreatePlates().add(plateSaveReqVO);
|
||||
@@ -99,4 +101,16 @@ public class PlateServiceImpl implements PlateService {
|
||||
return respVO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deletePlates(Set<Long> ids) {
|
||||
plateMapper.deleteBatchIds(ids);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PlateDO> getPlatesByOrderId(Long orderId) {
|
||||
List<PlateDO> plates = plateMapper.selectList(new LambdaQueryWrapper<PlateDO>().eq(PlateDO::getOrderId, orderId));
|
||||
return plates;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:58
|
||||
*/
|
||||
public class HoleDetail {
|
||||
|
||||
private Integer HoleID;
|
||||
private Integer HoleType;// 请定义HoleType枚举类型
|
||||
private Integer Face; // 请定义FaceType枚举类型
|
||||
private Integer PointX;
|
||||
private Integer PointY;
|
||||
private Integer PointZ;
|
||||
private Integer Radius;
|
||||
private Integer Depth;
|
||||
private Integer EndPoint;
|
||||
private Integer PointX2;
|
||||
private Integer PointY2;
|
||||
private Integer Angle;
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:47
|
||||
*/
|
||||
public class IContourData {
|
||||
private ArrayList<Point> pts;
|
||||
private Integer[] buls;
|
||||
}
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
import java.util.Dictionary;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:48
|
||||
*/
|
||||
public class IOriginModelingData {
|
||||
|
||||
private IContourData outline;
|
||||
private Dictionary<String, IContourData> holes;
|
||||
private Integer thickness;
|
||||
private Integer dir; // 请定义FaceDirection枚举类型
|
||||
private Integer knifeRadius;
|
||||
private Integer addLen;
|
||||
private Integer addWidth;
|
||||
private Integer addDepth;
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:53
|
||||
*/
|
||||
public class ModelDetail {
|
||||
|
||||
private Integer ModelID;
|
||||
private Integer LineID;
|
||||
private Integer Face;
|
||||
private String KnifeName;
|
||||
private Integer KnifeRadius;
|
||||
private Integer Depth;
|
||||
private IOriginModelingData OriginModeling;
|
||||
private List<PointList> PointList;
|
||||
private List<OffSetList> OffSetList;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:51
|
||||
*/
|
||||
public class OffSetList {
|
||||
|
||||
private String Name;
|
||||
private Integer Face;// 请定义FaceType枚举类型
|
||||
private Integer Value;
|
||||
private Integer Radius;
|
||||
private Integer Deep;
|
||||
private Integer Angle;
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 17:00
|
||||
*/
|
||||
public class OrgPointDetail
|
||||
|
||||
{
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:57
|
||||
*/
|
||||
public class PointDetail {
|
||||
private Integer PointID;
|
||||
private Integer PointX;
|
||||
private Integer PointY;
|
||||
private Integer Curve;
|
||||
private Integer SealSize;
|
||||
}
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 16:49
|
||||
*/
|
||||
public class PointList {
|
||||
private Integer LineID;
|
||||
private Integer PointID;
|
||||
private Integer PointX;
|
||||
private Integer PointY;
|
||||
private Integer Radius;
|
||||
private Integer Depth;
|
||||
private Integer Curve;
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 18:02
|
||||
*/
|
||||
public class SideHoleDetail {
|
||||
|
||||
private Integer HoleID;
|
||||
private Integer HoleType; // 请定义HoleType枚举类型
|
||||
private Integer Face; // 请定义FaceType枚举类型
|
||||
private Integer PointX;
|
||||
private Integer PointY;
|
||||
private Integer PointZ;
|
||||
private Integer Radius;
|
||||
private Integer Depth;
|
||||
private String EndPoint;
|
||||
private Integer PointX2;
|
||||
private Integer PointY2;
|
||||
private Integer Angle;
|
||||
}
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/22 17:59
|
||||
*/
|
||||
public class SideModelDetail {
|
||||
|
||||
private Integer ModelID;
|
||||
private Integer LineID;
|
||||
private int Face;
|
||||
private String KnifeName;
|
||||
private Integer KnifeRadius;
|
||||
private Integer Depth;
|
||||
private IOriginModelingData OriginModeling;
|
||||
private List<PointList> PointList;
|
||||
private List<OffSetList> OffSetList;
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.cf.imes.module.executor.util.deviseData;
|
||||
|
||||
/**
|
||||
* @projectName: cf_imes_server
|
||||
* @author: 晨丰科技
|
||||
* @date: 2024/3/23 9:10
|
||||
*/
|
||||
public class detail {
|
||||
|
||||
private ModelDetail ModelDetail ;
|
||||
private PointDetail PointDetail ;
|
||||
private HoleDetail HoleDetail ;
|
||||
private OrgPointDetail OrgPointDetail ;
|
||||
private SideModelDetail SideModelDetail ;
|
||||
private SideHoleDetail SideHoleDetail;
|
||||
private String remark ;
|
||||
}
|
||||
+1
-1
@@ -64,7 +64,7 @@ public final class ExcelListener<T> extends AnalysisEventListener<T> {
|
||||
excelDataConvertException.getColumnIndex(), excelDataConvertException.getCellData());
|
||||
value = String.valueOf(new RuntimeException("第" + (excelDataConvertException.getRowIndex() + 1) + "行" +
|
||||
",第" + (excelDataConvertException.getColumnIndex() + 1) + "列读取错误"));
|
||||
|
||||
System.out.println();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
"ModelDetail //模块明细": {
|
||||
"ModelID": "number 模块ID",
|
||||
"LineID": "number 纹路ID",
|
||||
"Face": " 板面类型(0正面, 1反面, 2侧面)",
|
||||
"Face": " 板面类型(0正面, 1反面, 2侧面)//排版面",
|
||||
"KnifeName": " 刀具名称",
|
||||
"KnifeRadius": "number 刀半径",
|
||||
"Depth": "number 深度",
|
||||
|
||||
+1
-2
@@ -122,8 +122,7 @@ public class PlateController {
|
||||
@RequestParam(value = "updateSupport", required = false, defaultValue = "false") Boolean updateSupport,
|
||||
@RequestParam(value = "organId") Long organId) throws Exception {
|
||||
List<PlateImportExcelVO> list = ExcelUtils.read(file, PlateImportExcelVO.class);
|
||||
return success(plateService.importPlateList(list, updateSupport));
|
||||
// return null;
|
||||
return success(plateService.importPlateList(list, updateSupport , organId));
|
||||
}
|
||||
|
||||
}
|
||||
+5
@@ -74,4 +74,9 @@ public class PlateDO extends BaseDO {
|
||||
*/
|
||||
private String remark;
|
||||
|
||||
/**
|
||||
* 组织id
|
||||
*/
|
||||
private Long organId;
|
||||
|
||||
}
|
||||
+3
-3
@@ -15,8 +15,8 @@ import org.apache.ibatis.annotations.Mapper;
|
||||
@Mapper
|
||||
public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
|
||||
default PlateDO selectByGoodID(String goodId) {
|
||||
return selectOne(PlateDO::getGoodsId, goodId);
|
||||
default PlateDO selectByGoodID(String goodId , Long organId) {
|
||||
return selectOne(PlateDO::getGoodsId, goodId, PlateDO::getOrganId, organId);
|
||||
}
|
||||
|
||||
default PageResult<PlateDO> selectPage(PlatePageReqVO reqVO) {
|
||||
@@ -28,7 +28,7 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
|
||||
.eqIfPresent(PlateDO::getWidth, reqVO.getWidth())
|
||||
.eqIfPresent(PlateDO::getHeight, reqVO.getHeight())
|
||||
.eqIfPresent(PlateDO::getThickness, reqVO.getThickness())
|
||||
// .eqIfPresent(PlateDO::getPrice, reqVO.getPrice())
|
||||
.eqIfPresent(PlateDO::getOrganId, reqVO.getOrganId())
|
||||
.eqIfPresent(PlateDO::getBrand, reqVO.getBrand())
|
||||
.eqIfPresent(PlateDO::getSpec, reqVO.getSpec())
|
||||
.eqIfPresent(PlateDO::getRemark, reqVO.getRemark())
|
||||
|
||||
+2
-1
@@ -1,10 +1,11 @@
|
||||
package com.cf.imes.module.manage.framework.rpc.config;
|
||||
|
||||
import com.cf.imes.module.system.api.organ.OrganApi;
|
||||
import com.cf.imes.module.system.api.user.AdminUserApi;
|
||||
import org.springframework.cloud.openfeign.EnableFeignClients;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
@EnableFeignClients(clients = AdminUserApi.class)
|
||||
@EnableFeignClients(clients = {AdminUserApi.class, OrganApi.class})
|
||||
public class RpcConfiguration {
|
||||
}
|
||||
|
||||
+1
-1
@@ -63,6 +63,6 @@ public interface PlateService {
|
||||
* @param isUpdateSupport 是否支持更新
|
||||
* @return 导入结果
|
||||
*/
|
||||
PlateImportRespVO importPlateList(List<PlateImportExcelVO> importUsers, boolean isUpdateSupport);
|
||||
PlateImportRespVO importPlateList(List<PlateImportExcelVO> importUsers, boolean isUpdateSupport , Long organId);
|
||||
|
||||
}
|
||||
+31
-8
@@ -3,10 +3,14 @@ package com.cf.imes.module.manage.service.plate;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import com.cf.imes.framework.common.exception.ServiceException;
|
||||
import com.cf.imes.framework.common.exception.util.ServiceExceptionUtil;
|
||||
import com.cf.imes.framework.common.pojo.CommonResult;
|
||||
import com.cf.imes.framework.security.core.LoginUser;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportExcelVO;
|
||||
import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateImportRespVO;
|
||||
import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlatePageReqVO;
|
||||
import com.cf.imes.module.manage.controller.admin.plate.vo.plate.PlateSaveReqVO;
|
||||
import com.cf.imes.module.system.api.organ.OrganApi;
|
||||
import com.cf.imes.module.system.enums.ErrorCodeConstants;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
@@ -38,10 +42,17 @@ public class PlateServiceImpl implements PlateService {
|
||||
@Resource
|
||||
private PlateMapper plateMapper;
|
||||
|
||||
@Resource
|
||||
private OrganApi organApi;
|
||||
|
||||
@Override
|
||||
public Long createPlate(PlateSaveReqVO createReqVO) {
|
||||
// 插入
|
||||
PlateDO plate = BeanUtils.toBean(createReqVO, PlateDO.class);
|
||||
if (createReqVO.getOrganId() != 0){
|
||||
validateOrganExists(createReqVO.getOrganId());
|
||||
validateGoodExists(createReqVO.getGoodsId(), createReqVO.getOrganId());
|
||||
plate.setOrganId(createReqVO.getOrganId());
|
||||
}
|
||||
plateMapper.insert(plate);
|
||||
// 返回
|
||||
return plate.getId();
|
||||
@@ -51,7 +62,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
public void updatePlate(PlateSaveReqVO updateReqVO) {
|
||||
// 校验存在
|
||||
validatePlateExists(updateReqVO.getId());
|
||||
// 更新
|
||||
// 更新 判断是否有组织id
|
||||
PlateDO updateObj = BeanUtils.toBean(updateReqVO, PlateDO.class);
|
||||
plateMapper.updateById(updateObj);
|
||||
}
|
||||
@@ -90,10 +101,11 @@ public class PlateServiceImpl implements PlateService {
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class) // 添加事务,异常则回滚所有导入
|
||||
public PlateImportRespVO importPlateList(List<PlateImportExcelVO> importPlates, boolean isUpdateSupport) {
|
||||
public PlateImportRespVO importPlateList(List<PlateImportExcelVO> importPlates, boolean isUpdateSupport , Long organId) {
|
||||
if (CollUtil.isEmpty(importPlates)) {
|
||||
throw ServiceExceptionUtil.exception(ErrorCodeConstants.PLATE_IMPORT_LIST_IS_EMPTY);
|
||||
}
|
||||
validateOrganExists(organId);
|
||||
PlateImportRespVO respVO = PlateImportRespVO.builder().createPlateNames(new ArrayList<>())
|
||||
.updatePlateNames(new ArrayList<>()).failurePlateNames(new LinkedHashMap<>()).build();
|
||||
importPlates.forEach(importPlate -> {
|
||||
@@ -105,7 +117,7 @@ public class PlateServiceImpl implements PlateService {
|
||||
return;
|
||||
}
|
||||
// 判断如果不存在,在进行插入
|
||||
PlateDO existPlate = plateMapper.selectByGoodID(importPlate.getGoodsId());
|
||||
PlateDO existPlate = plateMapper.selectByGoodID(importPlate.getGoodsId(), organId);
|
||||
if (existPlate == null) {
|
||||
plateMapper.insert(BeanUtils.toBean(importPlate, PlateDO.class));
|
||||
respVO.getCreatePlateNames().add(importPlate.getGoodsName());
|
||||
@@ -116,15 +128,26 @@ public class PlateServiceImpl implements PlateService {
|
||||
respVO.getFailurePlateNames().put(importPlate.getGoodsName(), ErrorCodeConstants.PLATE_EXISTS.getMsg());
|
||||
return;
|
||||
}
|
||||
PlateDO updateUser = BeanUtils.toBean(importPlate, PlateDO.class);
|
||||
updateUser.setId(existPlate.getId());
|
||||
plateMapper.updateById(updateUser);
|
||||
PlateDO plateDO = BeanUtils.toBean(importPlate, PlateDO.class);
|
||||
plateDO.setId(existPlate.getId());
|
||||
plateMapper.updateById(plateDO);
|
||||
respVO.getUpdatePlateNames().add(importPlate.getGoodsName());
|
||||
});
|
||||
return respVO;
|
||||
}
|
||||
|
||||
private void validateOrganExists(Long organId) {
|
||||
CommonResult<Boolean> index = organApi.validOrgan(organId);
|
||||
if (!index.isSuccess()) {
|
||||
throw exception(ErrorCodeConstants.ORGAN_NOT_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 当前组织中板材是否存在
|
||||
private void validateGoodExists(String goodsId ,Long organId) {
|
||||
if (plateMapper.selectByGoodID(goodsId ,organId) != null){
|
||||
throw exception(ErrorCodeConstants.PLATE_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+3
@@ -26,4 +26,7 @@ public interface DictTypeConstants {
|
||||
String SMS_SEND_STATUS = "system_sms_send_status"; // 短信发送状态
|
||||
String SMS_RECEIVE_STATUS = "system_sms_receive_status"; // 短信接收状态
|
||||
|
||||
String YPOGRAPHY_TYPE = "ypographyType"; // 排版面
|
||||
String GRAIN_TYPE = "grainType";//纹路类型
|
||||
String DOOR_OPENING_DIRECTIONS = "doorOpeningDirections";//开门方向
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user