bug修改

This commit is contained in:
lym
2024-04-24 19:28:21 +08:00
parent 49f9cb9de5
commit 53937f842b
27 changed files with 392 additions and 122 deletions
@@ -2,11 +2,13 @@ package com.cf.imes.module.executor;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients;
/** /**
* @author there * @author there
*/ */
@SpringBootApplication @SpringBootApplication
@EnableFeignClients
public class ExecutorServerApplication { public class ExecutorServerApplication {
public static void main(String[] args) { public static void main(String[] args) {
SpringApplication.run(ExecutorServerApplication.class, args); SpringApplication.run(ExecutorServerApplication.class, args);
@@ -1,14 +1,18 @@
package com.cf.imes.module.executor.controller.admin.order; package com.cf.imes.module.executor.controller.admin.order;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*; import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderImportRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderSaveReqVO;
import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderBodyRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO; import com.cf.imes.module.executor.dal.dataobject.orderModuleExtra.OrderModuleExtraDO;
import com.cf.imes.module.executor.service.order.ApiOrderService;
import com.cf.imes.module.executor.service.order.OrderInputProcessor; import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import com.cf.imes.module.executor.util.FileTypeChangeUtil; import com.cf.imes.module.executor.util.FileTypeChangeUtil;
import com.cf.imes.module.executor.util.deviseData.Detail; import com.cf.imes.module.executor.util.deviseData.Detail;
import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO; import com.cf.imes.module.executor.util.fileConversion.admin.files.excel.OrderPlateImportExcelVO;
import io.swagger.v3.oas.annotations.Parameters; import io.swagger.v3.oas.annotations.Parameters;
import org.springframework.util.ObjectUtils;
import org.springframework.util.ResourceUtils; import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@@ -68,6 +72,9 @@ public class OrderController {
@Resource @Resource
private OrderInputProcessor orderInputProcessor; private OrderInputProcessor orderInputProcessor;
@Resource
private ApiOrderService apiOrderService;
private static final Logger log = LoggerFactory.getLogger(OrderController.class); private static final Logger log = LoggerFactory.getLogger(OrderController.class);
@PostMapping("/create") @PostMapping("/create")
@@ -163,62 +170,62 @@ public class OrderController {
} }
} }
@PostMapping("/import") // @PostMapping("/import")
@Operation(summary = "导入生产单新增") // @Operation(summary = "导入生产单新增")
@Parameters({ // @Parameters({
@Parameter(name = "file", description = "Excel 文件", required = true), // @Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"), // @Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
@Parameter(name = "upload", description = "是 更新、否 新建", example = "false"), // @Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
@Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true) // @Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true)
}) // })
@PreAuthorize("@ss.hasPermission('executor:order:import')") // @PreAuthorize("@ss.hasPermission('executor:order:import')")
public CommonResult<Map<Boolean, String>> importExcel(@RequestPart("file") MultipartFile file, // public CommonResult<Map<Boolean, String>> importExcel(@RequestPart("file") MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate, // @RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
@RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload, // @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException { // @RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO) throws IOException {
Map<Boolean, String> map = new HashMap<>(); // Map<Boolean, String> map = new HashMap<>();
// 判断是否更新板材 //// 判断是否更新板材
if (!isAddPlate) {//不需要添加板材 // if (!isAddPlate) {//不需要添加板材
if (upload) { // if (upload) {
orderService.updateOrder(createReqVO);//更新 // orderService.updateOrder(createReqVO);//更新
map.put(true, "单独更新生产单成功"); // map.put(true, "单独更新生产单成功");
} else { // } else {
Long id = orderService.createOrder(createReqVO);//新建 // Long id = orderService.createOrder(createReqVO);//新建
map.put(true, "单独新增生产单成功"); // map.put(true, "单独新增生产单成功");
} // }
return success(map); // return success(map);
} else { // } else {
Long id = 0L; // Long id = 0L;
if (upload) { // if (upload) {
orderService.updateOrder(createReqVO);//更新 // orderService.updateOrder(createReqVO);//更新
id = createReqVO.getId(); // id = createReqVO.getId();
map.put(true, "单独更新生产单成功"); // map.put(true, "单独更新生产单成功");
} else { // } else {
id = orderService.createOrder(createReqVO);//新建 // id = orderService.createOrder(createReqVO);//新建
map.put(true, "单独新增生产单成功"); // map.put(true, "单独新增生产单成功");
} // }
// 解析导入文件,生成统一格式 //// 解析导入文件,生成统一格式
List<?> list = new ArrayList<>(); // List<?> list = new ArrayList<>();
if (createReqVO.getDataType() == 1) {//CAD // if (createReqVO.getDataType() == 1) {//CAD
//
} else if (createReqVO.getDataType() == 2) {//WebCAD // } else if (createReqVO.getDataType() == 2) {//WebCAD
//
} else if (createReqVO.getDataType() == 3) {//Excel // } else if (createReqVO.getDataType() == 3) {//Excel
// 文件数据读取 //// 文件数据读取
list = fileTypeChangeUtil.fileDataChange(file); // list = fileTypeChangeUtil.fileDataChange(file);
} // }
if (list == null || list.size() == 0) { // if (list == null || list.size() == 0) {
map.put(false, "导入文件有误"); // map.put(false, "导入文件有误");
return success(map); // return success(map);
} // }
// OrderImportRespVO respVO = orderService.importOrderList(list , id , orderImportRespVO); //// OrderImportRespVO respVO = orderService.importOrderList(list , id , orderImportRespVO);
orderInputProcessor.input((List<Detail>) list, id); // orderInputProcessor.input((List<Detail>) list, id);
// 是否新增成功需要返回 //// 是否新增成功需要返回
map.putIfAbsent(true, "文件导入成功"); // map.putIfAbsent(true, "文件导入成功");
return success(map); // return success(map);
//
} // }
} // }
// 导出错误的excel // 导出错误的excel
@PostMapping("/import-excel") @PostMapping("/import-excel")
@@ -249,15 +256,15 @@ public class OrderController {
orderService.updateOrder(createReqVO);//更新 orderService.updateOrder(createReqVO);//更新
id = createReqVO.getId(); id = createReqVO.getId();
} else { } else {
// id = orderService.createOrder(createReqVO);//新建 id = orderService.createOrder(createReqVO);//新建
} }
// 解析导入文件,生成统一格式 // 解析导入文件,生成统一格式
List<?> list = new ArrayList<>(); List<?> list = new ArrayList<>();
if (createReqVO.getDataType() == 1) {//CAD if (createReqVO.getDataType() == 1) {//数据源
} else if (createReqVO.getDataType() == 2) {//WebCAD } else if (createReqVO.getDataType() == 2) {//api
} else if (createReqVO.getDataType() == 3) {//Excel } else if (createReqVO.getDataType() == 0) {//文件
// 文件数据读取 // 文件数据读取
list = fileTypeChangeUtil.fileDataChange(file); list = fileTypeChangeUtil.fileDataChange(file);
} }
@@ -339,33 +346,82 @@ public class OrderController {
return success(BeanUtils.toBean(orderService.getBody(orderId), OrderBodyRespVO.class)); return success(BeanUtils.toBean(orderService.getBody(orderId), OrderBodyRespVO.class));
} }
@PostMapping("file-import") // @PostMapping("file-import")
@Operation(summary = "文件上接口") // @Operation(summary = "文件上接口--完善中")
// @Parameters({
// @Parameter(name = "file", description = "文件", required = false),
// @Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
// @Parameter(name = "upload", description = "是 更新、否 新建", example = "false"),
// @Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true),
// @Parameter(name = "type", description = "文件类型", required = true)
// })
// @PreAuthorize("@ss.hasPermission('executor:fileData:import')")
// public CommonResult<OrderImportRespVO> apiImport(@RequestPart(value = "file", required = false) MultipartFile file,
// @RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
// @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
// @RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO,
// @RequestParam(value = "type", required = false, defaultValue = "cf_cad") String type,
// final HttpServletResponse respons) throws IOException {
//
// OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
// .updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
//
//// 数据格式转换,返回转换完成的数据(传入文件类型,和文件类容),判断需要使用那种解析之后,进行数据的转换
// List<?> list = fileTypeChangeUtil.chooseType(file, type);
// if (fileTypeChangeUtil.getFlag()) {//文件数据转换成功,进行数据填入
//
// }
//
// return success(orderImportRespVO);
// }
// 测试接口
@GetMapping("getTest")
@Operation(summary = "测试接口")
@PreAuthorize("@ss.hasPermission('executor:order:query')")
public CommonResult<JSONObject> test(@RequestParam(value = "orderNo", required = false, defaultValue = "20230809027818") String orderNo) {
// 获取token
JSONObject json = apiOrderService.getApiTokenMessage("CF7526AD51", "5f467b508061eff60bdacc7230357d2f");
// 判断获取token是否成功
if (json.getString("err_msg").equals("success")) {
System.out.println("获取token成功");
String token = json.getJSONObject("info").getString("access_token");
JSONObject jsonObject = new JSONObject();
jsonObject.put("order_no", orderNo);//生产单号需要传入赋值
jsonObject.put("format", "json");
// 数据解析
JSONObject data = apiOrderService.getApiOrderMessage(token, jsonObject);
if (data.getString("err_code").equals("0")) {
System.out.println("获取数据成功");
String value = data.getString("value");
System.out.println("value " + data.getString("value") );
// System.out.println("list " + toListMap(value));
// 数据格式进行转换
System.out.println("order " + value.substring(1, value.length() - 1));
}
}
return success(apiOrderService.getApiTokenMessage("CF7526AD51", "5f467b508061eff60bdacc7230357d2f"));
}
@PostMapping("/importTest")
@Operation(summary = "生产单导入新增")
@Parameters({ @Parameters({
@Parameter(name = "file", description = "文件", required = false), @Parameter(name = "file", description = "Excel 文件", required = true),
@Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"), @Parameter(name = "isAddPlate", description = "是否为生产单新增板材", example = "false"),
@Parameter(name = "upload", description = "是 更新、否 新建", example = "false"), @Parameter(name = "upload", description = "是 更新、否 新建", example = "false")
@Parameter(name = "orderSaveReqVO", description = "生产单新增参数", required = true),
@Parameter(name = "type", description = "文件类型", required = true)
}) })
@PreAuthorize("@ss.hasPermission('executor:fileData:import')") @PreAuthorize("@ss.hasPermission('executor:order:importExcel')")
public CommonResult<OrderImportRespVO> apiImport(@RequestPart(value = "file", required = false) MultipartFile file, @OperateLog(type = EXPORT)
public void exportTest(@RequestPart("file") MultipartFile file,
@RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate, @RequestParam(value = "isAddPlate", required = false, defaultValue = "false") Boolean isAddPlate,
@RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload, @RequestParam(value = "upload", required = false, defaultValue = "false") Boolean upload,
@RequestPart("orderSaveReqVO") OrderSaveReqVO createReqVO, HttpServletResponse response) throws IOException {
@RequestParam(value = "type", required = false, defaultValue = "cf_cad") String type,
final HttpServletResponse respons) throws IOException {
OrderImportRespVO orderImportRespVO = OrderImportRespVO.builder().createOrder(new ArrayList<>())
.updateOrder(new ArrayList<>()).failureOrder(new LinkedHashMap<>()).build();
// 数据格式转换,返回转换完成的数据(传入文件类型,和文件类容),判断需要使用那种解析之后,进行数据的转换
List<?> list = fileTypeChangeUtil.chooseType(file, type);
if (fileTypeChangeUtil.getFlag()) {//文件数据转换成功,进行数据填入
} }
return success(orderImportRespVO);
}
} }
@@ -13,8 +13,10 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
@Schema(description = "管理后台 - 生产单表 order_{N}分页 Request VO") @Schema(description = "管理后台 - 生产单表 order_{N}分页 Request VO")
@Data @Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true) @ToString(callSuper = true)
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class OrderPageReqVO extends PageParam { public class OrderPageReqVO extends PageParam {
@Schema(description = "父单号") @Schema(description = "父单号")
@@ -8,7 +8,7 @@ import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产单表 order_{N} Response VO") @Schema(description = "管理后台 - 生产单表 order_{N} Response VO")
@Data @Data
@ExcelIgnoreUnannotated //@ExcelIgnoreUnannotated
public class OrderRespVO { public class OrderRespVO {
@Schema(description = "生产单号,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15091") @Schema(description = "生产单号,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15091")
@@ -13,7 +13,6 @@ import java.time.LocalDateTime;
@Data @Data
public class OrderSaveReqVO { public class OrderSaveReqVO {
@Schema(description = "生产单号,主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15091")
private Long id; private Long id;
@Schema(description = "父单号", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "父单号", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -12,10 +12,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*; import javax.validation.*;
import javax.servlet.http.*; import javax.servlet.http.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
@@ -31,7 +29,6 @@ import com.cf.imes.framework.operatelog.core.annotations.OperateLog;
import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*; import static com.cf.imes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.module.executor.service.plan.PlanService; import com.cf.imes.module.executor.service.plan.PlanService;
@Tag(name = "管理后台 - 排单") @Tag(name = "管理后台 - 排单")
@@ -105,7 +102,7 @@ public class PlanController {
@GetMapping("getNotPlanOrderListPage") @GetMapping("getNotPlanOrderListPage")
@Operation(summary = "获取未排单的板材生产单板材分页列表") @Operation(summary = "获取未排单的板材生产单板材分页列表")
@PreAuthorize("@ss.hasPermission('executor:plan:query')") @PreAuthorize("@ss.hasPermission('executor:plan:query')")
public CommonResult<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) { public CommonResult<PageResult<OrderRespVOCopy>> getOrderPage(@Valid OrderPageReqVOCopy pageReqVO) {
return success(planService.getOrderPage(pageReqVO)); return success(planService.getOrderPage(pageReqVO));
} }
@@ -17,7 +17,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH
*/ */
@NoArgsConstructor @NoArgsConstructor
@Data @Data
public class OrderPageReqVO extends PageParam { public class OrderPageReqVOCopy extends PageParam {
@Schema(description = "生产单id") @Schema(description = "生产单id")
private Long orderId; private Long orderId;
@@ -21,7 +21,7 @@ import static com.cf.imes.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class OrderRespVO { public class OrderRespVOCopy {
@Schema(description = "生产单id") @Schema(description = "生产单id")
private Long orderId; private Long orderId;
@Schema(description = "自定义单号") @Schema(description = "自定义单号")
@@ -7,15 +7,13 @@ import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; 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.order.vo.order.OrderPageReqVO;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO; import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -50,7 +48,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
} }
IPage<OrderRespVO> selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper); IPage<OrderRespVOCopy> selectOrderPage(@Param("page") IPage page, @Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
default List<OrderDO> selectOrderCheck(OrderPageReqVO reqVO) { default List<OrderDO> selectOrderCheck(OrderPageReqVO reqVO) {
MPJLambdaWrapper<OrderDO> wrapper = new MPJLambdaWrapper<OrderDO>() MPJLambdaWrapper<OrderDO> wrapper = new MPJLambdaWrapper<OrderDO>()
@@ -0,0 +1,17 @@
package com.cf.imes.module.executor.service.order;
import com.alibaba.fastjson.JSONObject;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(url = "https://chenfeng.tech:7779", name = "apiOrderService")
public interface ApiOrderService {
@RequestMapping(value = "/Api-Oauth-token",method = RequestMethod.GET)
JSONObject getApiTokenMessage(@RequestParam("appid") String appid, @RequestParam("appsecret") String appsecret);
@RequestMapping(value = "/Api-erpOrders-orderPlanData",method = RequestMethod.POST)
JSONObject getApiOrderMessage(@RequestParam("token") String token, @RequestBody JSONObject json);
}
@@ -3,9 +3,7 @@ package com.cf.imes.module.executor.service.plan;
import java.util.*; import java.util.*;
import javax.validation.*; import javax.validation.*;
import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
/** /**
* 生产单开料排单 Service 接口 * 生产单开料排单 Service 接口
@@ -52,7 +50,7 @@ public interface PlanService {
*/ */
PageResult<PlanRespVO> getPlanPage(PlanPageReqVO pageReqVO); PageResult<PlanRespVO> getPlanPage(PlanPageReqVO pageReqVO);
PageResult<OrderRespVO> getOrderPage(OrderPageReqVO pageReqVO); PageResult<OrderRespVOCopy> getOrderPage(OrderPageReqVOCopy pageReqVO);
PageResult<PlatePage> getNotPlanPlateListPage(PlateReqPageVO pageVO); PageResult<PlatePage> getNotPlanPlateListPage(PlateReqPageVO pageVO);
@@ -1,19 +1,13 @@
package com.cf.imes.module.executor.service.plan; package com.cf.imes.module.executor.service.plan;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
import com.cf.imes.framework.common.util.date.LocalDateTimeUtils;
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX; import com.cf.imes.framework.mybatis.core.query.MPJLambdaWrapperX;
import com.cf.imes.framework.mybatis.core.query.QueryWrapperX; import com.cf.imes.framework.mybatis.core.query.QueryWrapperX;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO;
import com.cf.imes.module.executor.dal.dataobject.module.ModuleDO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; 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.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO; import com.cf.imes.module.executor.dal.dataobject.orderItem.OrderItemDO;
@@ -44,7 +38,6 @@ import java.util.stream.Collectors;
import com.cf.imes.module.executor.controller.admin.plan.vo.*; import com.cf.imes.module.executor.controller.admin.plan.vo.*;
import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO; import com.cf.imes.module.executor.dal.dataobject.plan.PlanDO;
import com.cf.imes.framework.common.pojo.PageResult; import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.pojo.PageParam;
import com.cf.imes.framework.common.util.object.BeanUtils; import com.cf.imes.framework.common.util.object.BeanUtils;
import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper; import com.cf.imes.module.executor.dal.mysql.plan.PlanMapper;
@@ -241,8 +234,8 @@ public class PlanServiceImpl implements PlanService {
} }
@Override @Override
public PageResult<OrderRespVO> getOrderPage(OrderPageReqVO pageReqVO) { public PageResult<OrderRespVOCopy> getOrderPage(OrderPageReqVOCopy pageReqVO) {
PageDTO<OrderRespVO> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize()); PageDTO<OrderRespVOCopy> page = new PageDTO<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>(); QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX queryWrapperX
@@ -265,7 +258,7 @@ public class PlanServiceImpl implements PlanService {
queryWrapperX.inIfPresent("c.filter_type", filterTypes); queryWrapperX.inIfPresent("c.filter_type", filterTypes);
IPage<OrderRespVO> orderDOPageResult = orderMapper.selectOrderPage(page, queryWrapperX); IPage<OrderRespVOCopy> orderDOPageResult = orderMapper.selectOrderPage(page, queryWrapperX);
if (CollectionUtil.isEmpty(orderDOPageResult.getRecords())) { if (CollectionUtil.isEmpty(orderDOPageResult.getRecords())) {
return new PageResult<>(); return new PageResult<>();
} }
@@ -1,6 +1,8 @@
package com.cf.imes.module.executor.util; package com.cf.imes.module.executor.util;
import com.cf.imes.module.executor.util.deviseData.Detail; import com.cf.imes.module.executor.util.deviseData.Detail;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
@@ -0,0 +1,29 @@
package com.cf.imes.module.executor.util.deviseData.dataTwo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* 配件基本信息
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class PartsDetail {
// 商品信息
private String goodsNo; // 商品编码
private String goodsName; //商品名称
private String goodType; //商品类型,用于筛选是板材还是配件类,可传入文字(需做转换)
private String material; //材质
private String color; //颜色
private String factory; //商品生产厂商
private String brand; //商品品牌
private String model; //商品型号
private String spec; //商品规格
private float thickness;//规格-板厚 板厚,成品和开料都是一样的
private String unit; //商品单位
private float goodsNumber; //产品数量为特殊处理,板件和配件都有数量
}
@@ -21,7 +21,7 @@ public class PlateDetail {
// 板件所属信息 // 板件所属信息
private String roomsName; //房间名称 private String roomsName; //房间名称
private String cabinetsName; //柜体名 private String bodyName; //柜体名
// 柜体信息 长 宽 深 // 柜体信息 长 宽 深
private float width; private float width;
private float height; private float height;
@@ -30,9 +30,12 @@ public class PlateDetail {
private List<String> synthesis;// 板件加工组Group的名称,可以有多个 private List<String> synthesis;// 板件加工组Group的名称,可以有多个
private String synthesisName;// 加工组中Group中每个小加工组的名称 private String synthesisName;// 加工组中Group中每个小加工组的名称
// 商品基本信息 // 小板基本信息
private IBoardProdInfo iBoardProdInfo; private IBoardProdInfo iBoardProdInfo;
// 配件基本信息
private List<PartsDetail> partsDetail;
// 基准位置,用于画图 // 基准位置,用于画图
private BasePosition basePosition; private BasePosition basePosition;
@@ -1,15 +1,148 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad; package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.util.FileTypeChangeUtil; import com.cf.imes.module.executor.util.FileTypeChangeUtil;
import com.cf.imes.module.executor.util.deviseData.Detail; import com.cf.imes.module.executor.util.deviseData.Detail;
import com.cf.imes.module.executor.util.deviseData.dataTwo.IBoardProdInfo;
import com.cf.imes.module.executor.util.deviseData.dataTwo.PlateDetail;
import com.fasterxml.jackson.core.JsonProcessingException;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
/** /**
* 实现数据格式转换 * 实现数据格式转换
*/ */
public interface ApiTypeChangeRealize extends FileTypeChangeUtil {
default List<Detail> apiDataChange(String data) { public class ApiTypeChangeRealize implements FileTypeChangeUtil {
@Override
public <T> List<?> fileDataChange(MultipartFile file) throws IOException {
return null; return null;
} }
public <T> List<?> fileDataChange(String data) throws IOException {
return null;
} }
@Override
public boolean getFlag() {
return false;
}
public static void main(String[] args) {
String jsonData = "" ;
JSONObject jsonObject = JSONObject.parseObject(jsonData);
// System.out.println(jsonObject.getString("Orders"));
// 解析 JSON 字符串
JSONObject object = JSON.parseObject(jsonData);
// 获取 Orders 字段对应的数组
JSONArray ordersArray = object.getJSONArray("Orders");
// 如果 Orders 数组不为空,则获取第一个订单对象
if (ordersArray != null && !ordersArray.isEmpty()) {
JSONObject value = ordersArray.getJSONObject(0);
// 使用 DateTimeFormatter 解析日期字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate deliveryDate = LocalDate.parse(value.getString("DeliveryDate"), formatter);
OrderDO orderDO = OrderDO.builder()
.parentNo(0L)
.type(true)
.sort(0)
.dataType(1)
.status(0)
.customOrderNo(value.getString("OrderNo"))
.customer(value.getString("Consigee"))
.address(value.getString("ConsigeeAddress"))
.phoneNumber(value.getString("ConsigeePhone"))
.dealer(value.getString("CustomName"))
.salesman(value.getString("SalePerson"))
.remark(value.getString("Remark"))
.deliveryDate(deliveryDate.atStartOfDay())
.build();
// System.out.println("orderDO 差生产单的创建日期、拆单员、经销商电话数据," + orderDO);
List<Detail> details = new ArrayList<>();
// 遍历 Orders 数组
for (int i = 0; i < ordersArray.size(); i++) {
JSONObject orderObject = ordersArray.getJSONObject(i);
// 获取订单的 Materials 数组
JSONArray materialsArray = orderObject.getJSONArray("Materials");
// 遍历 Materials 数组
for (int j = 0; j < materialsArray.size(); j++) {
JSONObject materialObject = materialsArray.getJSONObject(j);
// 处理每个材料对象,这里可以根据需要进行操作
System.out.println("Material " + (j + 1) + ": " + materialObject);
JSONArray blocksArray = materialObject.getJSONArray("Blocks");
System.out.println(blocksArray.size());
for (int k = 0; k < blocksArray.size(); k++) {
JSONObject blockObject = materialsArray.getJSONObject(k);
//
// 处理每个块对象,这里可以根据需要进行操作
System.out.println("Block " + (k + 1) + ": " + blockObject.getString("RoomName"));
//
// for (int l = 0; l < materialsArray.size(); l++) {
// JSONObject holeObject = materialsArray.getJSONObject(l);
//
// // 处理每个孔对象,这里可以根据需要进行操作
// }
}
// PlateDetail plateDetail = PlateDetail.builder()
// .multiNum(1)
// .roomsName(materialObject.getString("RoomName"))
// .bodyName(materialObject.getString("BoxName"))
// .iBoardProdInfo(IBoardProdInfo.builder()
// .goodsNo(materialObject.getString("GoodsSN"))
// .goodsName(materialObject.getString("Name"))
// .material(materialObject.getString("Material"))
// .color(materialObject.getString("Color"))
//
// .build())
// .build();
}
}
} else {
System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。");
}
}
// 生产单数据分离填入
public List<T> getDeviseData(String[] args) {
return null;
}
// 将remark转为map
public Map<String, String> remarkToMap(String[] remark) {
Map<String, String> map = new HashMap<>();
return map;
}
}
@@ -0,0 +1,17 @@
package com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.vo;
import lombok.Data;
import javax.xml.bind.annotation.*;
@Data// lombok注解,给字段添加getter和setter
@XmlAccessorType(XmlAccessType.FIELD)// 映射所有的字段
@XmlRootElement(name = "Point ")// XML根节点名称,此处为nation
public class Point {
@XmlAttribute// 解析节点的属性
private String type;
@XmlValue// 解析nation节点的内容,字段名称无所谓
private String nationValue;
}
@@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.cf.imes.module.executor.dal.mysql.order.OrderMapper"> <mapper namespace="com.cf.imes.module.executor.dal.mysql.order.OrderMapper">
<select id="selectOrderPage" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVO"> <select id="selectOrderPage" resultType="com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy">
select a.id as orderId, a.delivery_date, a.customer, a.address, a.custom_order_no as defineId, select a.id as orderId, a.delivery_date, a.customer, a.address, a.custom_order_no as defineId,
count(c.id) as num, sum(c.area) as area, p.goods_name, p.color, p.material, p.goods_id count(c.id) as num, sum(c.area) as area, p.goods_name, p.color, p.material, p.goods_id
from `order` a from `order` a
@@ -53,7 +53,6 @@ public class PlateSaveReqVO {
private String spec; private String spec;
@Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便") @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED, example = "随便")
@NotEmpty(message = "备注不能为空")
private String remark; private String remark;
private Long organId; private Long organId;
@@ -46,7 +46,7 @@ public class PlateServiceImpl implements PlateService {
@Override @Override
public Long createPlate(PlateSaveReqVO createReqVO) { public Long createPlate(PlateSaveReqVO createReqVO) {
PlateDO plate = BeanUtils.toBean(createReqVO, PlateDO.class); PlateDO plate = BeanUtils.toBean(createReqVO, PlateDO.class);
if (createReqVO.getOrganId() == 0 && createReqVO.getGoodsId() != null){ if (createReqVO.getOrganId() != null && createReqVO.getOrganId() != 0 ){
validateOrganExists(createReqVO.getOrganId()); validateOrganExists(createReqVO.getOrganId());
validateGoodExists(createReqVO.getGoodsId(), createReqVO.getOrganId()); validateGoodExists(createReqVO.getGoodsId(), createReqVO.getOrganId());
plate.setOrganId(OrganContextHolder.getOrganId()); plate.setOrganId(OrganContextHolder.getOrganId());
@@ -211,7 +211,7 @@ public interface ErrorCodeConstants {
//=========== 板材信息 1-002-034-000 ============ //=========== 板材信息 1-002-034-000 ============
ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_032_002, "工序用户不存在"); ErrorCode PROCESS_USER_NOT_EXISTS = new ErrorCode(1_002_032_002, "工序用户不存在");
ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_032_002, "工序用户存在"); ErrorCode PROCESS_USER_EXISTS = new ErrorCode(1_002_032_003, "工序用户存在");
//=========== 板材信息 1-002-035-000 ============ //=========== 板材信息 1-002-035-000 ============
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_001, "设计板材不存再"); ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_033_001, "设计板材不存再");
@@ -230,4 +230,5 @@ public interface ErrorCodeConstants {
ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_037_001, "应用信息不存在"); ErrorCode APPLICATION_NOT_EXISTS = new ErrorCode(1_002_037_001, "应用信息不存在");
ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_037_001, "应用登陆失败"); ErrorCode APPLICATION_LOGIN_USER_DISABLED = new ErrorCode(1_002_037_001, "应用登陆失败");
ErrorCode ERR = new ErrorCode(1_002_038_001, "未知错误");
} }
@@ -30,4 +30,6 @@ public interface ProcessGroupMapper extends BaseMapperX<ProcessGroupDO> {
} }
ProcessDO selectOneById(@Param("id") Long id, @Param("organId") Long organId); ProcessDO selectOneById(@Param("id") Long id, @Param("organId") Long organId);
int updateIsDefault(@Param("processGroupId") Long processGroupId, @Param("organId") Long organId);
} }
@@ -31,6 +31,12 @@ public interface ProcessUserMapper extends BaseMapperX<ProcessUserDO> {
.eq(ProcessUserDO::getProcessId, processId)); .eq(ProcessUserDO::getProcessId, processId));
} }
default List<ProcessUserDO> selectById(Long processId,Long userId) {
return selectList(new LambdaQueryWrapperX<ProcessUserDO>()
.eq(ProcessUserDO::getProcessId, processId)
.eq(ProcessUserDO::getUserId, userId));
}
default ProcessUserDO selectUserByProcessId(Long processId) { default ProcessUserDO selectUserByProcessId(Long processId) {
return selectOne(ProcessUserDO::getProcessId, processId); return selectOne(ProcessUserDO::getProcessId, processId);
} }
@@ -51,6 +51,9 @@ public class ProcessGroupServiceImpl implements ProcessGroupService {
ProcessGroupDO processGroup = BeanUtils.toBean(createReqVO, ProcessGroupDO.class); ProcessGroupDO processGroup = BeanUtils.toBean(createReqVO, ProcessGroupDO.class);
processGroup.setItems(checkProcessGroupExists(createReqVO.getItems())); processGroup.setItems(checkProcessGroupExists(createReqVO.getItems()));
processGroupMapper.insert(processGroup); processGroupMapper.insert(processGroup);
if (createReqVO.getIsDefault()) {
processGroupMapper.updateIsDefault(processGroup.getId(), OrganContextHolder.getOrganId());
}
// 返回 // 返回
return processGroup.getId(); return processGroup.getId();
} }
@@ -63,6 +66,9 @@ public class ProcessGroupServiceImpl implements ProcessGroupService {
ProcessGroupDO updateObj = BeanUtils.toBean(updateReqVO, ProcessGroupDO.class); ProcessGroupDO updateObj = BeanUtils.toBean(updateReqVO, ProcessGroupDO.class);
updateObj.setItems(checkProcessGroupExists(updateReqVO.getItems())); updateObj.setItems(checkProcessGroupExists(updateReqVO.getItems()));
processGroupMapper.updateById(updateObj); processGroupMapper.updateById(updateObj);
if (updateReqVO.getIsDefault()) {
processGroupMapper.updateIsDefault(updateReqVO.getId(), OrganContextHolder.getOrganId());
}
} }
@Override @Override
@@ -152,4 +158,10 @@ public class ProcessGroupServiceImpl implements ProcessGroupService {
// 返回格式化的列表字符串 // 返回格式化的列表字符串
return itemsBuilder.length() > 0 ? itemsBuilder.toString() : "[]"; return itemsBuilder.length() > 0 ? itemsBuilder.toString() : "[]";
} }
// 批量更新工序组默认
public void updateProcessGroupIsDefault(Long processGroupId, Long organId) {
processGroupMapper.updateIsDefault(processGroupId, organId);
}
} }
@@ -69,7 +69,7 @@ public class ProcessServiceImpl implements ProcessService {
processAndUserSaveReqVO.setUserId(Long.parseLong(user)); processAndUserSaveReqVO.setUserId(Long.parseLong(user));
processUserService.createProcessUser(processAndUserSaveReqVO); processUserService.createProcessUser(processAndUserSaveReqVO);
}catch (Exception e){ }catch (Exception e){
throw ServiceExceptionUtil.exception(ErrorCodeConstants.USER_NOT_EXISTS); throw ServiceExceptionUtil.exception(ErrorCodeConstants.ERR);
} }
} }
@@ -1,6 +1,5 @@
package com.cf.imes.module.system.service.process; package com.cf.imes.module.system.service.process;
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO; import com.cf.imes.module.system.controller.admin.process.vo.processUser.ProcessAndUserSaveReqVO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -14,6 +13,7 @@ import com.cf.imes.module.system.dal.mysql.process.ProcessUserMapper;
import java.util.List; import java.util.List;
import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.cf.imes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_USER_EXISTS;
import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_USER_NOT_EXISTS; import static com.cf.imes.module.system.enums.ErrorCodeConstants.PROCESS_USER_NOT_EXISTS;
/** /**
@@ -30,8 +30,9 @@ public class ProcessUserServiceImpl implements ProcessUserService {
@Override @Override
public Long createProcessUser(ProcessAndUserSaveReqVO createReqVO) { public Long createProcessUser(ProcessAndUserSaveReqVO createReqVO) {
if (processUserMapper.selectByProcessId(createReqVO.getProcessId()).size() != 0) { // 判断是否有
throw exception(PROCESS_USER_NOT_EXISTS); if (processUserMapper.selectById(createReqVO.getProcessId(), createReqVO.getUserId()).size() != 0) {
throw exception(PROCESS_USER_EXISTS);
} }
// 插入 // 插入
ProcessUserDO processUser = BeanUtils.toBean(createReqVO, ProcessUserDO.class); ProcessUserDO processUser = BeanUtils.toBean(createReqVO, ProcessUserDO.class);
@@ -20,4 +20,7 @@
where p.id = #{id} and p.organ_id = #{organId} and p.deleted = 0 where p.id = #{id} and p.organ_id = #{organId} and p.deleted = 0
</select> </select>
<update id="updateIsDefault" >
UPDATE process_group SET is_default = 0 WHERE organ_id = #{organId} AND id != #{processGroupId}
</update>
</mapper> </mapper>