二版更新-定时任务50%

This commit is contained in:
lym
2024-08-09 09:37:52 +08:00
parent 689bf93cca
commit 4ce3b17212
41 changed files with 1500 additions and 1127 deletions
@@ -9,7 +9,9 @@ import lombok.Getter;
public enum OrderPackageStatusEnum { public enum OrderPackageStatusEnum {
UNPACKED(0,"未封包/未打包"), UNPACKED(0,"未封包/未打包"),
PACKAGING(1, "封包中/打包中"),
PACKAGED(1, "已封包/已打包"); PACKAGED(1, "已封包/已打包");
private Integer status; private Integer status;
private String description; private String description;
@@ -22,9 +22,9 @@ public interface ErrorCodeConstants {
// ========== 生产单 TODO 补充编号 ========== // ========== 生产单 TODO 补充编号 ==========
ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_001_109_000, "生产单不存在"); ErrorCode ORDER_NOT_EXISTS = new ErrorCode(1_001_109_000, "生产单不存在");
ErrorCode ORDER_IS_EMPTY = new ErrorCode(1_001_109_000, "生产单为空单,清空无效"); ErrorCode ORDER_IS_EMPTY = new ErrorCode(1_001_109_000, "生产单为空单,柜体操作无效");
ErrorCode ORDER_NOT_NEW_ORDER = new ErrorCode(1_001_109_000, "生产单不为新单,清空无效"); ErrorCode ORDER_NOT_NEW_ORDER = new ErrorCode(1_001_109_000, "生产单不为新单,清空无效");
ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1_001_109_000, "生产单已排单,作无效"); ErrorCode ORDER_NOT_CANCEL = new ErrorCode(1_001_109_000, "生产单已排单,小板操作无效");
ErrorCode ORDER_CANCEL = new ErrorCode(1_001_109_000, "生产单未作废,还原无效"); ErrorCode ORDER_CANCEL = new ErrorCode(1_001_109_000, "生产单未作废,还原无效");
// ========== 生产单 TODO 补充编号 ========== // ========== 生产单 TODO 补充编号 ==========
@@ -53,7 +53,7 @@ public interface ErrorCodeConstants {
ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_001_119_001, "工序组不存在"); ErrorCode ORDER_PROCESS_NOT_EXISTS = new ErrorCode(1_001_119_001, "工序组不存在");
ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_001_119_002, "该生产单工序组已经存在"); ErrorCode ORDER_PROCESS_EXISTS = new ErrorCode(1_001_119_002, "该生产单工序组已经存在");
ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_003, "工序组不存在"); ErrorCode PROCESS_GROUP_NOT_EXISTS = new ErrorCode(1_002_029_003, "工序组不存在");
ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_029_004, "此生产单中柜体并不存在不存在"); ErrorCode ORDER_BODY_NOT_EXISTS = new ErrorCode(1_002_029_004, "当前柜体不存在");
ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_029_005, "生产单中未用到此板材"); ErrorCode RAW_GOODS_NOT_EXISTS = new ErrorCode(1_002_029_005, "生产单中未用到此板材");
ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1_002_029_006, "生产单不允许删除"); ErrorCode ORDER_STATUS_ERROR = new ErrorCode(1_002_029_006, "生产单不允许删除");
ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败"); ErrorCode APP_TOKEN_ERROR = new ErrorCode(1_002_029_007, "token获取失败");
@@ -73,4 +73,6 @@ public interface ErrorCodeConstants {
ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败"); ErrorCode SOURCE_NOT_EXITS_ERROR = new ErrorCode(1_002_029_013, "源数据查询失败");
ErrorCode ORDER_CAN_NOT_DELETE = new ErrorCode(1_002_029_013, "存在状态不符合强制删除的生产单,禁止删除"); ErrorCode ORDER_CAN_NOT_DELETE = new ErrorCode(1_002_029_013, "存在状态不符合强制删除的生产单,禁止删除");
ErrorCode ORDER_DELETED_ERR = new ErrorCode(1_002_029_006, "生产单删除失败");
ErrorCode ORDER_RESTORE_ERR = new ErrorCode(1_002_029_006, "生产单还原失败");
} }
@@ -7,9 +7,9 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum OrderStatusEnum { public enum OrderStatusEnum {
EMPTY(0, "默认"), EMPTY(0, "空单"),
NEW_ORDER(1, "新单"), NEW_ORDER(1, "新单"),
NO_SORT(2, "排单"), SORTED(2, "排单"),
IN_PRODUCTION(3, "生产中"), IN_PRODUCTION(3, "生产中"),
FINISH_PRODUCTION(4, "生产完成"); FINISH_PRODUCTION(4, "生产完成");
@@ -4,6 +4,7 @@ import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
/** /**
* @author there * @author there
@@ -11,6 +12,7 @@ import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication @SpringBootApplication
@EnableFeignClients @EnableFeignClients
@EnableAsync @EnableAsync
@EnableScheduling //开启定时任务
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,13 +1,17 @@
package com.cf.imes.module.executor.controller.admin.order; package com.cf.imes.module.executor.controller.admin.order;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.order.*; import com.cf.imes.module.executor.controller.admin.order.vo.order.*;
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.controller.admin.order.vo.product.OrderRoomBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.orderParts.vo.OrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.goods.GoodsDO; import com.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
import com.cf.imes.module.executor.enums.OrderTypeEnum; import com.cf.imes.module.executor.enums.OrderTypeEnum;
import com.cf.imes.module.executor.service.order.intervalometer.OrderScheduledImpl;
import com.cf.imes.module.executor.util.ExcelWriterUtil; import com.cf.imes.module.executor.util.ExcelWriterUtil;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiDataAchieve;
import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize; import com.cf.imes.module.executor.util.fileConversion.admin.api.webcad.ApiTypeRealize;
@@ -39,8 +43,7 @@ import static com.cf.imes.framework.common.pojo.CommonResult.success;
import com.cf.imes.framework.operatelog.core.annotations.OperateLog; 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 static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_ERROR; import static com.cf.imes.module.executor.enums.ErrorCodeConstants.*;
import static com.cf.imes.module.executor.enums.ErrorCodeConstants.PLATE_PLAN_DATA_NULL;
import com.cf.imes.module.executor.dal.dataobject.order.OrderDO; import com.cf.imes.module.executor.dal.dataobject.order.OrderDO;
import com.cf.imes.module.executor.service.order.OrderService; import com.cf.imes.module.executor.service.order.OrderService;
@@ -73,13 +76,8 @@ public class OrderController {
@Resource @Resource
private ApiTypeRealize apiTypeRealize; private ApiTypeRealize apiTypeRealize;
@Resource
@PostMapping("/create") private OrderScheduledImpl orderScheduledImpl;
@Operation(summary = "创建生产单")
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public CommonResult<Long> createOrder(@Valid @RequestBody OrderSaveReqVO createReqVO) {
return success(orderService.createOrder(createReqVO));
}
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新生产单") @Operation(summary = "更新生产单")
@@ -89,17 +87,34 @@ public class OrderController {
return success(true); return success(true);
} }
// 删除柜体 // 做生产单是否作废判断
@DeleteMapping("/delete-body") @GetMapping("/get")
@Operation(summary = "删除柜体") @Operation(summary = "获得(单个)生产单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<OrderRespVO> getOrder(@RequestParam("id") Long id) {
return success(BeanUtils.toBean(orderService.getOrder(id), OrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产单分页")
@PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) {
return success(BeanUtils.toBean(orderService.getOrderPage(pageReqVO), OrderRespVO.class));
}
// 不做生产单是否作废判断
@GetMapping("/printing")
@Operation(summary = "打印/导出 数据文件")
@Parameters({ @Parameters({
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"), @Parameter(name = "type", description = "文件类型", required = true, example = "0"),
@Parameter(name = "bodyIds", description = "柜体编号集合", required = true, example = "1,2") @Parameter(name = "orderId", description = "生产单号", required = true, example = "1813119086461190144")
}) })
@PreAuthorize("@ss.hasPermission('production:manager-list:deleteCabinet')") @PreAuthorize("@ss.hasPermission('production:manager-list:export')")
public CommonResult<Boolean> deleteBody(@RequestParam("orderId") Long orderId, @RequestParam("bodyIds") Set<Long> bodyIds) { @OperateLog(type = EXPORT)
orderService.deleteBodyByOrder(orderId, bodyIds); public CommonResult<Map<String, Object>> getOrderPrintData(@RequestParam("orderId") Long orderId,
return success(true); @RequestParam("type") String type, HttpServletResponse response) {
return success(orderService.getPrintDataMap(orderId, type, response));
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@@ -107,7 +122,10 @@ public class OrderController {
@Parameter(name = "orderId", description = "生产单id", required = true, example = "1") @Parameter(name = "orderId", description = "生产单id", required = true, example = "1")
@PreAuthorize("@ss.hasPermission('production:manager-list:nullify')") @PreAuthorize("@ss.hasPermission('production:manager-list:nullify')")
public CommonResult<Boolean> deleteOrder(@RequestParam("orderId") Long orderId) { public CommonResult<Boolean> deleteOrder(@RequestParam("orderId") Long orderId) {
orderService.deleteOrder(orderId); Integer index = orderService.updateOrderDel(orderId, OrderDeletedEnum.DELETED.getStatus());
if (index == 0) {
throw exception(ORDER_DELETED_ERR);
}
return success(true); return success(true);
} }
@@ -117,27 +135,13 @@ public class OrderController {
@PreAuthorize("@ss.hasPermission('production:manager-list:backOrder')") @PreAuthorize("@ss.hasPermission('production:manager-list:backOrder')")
public CommonResult<Boolean> restoreOrder(@RequestBody JSONObject jsonObject) { public CommonResult<Boolean> restoreOrder(@RequestBody JSONObject jsonObject) {
Long orderId = jsonObject.getLong("orderId"); Long orderId = jsonObject.getLong("orderId");
orderService.restoreOrder(orderId); Integer index = orderService.updateOrderDel(orderId, OrderDeletedEnum.NOT_DELETED.getStatus());
if (index == 0) {
throw exception(ORDER_RESTORE_ERR);
}
return success(true); return success(true);
} }
@GetMapping("/get")
@Operation(summary = "获得(单个)生产单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<OrderRespVO> getOrder(@RequestParam("id") Long id) {
OrderDO order = orderService.getOrder(id);
return success(BeanUtils.toBean(order, OrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产单分页")
@PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<PageResult<OrderRespVO>> getOrderPage(@Valid OrderPageReqVO pageReqVO) {
PageResult<OrderDO> pageResult = orderService.getOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, OrderRespVO.class));
}
@GetMapping("/get-import-template") @GetMapping("/get-import-template")
@Operation(summary = "获得导入生产单模板") @Operation(summary = "获得导入生产单模板")
@Parameter(name = "value", description = "文件类型", required = true, example = "0") @Parameter(name = "value", description = "文件类型", required = true, example = "0")
@@ -145,284 +149,8 @@ public class OrderController {
orderService.exportTemplate(response, value); orderService.exportTemplate(response, value);
} }
@GetMapping("/get-room")
@Operation(summary = "生产单详情-房间和柜体id")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<OrderBodyRespVO>> getRoom(@RequestParam("orderId") Long orderId) {
List<OrderBodyRespVO> orderBodyMap = orderService.getOrderBody(orderId);
return success(orderBodyMap);
}
@GetMapping("/get-roomToString") // 获取api订单接口
@Operation(summary = "生产单详情-房间和柜体id(toString)")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<String> getRoomToString(@RequestParam("orderId") Long orderId) {
String orderBodyMap = orderService.getOrderBodyToString(orderId);
return success(orderBodyMap);
}
@GetMapping("/get-room-and-body")
@Operation(summary = "获取柜体和房间信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<OrderRoomBodyRespVO>> getRoomAndBody(@RequestParam("planId") Long planId) {
List<OrderRoomBodyRespVO> orderBodyMap = orderService.getRoomAndBody(planId);
return success(orderBodyMap);
}
@GetMapping("/get-module")
@Operation(summary = "生产单详情-数量信息")
@Parameter(name = "orderId", description = "生产单编号", example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<Map<String, List<?>>> getModule(@RequestParam("orderId") Long orderId) {
Map<String, List<?>> moduleDOList = orderService.getModule(orderId);
return success(moduleDOList);
}
@GetMapping("/get-platesDetailsPage")
@Operation(summary = "生产单详情-板材详细信息(分页)")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
@Parameter(name = "groupId", description = "加工组编号", example = "1024"),
@Parameter(name = "groupName", description = "加工组名称", example = "弧形"),
@Parameter(name = "pageNo", description = "第几页", example = "1"),
@Parameter(name = "pageSize", description = "条数", example = "10")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<PageResult<OrderPlatesDetailReqVO>> platesDetails(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false) Long roomId,
@RequestParam(value = "bodyId", required = false) Long bodyId,
@RequestParam(value = "groupId", required = false) Long groupId,
@RequestParam(value = "groupName", required = false) String groupName,
@RequestParam(value = "pageNo") Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize) {
PageResult<OrderPlatesDetailReqVO> moduleDOList = orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName, pageNo, pageSize);
return success(moduleDOList);
}
@GetMapping("/get-partsDetailsPage")
@Operation(summary = "生产单详情-配件详细信息(分页)")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
@Parameter(name = "name", description = "配件名称", example = "1024"),
@Parameter(name = "pageNo", description = "第几页", example = "1"),
@Parameter(name = "pageSize", description = "条数", example = "10")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<PageResult<OrderPartsRespVO>> partsDetails(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false) Long roomId,
@RequestParam(value = "bodyId", required = false) Long bodyId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "pageNo") Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize) {
PageResult<OrderPartsRespVO> moduleDOList = orderService.getPartsDetail(orderId, roomId, bodyId, name, pageNo, pageSize);
return success(moduleDOList);
}
// 柜体数据获取,需要加上柜体的属性
@GetMapping("/get-body")
@Operation(summary = "生产单柜体数据获取")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<OrderBodyRespVO>> getBody(@RequestParam("orderId") Long orderId) {
return success(BeanUtils.toBean(orderService.getBody(orderId), OrderBodyRespVO.class));
}
@GetMapping("getApiData")
@Operation(summary = "生产单api数据导入新增")
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public CommonResult<Long> test(@RequestParam(value = "orderNo", required = false, defaultValue = "20230809027818") String orderNo)
throws InterruptedException, ExecutionException {
Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
String token = apiDataAchieve.getApiToken(organId).get().getJSONObject("info").getString("access_token");
JSONObject dataPlates = apiDataAchieve.getApiPlateProData(token, orderNo).get();
if (!dataPlates.getString("err_code").equals("0")) {
throw exception(PLATE_PLAN_DATA_ERROR);
}
if (dataPlates.getJSONObject("value") == null) {
throw exception(PLATE_PLAN_DATA_NULL);
}
JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get();
JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get();
JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get();
JSONObject plate = apiDataAchieve.getApiPlateDetailMessage(token, orderNo).get();
JSONObject dataModule = apiDataAchieve.getApiGroupMessage(token, orderNo).get();
JSONObject block = apiDataAchieve.getApiBlocksMessage(token, orderNo).get();
Map<String, List<?>> listMap = apiTypeRealize.apiPlateDataChange(
dataPlates.getJSONObject("value"),//板件生产信息
dataParts,// 配件信息
dataBody, // 柜体信息
dataGoods, // 商品信息
plate, // 板件信息
dataModule,// 加工组信息
block,// 板材数据
orderNo); // 原始板编号
return success(orderService.importApiData(listMap));
}
// @PostMapping("/importFile")
// @Operation(summary = "生产单文件导入新增")
// @Parameters({
// @Parameter(name = "file", description = "文件", required = true),
// @Parameter(name = "type", description = "文件类型", required = true)
// })
// @PreAuthorize("@ss.hasPermission('production:manager-list:create')")
// @OperateLog(type = IMPORT)
// public void exportTest(@RequestPart("file") MultipartFile file,
// @RequestParam(value = "type", required = false, defaultValue = "true") Integer type,
// HttpServletResponse response) throws IOException {
// try {
//
// List<?> list = null;
// OrderDO orderDO = new OrderDO();
// if (type == 0) { //excel
// // 读取文件
// excelReadUtil.setErr(0);
// Map<String, Object> map = excelReadUtil.read(file);
// System.err.println(excelReadUtil.isErr());
// // 判断是否读取有误
// if (excelReadUtil.isErr() == -1) { // 文件为空
// ExcelWriterUtil.writeErr(response, "生产单内容为空", orderService.getSavePath() + File.separator + "order_err.xlsx");
// return;
// } else if (excelReadUtil.isErr() > 0) {
// // 返回文件
// ExcelWriterUtil.write(response, (Map<Object, Object>) map.get("order"), (List<OrderPlateImportExcelVO>) map.get("plate"), orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx");
// return;
// } else {
// // 获取数据
// list = (List<?>) map.get("plate");
// Map<String, Object> mapOrder = excelReadUtil.changeOrderDO((Map<Object, Object>) map.get("order"));
// if (list.size() == 0) {
// orderDO.setStatus(0);
// }
// orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(OrderTypeEnum.MAIN_ORDER.getStatus()).setStatus(1);
// String err = ((String) mapOrder.get("error"));
//
// if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) {
// err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;";
// }
// if (!err.equals("")) {
// ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "order_err.xlsx");
// }
//
// }
// } else if (type == 1) { // json
//
// } else if (type == 2) { // xml
//
// }
// orderService.importExcelData(orderDO, list, 0);
// } catch (Exception e) {
// ExcelWriterUtil.writeErr(response, "系统出现未知错误,请下载模板,按照模板重新上传文件", orderService.getSavePath() + File.separator + "order_err.xlsx");
// }
// }
@PostMapping("/importFile")
@Operation(summary = "生产单文件导入新增/导入板材")
@Parameters({
@Parameter(name = "file", description = "文件", required = true),
@Parameter(name = "type", description = "文件类型", required = true),
@Parameter(name = "index", description = "导入范围 0:全部,1:板材,默认为全部", required = false),
@Parameter(name = "id", description = "生产单id", required = false)
})
@OperateLog(type = IMPORT)
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public void exportTestTwo(@RequestPart("file") MultipartFile file,
@RequestParam(value = "type") Integer type,
@RequestParam(value = "index", required = false, defaultValue = "0") Integer index,
@RequestParam(value = "id", required = false, defaultValue = "0") Long orderId,
HttpServletResponse response) throws IOException {
try {
List<?> list = null;
OrderDO orderDO = new OrderDO();
if (type == 0) { //excel
// 读取文件
excelReadUtil.setErr(0);
Map<String, Object> map = excelReadUtil.read(file);
System.out.println(" map + " + map);
// 判断是否读取有误
if (excelReadUtil.isErr() > 0) {
// 板材数据格式错误
ExcelWriterUtil.write(response, (Map<Object, Object>) map.get("order"), (List<OrderPlateImportExcelVO>) map.get("plate"),
orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx");
return;
}else {
list = (List<?>) map.get("plate");
if (index == null || index == 0) { // 全部导入
Map<String, Object> mapOrder = excelReadUtil.changeOrderDO((Map<Object, Object>) map.get("order"));
if (list.size() == 0) {
orderDO.setStatus(0);
}
orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(OrderTypeEnum.MAIN_ORDER.getStatus());
String err = ((String) mapOrder.get("error"));
if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) {
err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;";
}
if (!err.equals("")) {
ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "order_err.xlsx");
}
}else { // 板材导入
orderDO.setId(orderId);
}
}
} else if (type == 1) { // json
} else if (type == 2) { // xml
}
orderService.importExcelData(orderDO, list, index);
} catch (Exception e) {
ExcelWriterUtil.writeErr(response, "系统出现未知错误,请下载模板,按照模板重新上传文件", orderService.getSavePath() + File.separator + "order_err.xlsx");
}
}
@GetMapping("/get-goodsList")
@Operation(summary = "生产单所用板材商品信息")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<GoodsDO>> getGoodsList(@RequestParam("orderId") Long orderId) {
List<GoodsDO> goodsDOS = orderService.getGoodsList(orderId);
return success(goodsDOS);
}
@GetMapping("/uploadFiles")
@Operation(summary = "导入生产数据文件模板")
@Parameters({
@Parameter(name = "file", description = "文件", required = true),
@Parameter(name = "type", description = "是否强制上传", required = false)
})
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public CommonResult<String> uploadOrderType(@RequestPart("file") MultipartFile file,
@RequestParam(value = "type", required = false, defaultValue = "false") Boolean type) {
return success(orderService.importTemplate(file, type));
}
@GetMapping("/printing")
@Operation(summary = "打印/导出 数据文件")
@Parameter(name = "type", description = "文件类型", required = true, example = "0")
@PreAuthorize("@ss.hasPermission('production:manager-list:export')")
@OperateLog(type = EXPORT)
public CommonResult<Map<String, Object>> getOrderPrintData(
@RequestParam("orderId") Long orderId,
@RequestParam("type") String type,
HttpServletResponse response) {
return success(orderService.getPrintDataMap(orderId, type, response));
}
// 获取api订单接口
@GetMapping("/getApiOrder") @GetMapping("/getApiOrder")
@Operation(summary = "获取api订单接口") @Operation(summary = "获取api订单接口")
@Parameters({ @Parameters({
@@ -445,13 +173,259 @@ public class OrderController {
return success(orderService.getApiOrderList(orderList)); return success(orderService.getApiOrderList(orderList));
} }
// api-生产单导入
@GetMapping("getApiData")
@Operation(summary = "生产单api数据导入新增")
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public CommonResult<Long> test(@RequestParam(value = "orderNo", required = false, defaultValue = "20230809027818") String orderNo)
throws InterruptedException, ExecutionException {
Long organId = SecurityFrameworkUtils.getLoginUser().getOrganId();
JSONObject oauth = apiDataAchieve.getApiToken(organId).get();
String token = oauth.getJSONObject("info").getString("access_token");
String shopId = oauth.getJSONObject("info").getString("shop_id");
JSONObject order= apiDataAchieve.getApiOrder(token, shopId, orderNo).get();
if (!order.getString("err_code").equals("0")) {
throw exception(PLATE_PLAN_DATA_ERROR);
}
if (order.getJSONArray("data") == null) {
throw exception(PLATE_PLAN_DATA_NULL);
}
JSONObject dataPlates = apiDataAchieve.getApiPlateProData(token, orderNo).get();
JSONObject dataParts = apiDataAchieve.getApiPartsMessage(token, orderNo).get();
JSONObject dataBody = apiDataAchieve.getApiBodyMessage(token, orderNo).get();
JSONObject dataGoods = apiDataAchieve.getApiGoodsMessage(token, orderNo).get();
JSONObject plate = apiDataAchieve.getApiPlateDetailMessage(token, orderNo).get();
JSONObject dataModule = apiDataAchieve.getApiGroupMessage(token, orderNo).get();
JSONObject block = apiDataAchieve.getApiBlocksMessage(token, orderNo).get();
Map<String, List<?>> listMap = apiTypeRealize.apiPlateDataChange(
order,
dataPlates,//板件生产信息
dataParts,// 配件信息
dataBody, // 柜体信息
dataGoods, // 商品信息
plate, // 板件明细
dataModule,// 加工组信息
block,// 板材数据
orderNo); // 原始板编号
return success(orderService.importApiData(listMap));
}
@PostMapping("/importFile")
@Operation(summary = "生产单文件导入新增/导入板材")
@Parameters({
@Parameter(name = "file", description = "文件", required = true),
@Parameter(name = "type", description = "文件类型", required = true),
@Parameter(name = "index", description = "导入范围 0:全部,1:板材,默认为全部", required = false),
@Parameter(name = "id", description = "生产单id", required = false)
})
@OperateLog(type = IMPORT)
@PreAuthorize("@ss.hasPermission('production:manager-list:create')")
public void exportTestTwo(@RequestPart("file") MultipartFile file,
@RequestParam(value = "type") Integer type,
@RequestParam(value = "index", required = false, defaultValue = "0") Integer index,
@RequestParam(value = "id", required = false, defaultValue = "0") Long orderId,
HttpServletResponse response) throws IOException {
try {
List<?> list = null;
OrderDO orderDO = new OrderDO();
if (type == 0) { //excel
excelReadUtil.setErr(0);
Map<String, Object> map = excelReadUtil.read(file);
if (excelReadUtil.isErr() > 0) {
ExcelWriterUtil.write(response, (Map<Object, Object>) map.get("order"), (List<OrderPlateImportExcelVO>) map.get("plate"),
orderService.getSavePath() + File.separator + "order_add_excel_err.xlsx");
return;
} else {
list = (List<?>) map.get("plate");
if (index == null || index == 0) { // 整单导入
Map<String, Object> mapOrder = (Map<String, Object>) map.get("order");
orderDO = ((OrderDO) mapOrder.get("order")).setOrderType(OrderTypeEnum.MAIN_ORDER.getStatus());
String err = ((String) mapOrder.get("error"));
if (!orderService.customOrderNoIsExists(orderDO.getCustomOrderNo())) {
err += orderDO.getCustomOrderNo() + "-自定义生产单号已存在;";
}
if (!err.equals("")) {
ExcelWriterUtil.writeErr(response, err, orderService.getSavePath() + File.separator + "order_err.xlsx");
return;
}
if (list.size() == 0) {
orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus());
}else {
orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus());
}
} else { // 板材导入
orderDO = orderService.getOrder(orderId);
}
}
} else if (type == 1) { // json
} else if (type == 2) { // xml
}
orderService.importExcelData(orderDO, list, index);
} catch (Exception e) {
ExcelWriterUtil.writeErr(response, "系统出现未知错误,请下载模板,按照模板重新上传文件", orderService.getSavePath() + File.separator + "order_err.xlsx");
}
}
// 生产单详情
@GetMapping("/get-room")
@Operation(summary = "生产单详情-房间和柜体id")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"),
@Parameter(name = "deleted", description = "是否删除", example = "false")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<OrderBodyRespVO>> getRoom(@RequestParam("orderId") Long orderId,
@RequestParam(value ="deleted", required = false, defaultValue = "false") Boolean deleted) {
if (deleted == null){
deleted = false;
}
return success(orderService.getOrderBody(orderId, !deleted ? 0 : 1));
}
@GetMapping("/get-room-and-body")
@Operation(summary = "获取柜体和房间信息")
@Parameter(name = "planId", description = "排单ID", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<List<OrderRoomBodyRespVO>> getRoomAndBody(@RequestParam("planId") Long planId) {
return success(orderService.getRoomAndBody(planId));
}
@GetMapping("/get-module")
@Operation(summary = "生产单详情-数量信息")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"),
@Parameter(name = "deleted", description = "是否删除", example = "false")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<Map<String, List<?>>> getModule(@RequestParam("orderId") Long orderId,
@RequestParam(value ="deleted", required = false, defaultValue = "false") Boolean deleted) {
if (deleted == null){
deleted = false;
}
return success(orderService.getModule(orderId, !deleted ? 0 : 1));
}
@GetMapping("/get-platesDetailsPage")
@Operation(summary = "生产单详情-板材详细信息(分页)")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
@Parameter(name = "groupId", description = "加工组编号", example = "1024"),
@Parameter(name = "groupName", description = "加工组名称", example = "弧形"),
@Parameter(name = "pageNo", description = "第几页", example = "1"),
@Parameter(name = "pageSize", description = "条数", example = "10"),
@Parameter(name = "deleted", description = "是否删除", example = "false")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<PageResult<OrderPlatesDetailReqVO>> platesDetails(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false) Long roomId,
@RequestParam(value = "bodyId", required = false) Long bodyId,
@RequestParam(value = "groupId", required = false) Long groupId,
@RequestParam(value = "groupName", required = false) String groupName,
@RequestParam(value = "pageNo") Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize,
@RequestParam(value ="deleted", required = false, defaultValue = "false") Boolean deleted) {
if (deleted == null){
deleted = false;
}
return success(orderService.getPlatesDetail(orderId, roomId, bodyId, groupId, groupName, pageNo, pageSize, !deleted ? 0 : 1));
}
@GetMapping("/get-partsDetailsPage")
@Operation(summary = "生产单详情-配件详细信息(分页)")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1024"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1024"),
@Parameter(name = "name", description = "配件名称", example = "1024"),
@Parameter(name = "pageNo", description = "第几页", example = "1"),
@Parameter(name = "pageSize", description = "条数", example = "10"),
@Parameter(name = "deleted", description = "是否删除", example = "false")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<PageResult<OrderPartsRespVO>> partsDetails(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false) Long roomId,
@RequestParam(value = "bodyId", required = false) Long bodyId,
@RequestParam(value = "name", required = false) String name,
@RequestParam(value = "pageNo") Integer pageNo,
@RequestParam(value = "pageSize") Integer pageSize,
@RequestParam(value ="deleted", required = false, defaultValue = "false") Boolean deleted) {
if (deleted == null){
deleted = false;
}
return success(orderService.getPartsDetail(orderId, roomId, bodyId, name, pageNo, pageSize, !deleted ? 0 : 1));
}
@DeleteMapping("/delete-body")
@Operation(summary = "删除柜体")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:deleteCabinet')")
public CommonResult<Boolean> deleteBody(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false, defaultValue = "0") Long roomId,
@RequestParam(value = "bodyId", required = false, defaultValue = "0") Long bodyId) {
orderService.updateBodyDeletedByOrderId(orderId, roomId, bodyId, OrderDeletedEnum.DELETED.getStatus());
return success(true);
}
@PutMapping("/restore-body")
@Operation(summary = "还原柜体")
@Parameters({
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024"),
@Parameter(name = "roomId", description = "房间编号", example = "1"),
@Parameter(name = "bodyId", description = "柜体编号", example = "1")
})
@PreAuthorize("@ss.hasPermission('production:manager-list:restoreCabinet')")
public CommonResult<Boolean> restoreBody(@RequestParam("orderId") Long orderId,
@RequestParam(value = "roomId", required = false, defaultValue = "0") Long roomId,
@RequestParam(value = "bodyId", required = false, defaultValue = "0") Long bodyId) {
orderService.updateBodyDeletedByOrderId(orderId, roomId, bodyId, OrderDeletedEnum.NOT_DELETED.getStatus());
return success(true);
}
@DeleteMapping("/realDeleted")
@Operation(summary = "作废中删除")
@Parameter(name = "orderId", description = "生产单编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('production:manager-list:nullify')")
public CommonResult<Boolean> realDeleted(@RequestParam("orderId") Long orderId) {
orderService.realDeletedOrder(orderId);
return success(true);
}
// 统计 // 统计
// 生产单超期/到期告警 (工作台) // 生产单超期/到期告警 (工作台)
@GetMapping("/getOrderWarn") @GetMapping("/getOrderWarn")
@Operation(summary = "生产单超期/到期告警 (工作台)") @Operation(summary = "生产单超期/到期告警 (工作台)")
@PreAuthorize("@ss.hasPermission('productManager:List')") @PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<Map<String, List<OrderOverdueRespVO>>> getOrderOverdue() { public CommonResult<Map<String, List<OrderOverdueRespVO>>> getOrderOverdue() {
return success(orderService.getOrderWarn()); return success(orderService.getOrderWarn());
} }
// 生产单单量 还没有完成
@GetMapping("/orderCountProducePeriod")
@Operation(summary = "生产单单量")
@Parameters({
@Parameter(name = "startTime", description = "开始时间", example = "2024-07-15"),
@Parameter(name = "endTime", description = "结束时间", example = "2024-07-16")
})
@PreAuthorize("@ss.hasPermission('productManager:List')")
public CommonResult<Map<String, Integer>> getOrderCountProducePeriod(@RequestParam(value = "startTime") String startTime,
@RequestParam(value = "endTime") String endTime) {
return success(orderService.orderCountProducePeriod(startTime, endTime));
}
} }
@@ -0,0 +1,21 @@
package com.cf.imes.module.executor.controller.admin.order.vo.order;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.time.LocalDateTime;
@Schema(description = "分析页 - 生产单单量")
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@ToString(callSuper = true)
public class OrderCountProducePeriodRespVO {
@Schema(description = "生产单日期", requiredMode = Schema.RequiredMode.REQUIRED)
private LocalDateTime orderDate;
@Schema(description = "订单数量")
private Integer count;
}
@@ -13,8 +13,8 @@ import com.alibaba.excel.annotation.*;
@ExcelIgnoreUnannotated @ExcelIgnoreUnannotated
public class OrderBodyRespVO { public class OrderBodyRespVO {
@Schema(description = "模块 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30562") @Schema(description = "柜体 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "30562")
@ExcelProperty("模块 ID") @ExcelProperty("柜体 ID")
private Long id; private Long id;
@Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11075") @Schema(description = "生产单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11075")
@@ -29,24 +29,24 @@ public class OrderBodyRespVO {
@ExcelProperty("房间名称") @ExcelProperty("房间名称")
private String roomName; private String roomName;
@Schema(description = "模块名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰") @Schema(description = "柜体名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "晨丰")
@ExcelProperty("模块名称") @ExcelProperty("柜体名称")
private String name; private String name;
@Schema(description = "模块宽度", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "柜体宽度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块宽度") @ExcelProperty("柜体宽度")
private Double width; private Double width;
@Schema(description = "模块高度", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "柜体高度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块高度") @ExcelProperty("柜体高度")
private Double height; private Double height;
@Schema(description = "模块深度", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "柜体深度", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块深度") @ExcelProperty("柜体深度")
private Double depth; private Double depth;
@Schema(description = "模块复制数量", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "柜体复制数量", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("模块复制数量") @ExcelProperty("柜体复制数量")
private Short multiNum; private Short multiNum;
@Schema(description = "板材数量", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "板材数量", requiredMode = Schema.RequiredMode.REQUIRED)
@@ -73,7 +73,7 @@ public class OrderPartsController {
@GetMapping("/page") @GetMapping("/page")
@Operation(summary = "获得生产单配件分页") @Operation(summary = "获得生产单配件分页")
@PreAuthorize("@ss.hasPermission('executor:order-parts:query')") @PreAuthorize("@ss.hasPermission('production:manager-list:detail')")
public CommonResult<PageResult<OrderPartsRespVO>> getOrderPartsPage(@Valid OrderPartsPageReqVO pageReqVO) { public CommonResult<PageResult<OrderPartsRespVO>> getOrderPartsPage(@Valid OrderPartsPageReqVO pageReqVO) {
PageResult<OrderPartsDO> pageResult = orderPartsService.getOrderPartsPage(pageReqVO); PageResult<OrderPartsDO> pageResult = orderPartsService.getOrderPartsPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, OrderPartsRespVO.class)); return success(BeanUtils.toBean(pageResult, OrderPartsRespVO.class));
@@ -60,8 +60,8 @@ public class PartGoodsRespVO {
@Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "单位", requiredMode = Schema.RequiredMode.REQUIRED)
private String unit; private String unit;
@Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507") // @Schema(description = "价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507")
private Double price; // private Double price;
@Schema(description = "是否复合部件:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "是否复合部件:0 否 1 是", requiredMode = Schema.RequiredMode.REQUIRED)
private Boolean isComposite; private Boolean isComposite;
@@ -75,6 +75,6 @@ public class PartGoodsRespVO {
@Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507") @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507")
private Double num; private Double num;
@Schema(description = "金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507") // @Schema(description = "金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "29507")
private Double totalPrice; // private Double totalPrice;
} }
@@ -70,8 +70,8 @@ public class PlateGoodsRespVO {
@Schema(description = "商品厚度", example = "14195") @Schema(description = "商品厚度", example = "14195")
private BigDecimal goodsThickness; private BigDecimal goodsThickness;
@Schema(description = "商品价格", example = "14195") // @Schema(description = "商品价格", example = "14195")
private BigDecimal price; // private BigDecimal price;
@Schema(description = "商品品牌", example = "柏柏") @Schema(description = "商品品牌", example = "柏柏")
private String brand; private String brand;
@@ -69,6 +69,10 @@ public class OrderDO extends BaseDO {
* 订单状态,订单状态,0空订单1新单2生产中3生产完成 * 订单状态,订单状态,0空订单1新单2生产中3生产完成
*/ */
private Integer status; private Integer status;
/**
* 打包状态:0未打包1打包中2已打包
*/
private Integer packaged;
/** /**
* 自定义单号 * 自定义单号
*/ */
@@ -29,7 +29,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
default PageResult<GoodsDO> selectPage(GoodsPageReqVO reqVO) { default PageResult<GoodsDO> selectPage(GoodsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<GoodsDO>() return selectPage(reqVO, new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId,getUserOrganId()) .eq(GoodsDO::getOrganId, getUserOrganId())
.eqIfPresent(GoodsDO::getOrderId, reqVO.getOrderId()) .eqIfPresent(GoodsDO::getOrderId, reqVO.getOrderId())
.eqIfPresent(GoodsDO::getRawGoodsId, reqVO.getRawGoodsId()) .eqIfPresent(GoodsDO::getRawGoodsId, reqVO.getRawGoodsId())
.eqIfPresent(GoodsDO::getGoodsId, reqVO.getGoodsId()) .eqIfPresent(GoodsDO::getGoodsId, reqVO.getGoodsId())
@@ -48,7 +48,7 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
} }
List<GoodsReqVO> selectGoodsList(@Param("orderId") Long orderId,@Param("organId") Long organId); List<GoodsReqVO> selectGoodsList(@Param("orderId") Long orderId, @Param("organId") Long organId);
List<GoodsReqVO> selectGoodsListByOrderIds(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); List<GoodsReqVO> selectGoodsListByOrderIds(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
@@ -75,19 +75,30 @@ public interface GoodsMapper extends BaseMapperX<GoodsDO> {
// 删板材,批量 // 删板材,批量
void updateDeletedById(@Param("ids") List<Long> ids, @Param("deleted") Integer deleted, @Param("organId") Long organId); void updateDeletedById(@Param("ids") List<Long> ids, @Param("deleted") Integer deleted, @Param("organId") Long organId);
void deletedById(@Param("ids") List<Long> ids, @Param("organId") Long organId); void deletedById(@Param("ids") List<Long> ids, @Param("organId") Long organId);
IPage<OrderGoodsResp> selectGoods(@Param("page") IPage page,@Param("goodsIds") List<Long> goodsIds,@Param("organId") Long organId); IPage<OrderGoodsResp> selectGoods(@Param("page") IPage page, @Param("goodsIds") List<Long> goodsIds, @Param("organId") Long organId);
default GoodsDO selectId(Long orderId, Long goodsId, Long organId) { default GoodsDO selectId(Long orderId, Long goodsId, Long organId) {
return selectOne(new LambdaQueryWrapperX<GoodsDO>() return selectOne(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId) .eq(GoodsDO::getOrganId, organId)
.eq(GoodsDO::getOrderId, orderId) .eq(GoodsDO::getOrderId, orderId)
.eq(GoodsDO::getGoodsId,goodsId) .eq(GoodsDO::getGoodsId, goodsId)
.eq(GoodsDO::getDeleted, 0)); .eq(GoodsDO::getDeleted, 0));
} }
// 根据生产单删除
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<GoodsDO>()
.eq(GoodsDO::getOrganId, organId)
.eqIfPresent(GoodsDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<GoodsDO>()
.in(GoodsDO::getOrderId, orderId));
}
} }
@@ -8,18 +8,27 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.cf.imes.framework.common.pojo.PageResult; 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.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCountProducePeriodRespVO;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO;
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.bo.OrderIds; import com.cf.imes.module.executor.controller.admin.plan.bo.OrderIds;
import com.cf.imes.module.executor.controller.admin.plan.vo.OrderRespVOCopy; 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.cf.imes.module.executor.enums.OrderDeletedEnum;
import com.cf.imes.module.executor.enums.OrderStatusEnum;
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 org.springframework.beans.factory.annotation.Qualifier;
import javax.annotation.sql.DataSourceDefinition;
import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 生产单表 order_{N} Mapper * 生产单表 order_{N} Mapper
@@ -55,7 +64,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
if (reqVO.getOrder() == null) { if (reqVO.getOrder() == null) {
query.orderByDesc(OrderDO::getId); query.orderByDesc(OrderDO::getId);
}else { } else {
if (reqVO.getOrder().equals("ascend")) { if (reqVO.getOrder().equals("ascend")) {
switch (reqVO.getField()) { switch (reqVO.getField()) {
case "id" -> query.orderByAsc(OrderDO::getId); case "id" -> query.orderByAsc(OrderDO::getId);
@@ -64,7 +73,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
case "deliveryDate" -> query.orderByAsc(OrderDO::getDeliveryDate); case "deliveryDate" -> query.orderByAsc(OrderDO::getDeliveryDate);
case "apiOrderId" -> query.orderByAsc(OrderDO::getApiOrderId); case "apiOrderId" -> query.orderByAsc(OrderDO::getApiOrderId);
} }
}else if (reqVO.getOrder().equals("descend")) { } else if (reqVO.getOrder().equals("descend")) {
switch (reqVO.getField()) { switch (reqVO.getField()) {
case "id" -> query.orderByDesc(OrderDO::getId); case "id" -> query.orderByDesc(OrderDO::getId);
case "customOrderNo" -> query.orderByDesc(OrderDO::getCustomOrderNo); case "customOrderNo" -> query.orderByDesc(OrderDO::getCustomOrderNo);
@@ -86,34 +95,36 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
// 查找生产单 // 查找生产单
default List<OrderDO> selectOrder(Long id,Long organId) { default List<OrderDO> selectOrder(Long id, Long organId) {
return selectList(new LambdaQueryWrapperX<OrderDO>() return selectList(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getId, id) .eqIfPresent(OrderDO::getId, id)
.eqIfPresent(OrderDO::getOrganId, organId)); .eqIfPresent(OrderDO::getOrganId, organId));
} }
// 修改生产单状态 单个 // 修改生产单状态 单个
default int updateOrderStatus(Long id, Integer status,Long organId) { default int updateOrderStatus(Long id, Integer status, Long organId) {
return update(new LambdaUpdateWrapper<OrderDO>() return update(new LambdaUpdateWrapper<OrderDO>()
.set(OrderDO::getStatus, status) .set(OrderDO::getStatus, status)
.eq(OrderDO::getId, id) .eq(OrderDO::getId, id)
.eq(OrderDO::getDeleted, 0) .eq(OrderDO::getDeleted, 0)
.eq(OrderDO::getOrganId, organId)); .eq(OrderDO::getOrganId, organId));
} }
// 查询单个生产单 // 查询单个生产单
default OrderDO selectOrderOne(Long id,Long organId) { default OrderDO selectOrderOne(Long id, Long organId) {
return selectOne(new LambdaQueryWrapper<OrderDO>() return selectOne(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getId, id) .eq(OrderDO::getId, id)
.eq(OrderDO::getOrganId, organId)); .eq(OrderDO::getOrganId, organId));
} }
// 删除状态为条件,查询生产单 // 删除状态为条件,查询生产单
default OrderDO selectOrderOne(Long id,Long organId,Integer deleted) { default OrderDO selectOrderOne(Long id, Long organId, Integer deleted) {
return selectOne(new LambdaQueryWrapper<OrderDO>() return selectOne(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getId, id) .eq(OrderDO::getId, id)
.eq(OrderDO::getOrganId, organId) .eq(OrderDO::getOrganId, organId)
.eq(OrderDO::getDeleted, deleted)); .eq(OrderDO::getDeleted, deleted));
} }
// 批量查询生产单 // 批量查询生产单
default List<OrderDO> selectOrderList(Collection<Long> ids, Long organId) { default List<OrderDO> selectOrderList(Collection<Long> ids, Long organId) {
return selectList(new LambdaQueryWrapper<OrderDO>() return selectList(new LambdaQueryWrapper<OrderDO>()
@@ -122,7 +133,7 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
} }
// 修改删除状态 // 修改删除状态
default int updateOrderDeleted(Long id, Integer deleted,Long organId) { default int updateOrderDeleted(Long id, Integer deleted, Long organId) {
return update(new LambdaUpdateWrapper<OrderDO>() return update(new LambdaUpdateWrapper<OrderDO>()
.set(OrderDO::getDeleted, deleted) .set(OrderDO::getDeleted, deleted)
.eq(OrderDO::getId, id) .eq(OrderDO::getId, id)
@@ -130,13 +141,77 @@ public interface OrderMapper extends BaseMapperX<OrderDO> {
} }
List<OrderRespVOCopy> selectOrderListByIds(@Param("orderIds") List<OrderIds> orderIds, @Param("organId")Long organId); List<OrderRespVOCopy> selectOrderListByIds(@Param("orderIds") List<OrderIds> orderIds, @Param("organId") Long organId);
List<Long> selectOrderIds(@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper); List<Long> selectOrderIds(@Param(Constants.WRAPPER) Wrapper<OrderDO> wrapper);
// 生产单预警统计 // 生产单预警统计
List<OrderOverdueRespVO> selectOrderNear(@Param("today") LocalDateTime today, @Param("orderDate") LocalDateTime orderDate, @Param("organId") Long organId); List<OrderOverdueRespVO> selectOrderNear(@Param("today") LocalDateTime today, @Param("orderDate") LocalDateTime orderDate, @Param("organId") Long organId);
// 生产单逾期统计 // 生产单逾期统计
List<OrderOverdueRespVO> selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId); List<OrderOverdueRespVO> selectOrderOverdue(@Param("today") LocalDateTime today, @Param("organId") Long organId);
/**
* 生产单数量统计
*/
default Integer selectOrderCount(Long organId) {
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getOrganId, organId)
.eq(OrderDO::getDeleted, 0)));
}
/**
* 今日新增生产单总数统计
*/
default Integer selectOrderCountToday(Long organId) {
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getOrganId, organId)
.eq(OrderDO::getOrderDate, LocalDate.now())));
}
/**
* 今日完成生产单总数统计
*/
default Integer selectOrderCountTodayFinish(Long organId) {
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getOrganId, organId)
.between(OrderDO::getFinishTime, LocalDateTime.of(LocalDate.now(), LocalTime.MIN), LocalDateTime.of(LocalDate.now(), LocalTime.MAX))));
}
/**
* 生产中生产单总数
*/
default Integer selectOrderCountProduce(Long organId) {
return Math.toIntExact(selectCount(new LambdaQueryWrapperX<OrderDO>()
.eqIfPresent(OrderDO::getOrganId, organId)
.eq(OrderDO::getStatus, OrderStatusEnum.IN_PRODUCTION.getStatus())));
}
/**
* 生产中生产平方数
*
* @param organId
* @return
*/
Integer selectOrderSquareProduce(@Param("organId") Long organId);
// 生产单单量
@OrganIgnore
List<OrderCountProducePeriodRespVO> selectOrderCountProducePeriod(@Param("organId") Long organId,
@Param("startTime") String startTime, @Param("endTime") String endTime);
// 物理删除生产单
default int deleteOrder(Long id, Long organId) {
return delete(new LambdaQueryWrapperX<OrderDO>()
.eq(OrderDO::getOrganId, organId)
.eqIfPresent(OrderDO::getId, id));
}
// 查询修改时间距离当天日期为30的生产单
default List<Long> selectOrderListByUpdateTime() {
return selectList(new LambdaQueryWrapper<OrderDO>()
.eq(OrderDO::getDeleted, OrderDeletedEnum.DELETED.getStatus())
.lt(OrderDO::getUpdateTime, LocalDateTime.now().minusDays(30))).stream().map(OrderDO::getId).collect(Collectors.toList());
}
} }
@@ -1,13 +1,16 @@
package com.cf.imes.module.executor.dal.mysql.orderBody; package com.cf.imes.module.executor.dal.mysql.orderBody;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.security.core.util.SecurityFrameworkUtils; import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.order.OrderModuleRespVO;
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.controller.admin.order.vo.product.OrderRoomBodyRespVO; import com.cf.imes.module.executor.controller.admin.order.vo.product.OrderRoomBodyRespVO;
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.orderGroup.OrderGroupDO;
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 org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
@@ -15,6 +18,7 @@ import org.apache.ibatis.annotations.Update;
import java.io.Serializable; import java.io.Serializable;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 生产单柜体 Mapper * 生产单柜体 Mapper
@@ -53,9 +57,10 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
.eq(OrderBodyDO::getId, id) .eq(OrderBodyDO::getId, id)
.eq(OrderBodyDO::getOrganId, organId)); .eq(OrderBodyDO::getOrganId, organId));
} }
default int deletedById(Long id, Long organId) {
default int deletedByOrderId(Long orderId, Long organId) {
return delete(new LambdaUpdateWrapper<OrderBodyDO>() return delete(new LambdaUpdateWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getId, id) .eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getOrganId, organId)); .eq(OrderBodyDO::getOrganId, organId));
} }
@@ -70,6 +75,7 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
List<OrderRoomBodyRespVO> selectRoomAndBody(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId); List<OrderRoomBodyRespVO> selectRoomAndBody(@Param("orderIds") List<Long> orderIds, @Param("organId") Long organId);
// 生产单柜体记录数量 // 生产单柜体记录数量
default int selectCountByOrderId(Long orderId, Long organId, Integer deleted) { default int selectCountByOrderId(Long orderId, Long organId, Integer deleted) {
return Math.toIntExact(selectCount(new LambdaUpdateWrapper<OrderBodyDO>() return Math.toIntExact(selectCount(new LambdaUpdateWrapper<OrderBodyDO>()
@@ -78,9 +84,9 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
.eq(OrderBodyDO::getOrganId, organId))); .eq(OrderBodyDO::getOrganId, organId)));
} }
// 按照房间名称查询 // 按照房间名称查询
default List<OrderBodyDO> selectByRoomName(Long orderId, String roomName, default List<OrderBodyDO> selectByRoomName(Long orderId, String roomName,
Long organId, Integer deleted){ Long organId, Integer deleted) {
return selectList(new LambdaUpdateWrapper<OrderBodyDO>() return selectList(new LambdaUpdateWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId) .eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getRoomName, roomName) .eq(OrderBodyDO::getRoomName, roomName)
@@ -88,14 +94,38 @@ public interface OrderBodyMapper extends BaseMapperX<OrderBodyDO> {
.eq(OrderBodyDO::getOrganId, organId)); .eq(OrderBodyDO::getOrganId, organId));
} }
// 按照房间id和柜体名称查询 // 按照房间id和柜体名称查询
default List<OrderBodyDO> selectByRoomIdAndBodyName(Long orderId, Long roomId, default OrderBodyDO selectByRoomIdAndBodyName(Long orderId, Long roomId,
String bodyName, Long organId, Integer deleted){ String bodyName, Long organId, Integer deleted) {
return selectList(new LambdaUpdateWrapper<OrderBodyDO>() return selectOne(new LambdaUpdateWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId) .eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getRoomId, roomId) .eq(OrderBodyDO::getRoomId, roomId)
.eq(OrderBodyDO::getName, bodyName) .eq(OrderBodyDO::getName, bodyName)
.eq(OrderBodyDO::getDeleted, deleted) .eq(OrderBodyDO::getDeleted, deleted)
.eq(OrderBodyDO::getOrganId, organId)); .eq(OrderBodyDO::getOrganId, organId));
} }
// 根据房间id查找OrderBodyDO的id
default List<Long> selectBodyIdByRoomId(Long orderId, Long roomId, Long organId, Integer deleted) {
return selectList(new LambdaQueryWrapper<OrderBodyDO>()
.eq(OrderBodyDO::getOrderId, orderId)
.eq(OrderBodyDO::getRoomId, roomId)
.eq(OrderBodyDO::getOrganId, organId)
.eq(OrderBodyDO::getDeleted, deleted)
.select(OrderBodyDO::getId)).stream()
.map(OrderBodyDO::getId)
.collect(Collectors.toList());
}
// 根据生产单进行删除
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderBodyDO>()
.eq(OrderBodyDO::getOrganId, organId)
.eqIfPresent(OrderBodyDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<OrderBodyDO>()
.in(OrderBodyDO::getOrderId, orderId));
}
} }
@@ -1,8 +1,10 @@
package com.cf.imes.module.executor.dal.mysql.orderGroup; package com.cf.imes.module.executor.dal.mysql.orderGroup;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
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.module.executor.dal.dataobject.orderBody.OrderBodyDO; import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO; import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -11,6 +13,7 @@ import org.apache.ibatis.annotations.Update;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
/** /**
* 生产单加工组 Mapper * 生产单加工组 Mapper
@@ -52,7 +55,7 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
// 通过柜体id和加工组类型名称查询加工组 // 通过柜体id和加工组类型名称查询加工组
default List<OrderGroupDO> selectByRoomIdAndGroupTypeName(Long orderId, Long bodyId, default List<OrderGroupDO> selectByRoomIdAndGroupTypeName(Long orderId, Long bodyId,
String groupTypeName, Long organId, Integer deleted) { String groupTypeName, Long organId, Integer deleted) {
return selectList(new LambdaUpdateWrapper<OrderGroupDO>() return selectList(new LambdaUpdateWrapper<OrderGroupDO>()
.eq(OrderGroupDO::getOrderId, orderId) .eq(OrderGroupDO::getOrderId, orderId)
.eq(OrderGroupDO::getBodyId, bodyId) .eq(OrderGroupDO::getBodyId, bodyId)
@@ -62,9 +65,9 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
} }
// 通过柜体id和加工组类型id加工组名称名称查询加工组 // 通过柜体id和加工组类型id加工组名称名称查询加工组
default List<OrderGroupDO> selectByRoomIdAndGroupTypeIdAndGroupName(Long orderId, Long bodyId, default OrderGroupDO selectByRoomIdAndGroupTypeIdAndGroupName(Long orderId, Long bodyId,
Long groupTypeId, String groupName, Long organId, Integer deleted) { Long groupTypeId, String groupName, Long organId, Integer deleted) {
return selectList(new LambdaUpdateWrapper<OrderGroupDO>() return selectOne(new LambdaUpdateWrapper<OrderGroupDO>()
.eq(OrderGroupDO::getOrderId, orderId) .eq(OrderGroupDO::getOrderId, orderId)
.eq(OrderGroupDO::getBodyId, bodyId) .eq(OrderGroupDO::getBodyId, bodyId)
.eq(OrderGroupDO::getGroupTypeId, groupTypeId) .eq(OrderGroupDO::getGroupTypeId, groupTypeId)
@@ -72,4 +75,25 @@ public interface OrderGroupMapper extends BaseMapperX<OrderGroupDO> {
.eq(OrderGroupDO::getOrganId, organId) .eq(OrderGroupDO::getOrganId, organId)
.eq(OrderGroupDO::getDeleted, deleted)); .eq(OrderGroupDO::getDeleted, deleted));
} }
// 根据柜体id修改删除状态
default int updateDeletedByBodyId(Long orderId, Long bodyId, Integer deleted, Long organId) {
return update(new LambdaUpdateWrapper<OrderGroupDO>()
.set(OrderGroupDO::getDeleted, deleted)
.eq(OrderGroupDO::getOrderId, orderId)
.eq(OrderGroupDO::getBodyId, bodyId)
.eq(OrderGroupDO::getOrganId, organId));
}
// 根据生产单id删除
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderGroupDO>()
.eq(OrderGroupDO::getOrganId, organId)
.eqIfPresent(OrderGroupDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<OrderGroupDO>()
.in(OrderGroupDO::getOrderId, orderId));
}
} }
@@ -21,6 +21,7 @@ import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update; import org.apache.ibatis.annotations.Update;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@@ -35,6 +36,7 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
@Param("bodyId") Long bodyId, @Param("groupId") Long groupId, @Param("bodyId") Long bodyId, @Param("groupId") Long groupId,
@Param("groupName") String groupName, @Param("organId") Long organId, @Param("groupName") String groupName, @Param("organId") Long organId,
@Param("deleted") Integer deleted); @Param("deleted") Integer deleted);
IPage<PlateRespVO> selectPlatesDetailByOrderId(@Param("page") IPage page, @Param("orderId") Long orderId, @Param("roomId") Long roomId, IPage<PlateRespVO> selectPlatesDetailByOrderId(@Param("page") IPage page, @Param("orderId") Long orderId, @Param("roomId") Long roomId,
@Param("bodyId") Long bodyId, @Param("groupId") Long groupId, @Param("bodyId") Long bodyId, @Param("groupId") Long groupId,
@Param("groupName") String groupName, @Param("organId") Long organId, @Param("groupName") String groupName, @Param("organId") Long organId,
@@ -43,9 +45,10 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
List<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("orderId") Long orderId, @Param("roomId") Long roomId, List<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("orderId") Long orderId, @Param("roomId") Long roomId,
@Param("bodyId") Long bodyId, @Param("name") String name, @Param("bodyId") Long bodyId, @Param("name") String name,
@Param("organId") Long organId, @Param("deleted") Integer deleted); @Param("organId") Long organId, @Param("deleted") Integer deleted);
IPage<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("page") IPage page,@Param("orderId") Long orderId, @Param("roomId") Long roomId,
@Param("bodyId") Long bodyId, @Param("name") String name, IPage<OrderPartsRespVO> selectPartsDetailByOrderId(@Param("page") IPage page, @Param("orderId") Long orderId, @Param("roomId") Long roomId,
@Param("organId") Long organId, @Param("deleted") Integer deleted); @Param("bodyId") Long bodyId, @Param("name") String name,
@Param("organId") Long organId, @Param("deleted") Integer deleted);
List<OrderPlatesDetailRespVO> selectPartsByOrderId(@Param("orderId") Long orderId, List<OrderPlatesDetailRespVO> selectPartsByOrderId(@Param("orderId") Long orderId,
@@ -70,4 +73,15 @@ public interface OrderItemMapper extends BaseMapperX<OrderItemDO> {
.eq(OrderItemDO::getBodyId, bodyId) .eq(OrderItemDO::getBodyId, bodyId)
.eq(OrderItemDO::getOrganId, organId)); .eq(OrderItemDO::getOrganId, organId));
} }
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderItemDO>()
.eq(OrderItemDO::getOrganId, organId)
.eqIfPresent(OrderItemDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<OrderItemDO>()
.in(OrderItemDO::getOrderId, orderId));
}
} }
@@ -8,6 +8,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
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.mapper.BaseMapperX; import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO; import com.cf.imes.module.executor.controller.admin.plan.saveOptimize.PrintOrderPartsRespVO;
import com.cf.imes.module.executor.dal.dataobject.orderGroup.OrderGroupDO;
import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO; import com.cf.imes.module.executor.dal.dataobject.orderParts.OrderPartsDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.cf.imes.module.executor.controller.admin.orderParts.vo.*; import com.cf.imes.module.executor.controller.admin.orderParts.vo.*;
@@ -70,4 +71,17 @@ public interface OrderPartsMapper extends BaseMapperX<OrderPartsDO> {
List<Long> selectPartsIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId); List<Long> selectPartsIdListByBodyId(@Param("bodyId") Long bodyId, @Param("organId") Long organId);
int countPartsByOrderId(@Param("orderId") Long orderId, @Param("organId") Long organId, @Param("deleted") Integer deleted);
// 根据生产单删除
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<OrderPartsDO>()
.eq(OrderPartsDO::getOrganId, organId)
.eqIfPresent(OrderPartsDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<OrderPartsDO>()
.in(OrderPartsDO::getOrderId, orderId));
}
} }
@@ -141,6 +141,19 @@ public interface PlateMapper extends BaseMapperX<PlateDO> {
} }
// 房间id查小板的开料状态
List<Long> selectPlateTypeByRoomId(@Param("orderId") Long orderId, @Param("roomId") Long roomId, @Param("bodyId") Long bodyId,
@Param("organId") Long organId, @Param("deleted") Integer deleted);
// 根据生产单id删除
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<PlateDO>()
.eq(PlateDO::getOrganId, organId)
.eqIfPresent(PlateDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<PlateDO>()
.in(PlateDO::getOrderId, orderId));
}
} }
@@ -10,6 +10,7 @@ import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO; import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsImportRespVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsPageReqVO; import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsPageReqVO;
import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO; import com.cf.imes.module.executor.controller.admin.rawgoods.vo.RawGoodsSaveReqVO;
import com.cf.imes.module.executor.dal.dataobject.orderBody.OrderBodyDO;
import com.cf.imes.module.executor.dal.dataobject.plate.PlateDO; 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.dataobject.rawgoods.RawGoodsDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@@ -26,7 +27,7 @@ public interface RawGoodsMapper extends BaseMapperX<RawGoodsDO> {
default PageResult<RawGoodsDO> selectPage(RawGoodsPageReqVO reqVO) { default PageResult<RawGoodsDO> selectPage(RawGoodsPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<RawGoodsDO>() return selectPage(reqVO, new LambdaQueryWrapperX<RawGoodsDO>()
.eq(RawGoodsDO::getOrganId,getUserOrganId()) .eq(RawGoodsDO::getOrganId, getUserOrganId())
.eqIfPresent(RawGoodsDO::getOrderId, reqVO.getOrderId()) .eqIfPresent(RawGoodsDO::getOrderId, reqVO.getOrderId())
.eqIfPresent(RawGoodsDO::getRawGoodsId, reqVO.getRawGoodsId()) .eqIfPresent(RawGoodsDO::getRawGoodsId, reqVO.getRawGoodsId())
.likeIfPresent(RawGoodsDO::getGoodsName, reqVO.getGoodsName()) .likeIfPresent(RawGoodsDO::getGoodsName, reqVO.getGoodsName())
@@ -51,4 +52,16 @@ public interface RawGoodsMapper extends BaseMapperX<RawGoodsDO> {
wrapper.eq(RawGoodsDO::getDeleted, 1); wrapper.eq(RawGoodsDO::getDeleted, 1);
return update(wrapper); return update(wrapper);
} }
// 删除记录
default int deleteByOrderId(Long orderId, Long organId) {
return delete(new LambdaQueryWrapperX<RawGoodsDO>()
.eq(RawGoodsDO::getOrganId, organId)
.eqIfPresent(RawGoodsDO::getOrderId, orderId));
}
// 批量删除
default int deleteBatch(Collection<?> orderId) {
return delete(new LambdaQueryWrapperX<RawGoodsDO>()
.in(RawGoodsDO::getOrderId, orderId));
}
} }
@@ -1,6 +1,10 @@
package com.cf.imes.module.executor.service.order; package com.cf.imes.module.executor.service.order;
import co.elastic.clients.elasticsearch.core.BulkResponse; import cn.hutool.core.collection.CollectionUtil;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch._types.FieldValue;
import co.elastic.clients.elasticsearch.core.*;
import co.elastic.clients.elasticsearch.core.search.Hit;
import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator; import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.cf.imes.framework.common.exception.ServiceException; import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.es.core.service.ESDocumentService; import com.cf.imes.framework.es.core.service.ESDocumentService;
@@ -27,13 +31,17 @@ import com.cf.imes.module.executor.dal.mysql.plate.PlateGoodMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper; import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper; import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.IOException;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants.INTERNAL_SERVER_ERROR;
/** /**
* @author Beal * @author Beal
* 生产单入库处理器 * 生产单入库处理器
@@ -74,10 +82,10 @@ public class OrderInputProcessor {
private PlateGoodMapper plateGoodMapper; private PlateGoodMapper plateGoodMapper;
@Resource @Resource
private OrderModuleExtraMapper orderModuleExtraMapper; private ESDocumentService esDocumentService;
@Resource @Resource
private ESDocumentService esDocumentService; private ElasticsearchClient elasticsearchClient;
public static final String ORDER_PLATE_MODEL = "imes_order_plate_model"; public static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
@@ -92,14 +100,12 @@ public class OrderInputProcessor {
* @param orderGroupDOS * @param orderGroupDOS
* @param orderPartsDOS * @param orderPartsDOS
* @param plateDOS * @param plateDOS
* @param orderModuleExtraDOS
* @param itemDOS * @param itemDOS
*/ */
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void batchInsert(Collection<RawGoodsDO> rawGoodsDOS, Collection<OrderBodyDO> orderBodyDOS, public void batchInsert(Collection<RawGoodsDO> rawGoodsDOS, Collection<OrderBodyDO> orderBodyDOS,
Collection<OrderGroupDO> orderGroupDOS, Collection<OrderPartsDO> orderPartsDOS, Collection<OrderGroupDO> orderGroupDOS, Collection<OrderPartsDO> orderPartsDOS,
Collection<PlateDO> plateDOS, Collection<OrderModuleExtraDO> orderModuleExtraDOS, Collection<PlateDO> plateDOS, Collection<OrderItemDO> itemDOS,
Collection<OrderItemDO> itemDOS,
Collection<GoodsDO> goodsDOS, Collection<PlateGoodDO> plateGoodDOS) { Collection<GoodsDO> goodsDOS, Collection<PlateGoodDO> plateGoodDOS) {
@@ -123,11 +129,6 @@ public class OrderInputProcessor {
for (int i = 0; i < plateDOS.size(); i += 1000) { for (int i = 0; i < plateDOS.size(); i += 1000) {
plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList())); plateMapper.insertBatch(plateDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
} }
if (orderModuleExtraDOS != null) {
for (int i = 0; i < orderModuleExtraDOS.size(); i += 1000) {
orderModuleExtraMapper.insertBatch(orderModuleExtraDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
}
}
if (itemDOS != null) { if (itemDOS != null) {
for (int i = 0; i < itemDOS.size(); i += 1000) { for (int i = 0; i < itemDOS.size(); i += 1000) {
orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList())); orderItemMapper.insertBatch(itemDOS.stream().skip(i).limit(1000).collect(Collectors.toList()));
@@ -195,4 +196,64 @@ public class OrderInputProcessor {
} }
/**
* 生产单id查询文档id
*/
public List<String> buildRespByOrderId(Long orderId, String index, Integer size) {
SearchRequest.Builder builder = new SearchRequest.Builder();
builder.index(index);
builder.size(size);
builder.query(q -> q.term(b -> b.field("orderId").value(orderId)));
builder.source(s -> s.fetch(false));
try {
SearchResponse<?> search = elasticsearchClient.search(builder.build(), Object.class);
List<? extends Hit<?>> hits = search.hits().hits();
if (CollectionUtil.isNotEmpty(hits)) {
return hits.stream().map(Hit::id).collect(Collectors.toList());
}
return new ArrayList<>();
} catch (IOException e) {
log.error(e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
/**
* 生产单Id批量删除
*/
public void deleteByOrderId(Long orderId, String index) {
DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
builder.index(index);
builder.query(q -> q.term(t -> t.field("orderId").value(orderId)));
try {
DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build());
log.info("Deleted {} documents with planId {}", response.deleted(), orderId);
} catch (IOException e) {
log.error("Error deleting documents with planId {}: {}", orderId, e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
/**
* 批量删除
*/
public void deleteByOrderId(List<Long> orderIds, String index) {
List<FieldValue> fieldValues = orderIds.stream().map(FieldValue::of).toList();
DeleteByQueryRequest.Builder builder = new DeleteByQueryRequest.Builder();
builder.index(index);
builder.query(q -> q.terms(b -> b.field("orderId").terms(e -> e.value(fieldValues))));
try {
DeleteByQueryResponse response = elasticsearchClient.deleteByQuery(builder.build());
log.info("Deleted {} documents with planId {}", response.deleted(), orderIds);
} catch (IOException e) {
log.error("Error deleting documents with planId {}: {}", orderIds, e.getMessage());
throw new ServiceException(INTERNAL_SERVER_ERROR);
}
}
} }
@@ -27,13 +27,6 @@ import java.util.Map;
*/ */
public interface OrderService { public interface OrderService {
/**
* 创建生产单表 order_{N}
*
* @param createReqVO 创建信息
* @return 编号
*/
Long createOrder(@Valid OrderSaveReqVO createReqVO);
/** /**
* 更新生产单表 order_{N} * 更新生产单表 order_{N}
@@ -42,20 +35,6 @@ public interface OrderService {
*/ */
void updateOrder(@Valid OrderSaveReqVO updateReqVO); void updateOrder(@Valid OrderSaveReqVO updateReqVO);
/**
* 作废生产单表 order_{N}
*
* @param orderId 编号组
*/
void deleteOrder(Long orderId);
/**
* 还原生产单表 order_{N}
*
* @param orderId 编号组
*/
void restoreOrder(Long orderId);
/** /**
* 获得生产单表 order_{N} * 获得生产单表 order_{N}
* *
@@ -76,8 +55,7 @@ public interface OrderService {
* @param orderId: 生产单Id * @param orderId: 生产单Id
* @return List<OrderBodyRespVO> * @return List<OrderBodyRespVO>
*/ */
List<OrderBodyRespVO> getOrderBody(Long orderId); List<OrderBodyRespVO> getOrderBody(Long orderId, Integer deleted);
String getOrderBodyToString(Long orderId);
List<OrderRoomBodyRespVO> getRoomAndBody(Long planId); List<OrderRoomBodyRespVO> getRoomAndBody(Long planId);
@@ -87,7 +65,7 @@ public interface OrderService {
* @param orderId: 生产单Id * @param orderId: 生产单Id
* @return Map<String, List<?>> * @return Map<String, List<?>>
*/ */
Map<String,List<?>> getModule(Long orderId); Map<String,List<?>> getModule(Long orderId, Integer deleted);
/** /**
* @param orderId: 生产单id * @param orderId: 生产单id
@@ -96,7 +74,7 @@ public interface OrderService {
* @return List<OrderPlatesDetailReqVO> * @return List<OrderPlatesDetailReqVO>
* 需要修改返回值 * 需要修改返回值
*/ */
PageResult<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId, Long bodyId, Long groupId, String groupName, Integer pageNo, Integer pageSize); PageResult<OrderPlatesDetailReqVO> getPlatesDetail(Long orderId, Long roomId, Long bodyId, Long groupId, String groupName, Integer pageNo, Integer pageSize, Integer deleted);
/** /**
* @param orderId: 生产单id * @param orderId: 生产单id
@@ -105,22 +83,15 @@ public interface OrderService {
* @return List<OrderPartsRespVO> * @return List<OrderPartsRespVO>
* 需要修改返回值 * 需要修改返回值
*/ */
PageResult<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId , Long bodyId , String name, Integer pageNo, Integer pageSize); PageResult<OrderPartsRespVO> getPartsDetail(Long orderId, Long roomId , Long bodyId , String name, Integer pageNo, Integer pageSize, Integer deleted);
/** /**
* 删除柜体 * 删除柜体/柜体还原
* @param orderId: 生产单id * @param orderId: 生产单id
* @param bodyIds: 柜体id * @param roomId: 房间id
* @param bodyId: 柜体id
*/ */
void deleteBodyByOrder(Long orderId , Collection<Long> bodyIds); void updateBodyDeletedByOrderId(Long orderId , Long roomId, Long bodyId, Integer status);
/**
* @param orderId:
* @return Object
* @author Administrator
* @date 2024/3/30
*/
List<OrderBodyDO> getBody(Long orderId);
/** /**
* @param listMap:生产单号 * @param listMap:生产单号
@@ -130,22 +101,11 @@ public interface OrderService {
*/ */
Long importApiData(Map<String, List<?>> listMap); Long importApiData(Map<String, List<?>> listMap);
/**
* @param orderId: 生产单Id
* @return List<GoodsDO>
*/
List<GoodsDO> getGoodsList(Long orderId);
/** /**
* 文件数据导入 * 文件数据导入
*/ */
void importExcelData(OrderDO orderDO, List<?> list, Integer index); void importExcelData(OrderDO orderDO, List<?> list, Integer index);
/**
* 模板文件导入保存
*/
String importTemplate(MultipartFile file,Boolean type);
/** /**
* 生产导入文件模板下载 * 生产导入文件模板下载
*/ */
@@ -169,7 +129,8 @@ public interface OrderService {
*/ */
Boolean customOrderNoIsExists(String customOrderNo); Boolean customOrderNoIsExists(String customOrderNo);
/**查找api单号列表 /**
* 查找api单号列表
*/ */
List<ApiOrderRespVO> getApiOrderList(JSONObject orderList); List<ApiOrderRespVO> getApiOrderList(JSONObject orderList);
@@ -178,4 +139,23 @@ public interface OrderService {
* 生产单超期告警分析统计 * 生产单超期告警分析统计
*/ */
Map<String,List<OrderOverdueRespVO>> getOrderWarn(); Map<String,List<OrderOverdueRespVO>> getOrderWarn();
/**
* 生产单单量
*/
Map<String, Integer> orderCountProducePeriod(String startTime, String endTime);
/**
* 修改生产单是否删除
*/
Integer updateOrderDel(Long orderId, Integer status);
/**
* 作废中删除
*/
void realDeletedOrder(Long orderId);
} }
@@ -0,0 +1,98 @@
package com.cf.imes.module.executor.service.order.intervalometer;
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
import com.cf.imes.module.executor.dal.mysql.goods.GoodsMapper;
import com.cf.imes.module.executor.dal.mysql.order.OrderMapper;
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;
import com.cf.imes.module.executor.dal.mysql.orderParts.OrderPartsMapper;
import com.cf.imes.module.executor.dal.mysql.plate.PlateMapper;
import com.cf.imes.module.executor.dal.mysql.rawgoods.RawGoodsMapper;
import com.cf.imes.module.executor.service.order.OrderInputProcessor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.List;
import static com.cf.imes.framework.security.core.util.SecurityFrameworkUtils.getLoginUser;
/**
* 生产单定时处理器
*/
@Slf4j
@Component
public class OrderScheduledImpl {
@Resource
// @Qualifier("imes_prod")
private OrderMapper orderMapper;
@Resource
private RawGoodsMapper rawGoodsMapper;
@Resource
private GoodsMapper goodsMapper;
@Resource
private OrderPartsMapper orderPartsMapper;
@Resource
private PlateMapper plateMapper;
@Resource
private OrderBodyMapper orderBodyMapper;
@Resource
private OrderGroupMapper orderGroupMapper;
@Resource
private OrderItemMapper orderItemMapper;
@Resource
private OrderInputProcessor orderInputProcessor;
public static final String ORDER_PLATE_MODEL = "imes_order_plate_model";
public static final String ORDER_PARTS_REMARK_MODEL = "imes_order_parts_remark_model";
public OrderScheduledImpl() {
}
// @Scheduled(cron = "0 0 2 * * ?")
// @Scheduled(cron = "0/1 * * * * *")
@OrganIgnore
@Transactional(rollbackFor = Exception.class)
public void fixedDeletedOrder() {
System.out.println(" 定时任务开始 ");
if (getLoginUser() == null){
}
List<Long> orderDOList = orderMapper.selectOrderListByUpdateTime();
// // 作废 生产单表,bodygroupgoodspartsplateraw_goodsitem
// rawGoodsMapper.deleteBatch(orderDOList);
// goodsMapper.deleteBatch(orderDOList);
// orderItemMapper.deleteBatch(orderDOList);
// orderBodyMapper.deleteBatch(orderDOList);
// orderGroupMapper.deleteBatch(orderDOList);
//
// orderPartsMapper.deleteBatch(orderDOList);
// plateMapper.deleteBatch(orderDOList);
//
// orderMapper.deleteBatchIds(orderDOList); // 生产单删除
//
//// 删除板材的造型数据 es
// orderInputProcessor.deleteByOrderId(orderDOList, ORDER_PLATE_MODEL);
//// 删除备注信息 es
// orderInputProcessor.deleteByOrderId(orderDOList, ORDER_PARTS_REMARK_MODEL);
System.out.println(" 定时任务结束 ");
}
}
@@ -182,7 +182,7 @@ public class PlanServiceImpl implements PlanService {
// 修改生产单的状态为待排单 // 修改生产单的状态为待排单
List<Long> orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class); List<Long> orderIds = JSON.parseArray(planDO.getOrderNos()).toJavaList(Long.class);
List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds).stream().map(m -> m.setStatus(OrderStatusEnum.NO_SORT.getStatus())).collect(Collectors.toList()); List<OrderDO> orderDOS = orderMapper.selectBatchIds(orderIds).stream().map(m -> m.setStatus(OrderStatusEnum.SORTED.getStatus())).collect(Collectors.toList());
orderMapper.updateBatch(orderDOS); orderMapper.updateBatch(orderDOS);
return Boolean.TRUE; return Boolean.TRUE;
@@ -279,7 +279,7 @@ public class PlanServiceImpl implements PlanService {
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>(); QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX queryWrapperX
.eq("a.organ_id",getUserOrganId()) .eq("a.organ_id",getUserOrganId())
.eq("a.status",OrderStatusEnum.NO_SORT.getStatus()) .eq("a.status",OrderStatusEnum.SORTED.getStatus())
.eq("a.deleted",false) .eq("a.deleted",false)
.likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) .likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null)
// .isNull("opi.item_id") // .isNull("opi.item_id")
@@ -359,7 +359,7 @@ public class PlanServiceImpl implements PlanService {
QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>(); QueryWrapperX<OrderDO> queryWrapperX = new QueryWrapperX<>();
queryWrapperX queryWrapperX
.eq("a.organ_id",getUserOrganId()) .eq("a.organ_id",getUserOrganId())
.eq("a.status",OrderStatusEnum.NO_SORT.getStatus()) .eq("a.status",OrderStatusEnum.SORTED.getStatus())
.eq("a.deleted",false) .eq("a.deleted",false)
.likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null) .likeIfPresent("a.id", pageReqVO.getOrderId() != null ? pageReqVO.getOrderId().toString() : null)
// .isNull("opi.item_id") // .isNull("opi.item_id")
@@ -176,7 +176,7 @@ public class OrderProcessServiceImpl implements OrderProcessService {
}); });
INDEX.set(0); INDEX.set(0);
// 修改生产单的状态 // 修改生产单的状态
orderMapper.updateOrderStatus(createReqVO.getOrderId(), OrderStatusEnum.NO_SORT.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId()); orderMapper.updateOrderStatus(createReqVO.getOrderId(), OrderStatusEnum.SORTED.getStatus(), SecurityFrameworkUtils.getLoginUser().getOrganId());
// 批量插入 // 批量插入
orderProcessMapper.insert(orderProcess.setNextStepId(processListReqDTO.getLists().get(0).getId()).setStatus(false)); orderProcessMapper.insert(orderProcess.setNextStepId(processListReqDTO.getLists().get(0).getId()).setStatus(false));
processStepMapper.insertBatch(processStepDOS); processStepMapper.insertBatch(processStepDOS);
@@ -171,6 +171,20 @@ public class ApiDataAchieve {
return new AsyncResult<>(block); return new AsyncResult<>(block);
} }
// 订单获取
public Future<JSONObject> getApiOrder(String token, String shopId, String orderNo) {
JSONObject jsonOrders = new JSONObject();
jsonOrders.put("order_no", shopId + "@N" +orderNo);
JSONObject order = apiDataProduction.getApiOrderList(token, jsonOrders);
return new AsyncResult<>(order);
}
public Future<JSONObject> getApiOrder(String token) { // 批量导入专用,之后删除
JSONObject jsonOrders = new JSONObject();
jsonOrders.put("page_count", PARTS_PAGE_MAX );
JSONObject order = apiDataProduction.getApiOrderList(token, jsonOrders);
return new AsyncResult<>(order);
}
// 订单列表 // 订单列表
public Future<JSONObject> getApiOrderList(String token,String shopId,String createDateMin, String createDateMax, String orderNo, String customOrderNo) { public Future<JSONObject> getApiOrderList(String token,String shopId,String createDateMin, String createDateMax, String orderNo, String customOrderNo) {
JSONObject jsonOrders = new JSONObject(); JSONObject jsonOrders = new JSONObject();
@@ -201,8 +215,6 @@ public class ApiDataAchieve {
} }
JSONObject orders = apiDataProduction.getApiOrderList(token, jsonOrders); JSONObject orders = apiDataProduction.getApiOrderList(token, jsonOrders);
System.out.println(" jsonOrders " + jsonOrders);
System.out.println(" orders " + orders);
if (!orders.getString("err_code").equals("0")) { if (!orders.getString("err_code").equals("0")) {
throw exception(ORDER_READ_ERR); throw exception(ORDER_READ_ERR);
} }
@@ -24,6 +24,7 @@ import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.*; import java.util.*;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@@ -66,7 +67,7 @@ public class ApiTypeRealize {
* @author Administrator * @author Administrator
* @date 2024/5/6 * @date 2024/5/6
*/ */
public Map<String, List<?>> apiPlateDataChange(JSONObject dataPlates, JSONObject dataParts public Map<String, List<?>> apiPlateDataChange(JSONObject order, JSONObject dataPlates, JSONObject dataParts
, JSONObject dataBody, JSONObject dataGoods , JSONObject dataBody, JSONObject dataGoods
, JSONObject plates, JSONObject dataModule , JSONObject plates, JSONObject dataModule
, JSONObject dataBlocks, String orderNo) { , JSONObject dataBlocks, String orderNo) {
@@ -77,9 +78,9 @@ public class ApiTypeRealize {
Long orderId = (Long) identifierGenerator.nextId(null); Long orderId = (Long) identifierGenerator.nextId(null);
// 生产单数据 // 生产单数据
OrderDO orderDO = orderInfoChange(dataPlates, orderId, orderNo); OrderDO orderDO = orderInfoChange(order, orderId, orderNo);
List<OrderDO> order = new ArrayList<>(); List<OrderDO> orderList = new ArrayList<>();
order.add(orderDO); orderList.add(orderDO);
// 商品信息数据 信息以全 // 商品信息数据 信息以全
Map<String, Map<Long, ?>> goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, dataBlocks); Map<String, Map<Long, ?>> goodsInfoChange = rawGoodsInfoChange(dataGoods, orderId, dataBlocks);
@@ -128,7 +129,7 @@ public class ApiTypeRealize {
// + " 柜体信息 " + new ArrayList<>(bodyInfoChange.values()) // + " 柜体信息 " + new ArrayList<>(bodyInfoChange.values())
// + " 加工组信息 " + orderGroupDO // + " 加工组信息 " + orderGroupDO
// + " 配件Item " + partsItems + " 板材Item " + platesItems); // + " 配件Item " + partsItems + " 板材Item " + platesItems);
map.put("orderDO", order); map.put("orderDO", orderList);
map.put("itemDO", itemsList); map.put("itemDO", itemsList);
map.put("bodyDO", bodyItemsPlates.values().stream().collect(Collectors.toList())); map.put("bodyDO", bodyItemsPlates.values().stream().collect(Collectors.toList()));
return map; return map;
@@ -258,22 +259,26 @@ public class ApiTypeRealize {
/** /**
* 生产单信息转换 * 生产单信息转换
* *
* @param dataPlates: * @param orderJson:
* @return OrderDO * @return OrderDO
* @author Administrator * @author Administrator
* @date 2024/4/30 * @date 2024/4/30
*/ */
public OrderDO orderInfoChange(JSONObject dataPlates, Long orderId, String orderNo) { public OrderDO orderInfoChange(JSONObject orderJson, Long orderId, String orderNo) {
// 获取 Orders 字段对应的数组 // 获取 Orders 字段对应的数组
JSONObject order = dataPlates.getJSONArray("Orders").getJSONObject(0); JSONObject order = orderJson.getJSONArray("data").getJSONObject(0);
// 如果 Orders 数组不为空,则获取第一个订单对象 // 如果 Orders 数组不为空,则获取第一个订单对象
if (order != null && !order.isEmpty()) { if (order != null && !order.isEmpty()) {
// 获取生产单信息 // 获取生产单信息
// 使用 DateTimeFormatter 解析日期字符串 // 使用 DateTimeFormatter 解析日期字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
LocalDate orderDate = LocalDate.parse(order.getString("SaleDate"), formatter); LocalDate orderDate = LocalDate.parse(order.getString("start_date"), formatter);
LocalDate deliveryDate = LocalDate.parse(order.getString("DeliveryDate"), formatter); LocalDate deliveryDate = LocalDate.parse(order.getString("end_date"), formatter);
if (deliveryDate.isBefore(orderDate)) {
// 将 deliveryDate 设置为 orderDate 后的第 30 天
deliveryDate = orderDate.plus(30, ChronoUnit.DAYS);
}
String orderRemark = "[" + orderNo + "]; "; String orderRemark = "[" + orderNo + "]; ";
OrderDO orderDO = OrderDO.builder() OrderDO orderDO = OrderDO.builder()
@@ -285,18 +290,26 @@ public class ApiTypeRealize {
.orderType(OrderTypeEnum.MAIN_ORDER.getStatus()) .orderType(OrderTypeEnum.MAIN_ORDER.getStatus())
// .orderSort(0) // .orderSort(0)
.dataType(DataTypeEnum.API_IMPORT.getStatus()) .dataType(DataTypeEnum.API_IMPORT.getStatus())
.status(OrderStatusEnum.NEW_ORDER.getStatus()) // .status(OrderStatusEnum.NEW_ORDER.getStatus())
.customOrderNo(order.getString("CustomOrderNo")) .customOrderNo(order.getString("custom_order_no"))
.customer(order.getString("Consigee")) .customer(order.getString("cosignee_name"))
.address(order.getString("ConsigeeAddress")) .address(order.getString("cosignee_address"))
.phoneNumber(order.getString("ConsigeePhone")) .phoneNumber(order.getString("cosignee_phone"))
.dealer(order.getString("CustomName")) .dealer(order.getString("store_name"))
.dealerPhoneNumber("") .dealerPhoneNumber(order.getString("store_phone"))
// .salesman(order.getString("SalePerson")) .salesman(order.getString("nick_name"))
.salesman("") // .salesman("")
.splitter("") // .splitter("")
.remark(orderRemark + order.getString("Remark")) .splitter(order.getString("cd_nick_name"))
.remark(orderRemark + order.getString("comments"))
.build(); .build();
Integer submitState = order.getInteger("submit_state");
if (submitState == 1){
orderDO.setStatus(OrderStatusEnum.EMPTY.getStatus());
}else {
orderDO.setStatus(OrderStatusEnum.NEW_ORDER.getStatus());
}
return orderDO; return orderDO;
} }
return null; return null;
@@ -512,6 +525,9 @@ public class ApiTypeRealize {
/** /**
* 板材信息转换 写表 Integer指板材的ItemID板id 加一个板材自定义编号 * 板材信息转换 写表 Integer指板材的ItemID板id 加一个板材自定义编号
* value 板材造型数据
* dataPlates 板材明细
* dataBlocks 板材数据
*/ */
private Map<String, Map<Long, ?>> platesInfoChange(JSONObject value, JSONObject dataPlates, Long orderId, private Map<String, Map<Long, ?>> platesInfoChange(JSONObject value, JSONObject dataPlates, Long orderId,
Map<Long, GoodsDO> goodsDOMap, Map<Long, OrderBodyDO> bodyInfos, Map<Long, GoodsDO> goodsDOMap, Map<Long, OrderBodyDO> bodyInfos,
@@ -546,16 +562,10 @@ public class ApiTypeRealize {
.id(plateId) .id(plateId)
.orderId(orderId) .orderId(orderId)
.name(plate.getString("BoardName")) .name(plate.getString("BoardName"))
// .plateNo(plate.getString("CustBlockNo"))
.plateNo((obtainingTime) + Long.toString(plateNo).substring(2)) .plateNo((obtainingTime) + Long.toString(plateNo).substring(2))
.type(type) .type(type)
.goodsId(goodsDOMap.get(plate.getLong("GoodsID")) != null .goodsId(goodsDOMap.get(plate.getLong("GoodsID")) != null
? goodsDOMap.get(plate.getLong("GoodsID")).getId() : plate.getLong("GoodsID")) ? goodsDOMap.get(plate.getLong("GoodsID")).getId() : plate.getLong("GoodsID"))
// .width(BigDecimal.valueOf(plate.getDouble("CutWidth")))
// .height(BigDecimal.valueOf(plate.getDouble("CutWidth")))
// .thickness(goodsDOMap.get(plate.getLong("GoodsID")) != null
// ? goodsDOMap.get(plate.getLong("GoodsID")).getThickness() : BigDecimal.valueOf(0L))
.splitHeight(BigDecimal.valueOf(plate.getDouble("SpliteHeight"))) .splitHeight(BigDecimal.valueOf(plate.getDouble("SpliteHeight")))
.splitThickness(BigDecimal.valueOf(plate.getDouble("SpliteThickness"))) .splitThickness(BigDecimal.valueOf(plate.getDouble("SpliteThickness")))
.splitWidth(BigDecimal.valueOf(plate.getDouble("SpliteWidth"))) .splitWidth(BigDecimal.valueOf(plate.getDouble("SpliteWidth")))
@@ -563,22 +573,20 @@ public class ApiTypeRealize {
.sealRight(BigDecimal.valueOf(plate.getDouble("SealedRight"))) .sealRight(BigDecimal.valueOf(plate.getDouble("SealedRight")))
.sealUp(BigDecimal.valueOf(plate.getDouble("SealedUp"))) .sealUp(BigDecimal.valueOf(plate.getDouble("SealedUp")))
.sealDown(BigDecimal.valueOf(plate.getDouble("SealedDown"))) .sealDown(BigDecimal.valueOf(plate.getDouble("SealedDown")))
.area(plateDetail.get(plate.getLong("BlockNo")).getSealAcreage()) // .area(plateDetail.get(plate.getLong("BlockNo")).getSealAcreage())
.texture(plateDetail.get(plate.getLong("BlockNo")).getTexture()) // .texture(plateDetail.get(plate.getLong("BlockNo")).getTexture())
// .holeFace(plateDetail.get(plate.getLong("BlockNo")).getTypographicFace()) // 孔面类型
.holeFace(plateDetail.get(plate.getLong("BlockNo")).getTypographicFace()) // 孔面类型
.holeArrange(0) // 排孔类型 值无实际含义,默认初始化值 .holeArrange(0) // 排孔类型 值无实际含义,默认初始化值
.unregularPointCount(0)// 异形孔个数 值无实际含义,默认初始化值 .unregularPointCount(0)// 异形孔个数 值无实际含义,默认初始化值
.frontHoleCount(plate.getInteger("FrontHoleCount")) .frontHoleCount(plate.getInteger("FrontHoleCount"))
.sideHoleCount(plate.getInteger("BackHoleCount")) .sideHoleCount(plate.getInteger("BackHoleCount"))
.sideHoleCount(plate.getInteger("SideHoleCount")) .sideHoleCount(plate.getInteger("SideHoleCount"))
.frontModelCount(plate.getInteger("FrontModelCount")) .frontModelCount(plate.getInteger("FrontModelCount"))
.backModelCount(plate.getInteger("BackModelCount")) .backModelCount(plate.getInteger("BackModelCount"))
.isDoor(plateDetail.get(plate.getLong("BlockNo")).getOpenDoorType() == 0) .isDoor(plate.getInteger("OpenDoorType") != 0)
.openDoorType(plate.getInteger("OpenDoorType")) .openDoorType(plate.getInteger("OpenDoorType"))
.offsetX(plateDetail.get(plate.getLong("BlockNo")).getOffsetX()) // .offsetX(plateDetail.get(plate.getLong("BlockNo")).getOffsetX())
.offsetY(plateDetail.get(plate.getLong("BlockNo")).getOffsetY()) // .offsetY(plateDetail.get(plate.getLong("BlockNo")).getOffsetY())
.isArcAcross(false) .isArcAcross(false)
.moduleTypeId(0L) .moduleTypeId(0L)
.isSculpt(plate.getBoolean("IsModel")) .isSculpt(plate.getBoolean("IsModel"))
@@ -603,39 +611,59 @@ public class ApiTypeRealize {
.num(1.0) .num(1.0)
.build(); .build();
if (plateDetail.get(plate.getLong("BlockNo")) != null) { if (plateDetail != null){
plateDetail.get(plate.getLong("BlockNo")).setPlateId(plateId) Long blockNo = plate.getLong("BlockNo");
.setExtraRemark(plate.getString("ExtraRemark")) if (plateDetail.get(blockNo) != null) {
.setSpecialRemarkDei(plate.getString("SpecialRemark")) plateDetail.get(blockNo).setPlateId(plateId)
.setExtraHandleRemark(plate.getString("ExtraHandleRemark")) .setExtraRemark(plate.getString("ExtraRemark"))
.setDrillsRemark(plate.getString("DrillsRemark")) .setSpecialRemarkDei(plate.getString("SpecialRemark"))
.setInfoRemark(plate.getString("InfoRemark")) .setExtraHandleRemark(plate.getString("ExtraHandleRemark"))
.setRemarkJsonDei(plate.getString("RemarkJson")); .setDrillsRemark(plate.getString("DrillsRemark"))
if (plateDetail.get(plate.getLong("BlockNo")).getThroughModelCount() != null .setInfoRemark(plate.getString("InfoRemark"))
&& plateDetail.get(plate.getLong("BlockNo")).getThroughModelCount() > 0){ .setRemarkJsonDei(plate.getString("RemarkJson"));
plateInfo.setFilterType(plateInfo.getFilterType() + ",1");
} plateInfo.setHoleFace(plateDetail.get(blockNo).getTypographicFace()).setIsDoor(plateDetail.get(blockNo).getOpenDoorType() == 0)
if (plateDetail.get(plate.getLong("BlockNo")).getThroughHoleCount() != null .setOffsetX(plateDetail.get(blockNo).getOffsetX()).setOffsetY(plateDetail.get(blockNo).getOffsetY());
&& plateDetail.get(plate.getLong("BlockNo")).getThroughHoleCount() > 0){
plateInfo.setFilterType(plateInfo.getFilterType() + ",2"); if (plateDetail.get(blockNo).getThroughModelCount() != null
} && plateDetail.get(blockNo).getThroughModelCount() > 0){
if (plateDetail.get(plate.getLong("BlockNo")).getHas2DModel() != null plateInfo.setFilterType(plateInfo.getFilterType() + ",1");
&& plateDetail.get(plate.getLong("BlockNo")).getHas2DModel()){ }
plateInfo.setFilterType(plateInfo.getFilterType() + ",4"); if (plateDetail.get(blockNo).getThroughHoleCount() != null
&& plateDetail.get(blockNo).getThroughHoleCount() > 0){
plateInfo.setFilterType(plateInfo.getFilterType() + ",2");
}
if (plateDetail.get(blockNo).getHas2DModel() != null
&& plateDetail.get(blockNo).getHas2DModel()){
plateInfo.setFilterType(plateInfo.getFilterType() + ",4");
}
} }
if (plateMap.get(blockNo) != null) {
JSONObject jsonObject = plateMap.get(blockNo);
if (plateDetail.get(blockNo) != null){
plateDetail.get(blockNo)
.setRemarkJson(jsonObject.getString("RemarkJson"))
.setSpecialRemark(jsonObject.getString("SpecialRemark"));
}
}
} }
if (plateMap.get(plate.getLong("BlockNo")) != null) {
JSONObject jsonObject = plateMap.get(plate.getLong("BlockNo")); if (plateMap != null){
plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble("Height"))) Long blockNo = plate.getLong("BlockNo");
.setWidth(BigDecimal.valueOf(jsonObject.getDouble("Width"))) if (plateMap.get(blockNo) != null) {
.setThickness(BigDecimal.valueOf(jsonObject.getDouble("Thickness"))) JSONObject jsonObject = plateMap.get(blockNo);
.setArea(BigDecimal.valueOf(jsonObject.getDouble("Area"))) plateInfo.setHeight(BigDecimal.valueOf(jsonObject.getDouble("Height")))
.setIsRowHole(jsonObject.getBoolean("IsHole")); .setWidth(BigDecimal.valueOf(jsonObject.getDouble("Width")))
plateDetail.get(plate.getLong("BlockNo")) .setThickness(BigDecimal.valueOf(jsonObject.getDouble("Thickness")))
.setRemarkJson(jsonObject.getString("RemarkJson")) .setArea(BigDecimal.valueOf(jsonObject.getDouble("Area")))
.setSpecialRemark(jsonObject.getString("SpecialRemark")); .setTexture(jsonObject.getInteger("Wave"))
.setIsRowHole(jsonObject.getBoolean("IsHole"));
}
} }
platesInfos.put(plate.getLong("ItemID"), plateInfo); platesInfos.put(plate.getLong("ItemID"), plateInfo);
platesItem.put(plate.getLong("ItemID"), itemPlate); platesItem.put(plate.getLong("ItemID"), itemPlate);
@@ -699,79 +727,82 @@ public class ApiTypeRealize {
*/ */
public Map<Long, PlateDetail> platesDetailChange(JSONObject dataPlates) { public Map<Long, PlateDetail> platesDetailChange(JSONObject dataPlates) {
Map<Long, PlateDetail> plateDetails = new HashMap<>(); Map<Long, PlateDetail> plateDetails = new HashMap<>();
// 获取 Orders 字段对应的数组 if (dataPlates.getJSONObject("value") != null){
JSONArray ordersArray = dataPlates.getJSONArray("Orders"); // 获取 Orders 字段对应的数组
JSONArray ordersArray = dataPlates.getJSONArray("Orders");
// System.err.println(dataPlates); // System.err.println(dataPlates);
if (ordersArray != null && !ordersArray.isEmpty()) { if (ordersArray != null && !ordersArray.isEmpty()) {
for (int i = 0; i < ordersArray.size(); i++) { for (int i = 0; i < ordersArray.size(); i++) {
JSONObject order = ordersArray.getJSONObject(i); JSONObject order = ordersArray.getJSONObject(i);
// 获取材料信息 // 获取材料信息
if (order.getJSONArray("Materials") != null && !order.getJSONArray("Materials").isEmpty()) { if (order.getJSONArray("Materials") != null && !order.getJSONArray("Materials").isEmpty()) {
for (int j = 0; j < order.getJSONArray("Materials").size(); j++) { for (int j = 0; j < order.getJSONArray("Materials").size(); j++) {
JSONObject material = order.getJSONArray("Materials").getJSONObject(j); JSONObject material = order.getJSONArray("Materials").getJSONObject(j);
// goodsMap.put() // goodsMap.put()
// 板件信息 // 板件信息
if (material.getJSONArray("Blocks") != null && !material.getJSONArray("Blocks").isEmpty()) { if (material.getJSONArray("Blocks") != null && !material.getJSONArray("Blocks").isEmpty()) {
for (int k = 0; k < material.getJSONArray("Blocks").size(); k++) { for (int k = 0; k < material.getJSONArray("Blocks").size(); k++) {
JSONObject block = material.getJSONArray("Blocks").getJSONObject(k);// 每块板 JSONObject block = material.getJSONArray("Blocks").getJSONObject(k);// 每块板
PlateDetail plateDetail = PlateDetail.builder() PlateDetail plateDetail = PlateDetail.builder()
.bodyNo(block.getString("BoxNo")) .bodyNo(block.getString("BoxNo"))
.plateNo(block.getString("BlockNo")) .plateNo(block.getString("BlockNo"))
.name(block.getString("BlockName")) .name(block.getString("BlockName"))
.customPlateNo(block.getString("CustomNo")) .customPlateNo(block.getString("CustomNo"))
.roomsName(block.getString("RoomName")) .roomsName(block.getString("RoomName"))
.bodyName(block.getString("BoxName")) .bodyName(block.getString("BoxName"))
.group(block.getString("ProcessGroupName")) .group(block.getString("ProcessGroupName"))
.multiNum(1) .multiNum(1)
.plateWidth(block.getBigDecimal("Width")) .plateWidth(block.getBigDecimal("Width"))
.plateLength(block.getBigDecimal("Length")) .plateLength(block.getBigDecimal("Length"))
.acreage(block.getBigDecimal("Size")) .acreage(block.getBigDecimal("Size"))
.splitWidth(block.getBigDecimal("CuttingWidth")) .splitWidth(block.getBigDecimal("CuttingWidth"))
.splitLength(block.getBigDecimal("CuttingLength")) .splitLength(block.getBigDecimal("CuttingLength"))
.sealAcreage(block.getBigDecimal("CuttingSize")) .sealAcreage(block.getBigDecimal("CuttingSize"))
.isUnRegular(block.getBoolean("IsUnRegular")) .isUnRegular(block.getBoolean("IsUnRegular"))
.sealLeft(block.getBigDecimal("BorderLeft")) .sealLeft(block.getBigDecimal("BorderLeft"))
.sealRight(block.getBigDecimal("BorderRight")) .sealRight(block.getBigDecimal("BorderRight"))
.sealUp(block.getBigDecimal("BorderUpper")) .sealUp(block.getBigDecimal("BorderUpper"))
.sealDown(block.getBigDecimal("BorderUnder")) .sealDown(block.getBigDecimal("BorderUnder"))
.texture(block.getInteger("Wave")) .texture(block.getInteger("Wave"))
.typographicFace(Integer.valueOf(block.getString("PlaceFace"))) .typographicFace(Integer.valueOf(block.getString("PlaceFace")))
.openDoorType(Integer.valueOf(block.getString("OpenDoorType"))) .openDoorType(Integer.valueOf(block.getString("OpenDoorType")))
.offsetX(block.getBigDecimal("OffsetX")) .offsetX(block.getBigDecimal("OffsetX"))
.offsetY(block.getBigDecimal("OffsetY")) .offsetY(block.getBigDecimal("OffsetY"))
.pointDetail(getPointDetail(block, true)) .pointDetail(getPointDetail(block, true))
.rawPointDetail(getPointDetail(block, false)) .rawPointDetail(getPointDetail(block, false))
.holeDetail(getHoleDetail(block, true)) .holeDetail(getHoleDetail(block, true))
.sideHoleDetail(getHoleDetail(block, false)) .sideHoleDetail(getHoleDetail(block, false))
.contourDetail(getModelDetail(block)) .contourDetail(getModelDetail(block))
// 排钻类型 // 排钻类型
.drillsInfos(getDrillsInfo(block)) .drillsInfos(getDrillsInfo(block))
.build(); .build();
if (block.getJSONObject("ExtraRemark") != null) { if (block.getJSONObject("ExtraRemark") != null) {
if (block.getJSONObject("ExtraRemark").getJSONObject("extra") != null) if (block.getJSONObject("ExtraRemark").getJSONObject("extra") != null)
plateDetail.setBoardType(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("boardType")) plateDetail.setBoardType(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("boardType"))
.setThroughHoleCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughHoleCount"))) .setThroughHoleCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughHoleCount")))
.setThroughModelCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughModelCount"))) .setThroughModelCount(Double.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("throughModelCount")))
.setHas2DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has2DModel"))) .setHas2DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has2DModel")))
.setHas3DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has3DModel"))) .setHas3DModel(Boolean.valueOf(block.getJSONObject("ExtraRemark").getJSONObject("extra").getString("has3DModel")))
.setRemark(remarkToMap(block)) .setRemark(remarkToMap(block))
.setSideRemark(edgeRemarkToMap(block.getJSONObject("ExtraRemark").getJSONObject("extra"))); .setSideRemark(edgeRemarkToMap(block.getJSONObject("ExtraRemark").getJSONObject("extra")));
}
plateDetails.put(block.getLong("BlockNo"), plateDetail);
} }
plateDetails.put(block.getLong("BlockNo"), plateDetail);
} }
} }
} }
}
// System.out.println("板块 " + plateDetails); // System.out.println("板块 " + plateDetails);
} }
} else { } else {
// System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。"); // System.out.println("JSON 数据中没有订单信息(Orders 数组为空)。");
}
} }
return plateDetails; return plateDetails;
} }
@@ -69,7 +69,7 @@ public class ExcelReadUtil { // 文件读取
// if (MapUtil.isEmpty(orderMap) || CollectionUtil.isEmpty(list)) { // if (MapUtil.isEmpty(orderMap) || CollectionUtil.isEmpty(list)) {
// isErr.set(-1); // isErr.set(-1);
// } // }
map.put("order", orderMap); map.put("order", changeOrderDO(orderMap));
map.put("plate", list); map.put("plate", list);
return map; return map;
@@ -80,28 +80,28 @@ public class ExcelReadUtil { // 文件读取
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
String error = ""; String error = "";
// 判断是否为空 // 判断是否为空
if ( orderMap.get("客户") == null){ if (orderMap.get("客户") == null) {
error += "客户不能为空;"; error += "客户不能为空;";
} }
if (orderMap.get("经销商") == null){ if (orderMap.get("经销商") == null) {
error += "经销商不能为空;"; error += "经销商不能为空;";
} }
if (orderMap.get("客户地址") == null){ if (orderMap.get("客户地址") == null) {
error += "客户地址不能为空;"; error += "客户地址不能为空;";
} }
if (orderMap.get("出货日期") == null){ if (orderMap.get("出货日期") == null) {
error += "出货日期不能为空;"; error += "出货日期不能为空;";
} }
if (orderMap.get("客户电话") == null){ if (orderMap.get("客户电话") == null) {
error += "客户电话不能为空;"; error += "客户电话不能为空;";
} else { } else {
if (!validatePhoneNumber((String) orderMap.get("客户电话"))) { if (!validatePhoneNumber((String) orderMap.get("客户电话"))) {
error += orderMap.get("客户电话")+ "-客户电话格式错误;"; error += orderMap.get("客户电话") + "-客户电话格式错误;";
} }
} }
if (orderMap.get("经销商电话") != null){ if (orderMap.get("经销商电话") != null) {
if (!validatePhoneNumber((String) orderMap.get("经销商电话"))) { if (!validatePhoneNumber((String) orderMap.get("经销商电话"))) {
error += orderMap.get("经销商电话")+ "-经销商电话格式错误;"; error += orderMap.get("经销商电话") + "-经销商电话格式错误;";
} }
} }
OrderDO orderDO = OrderDO.builder() OrderDO orderDO = OrderDO.builder()
@@ -117,16 +117,16 @@ public class ExcelReadUtil { // 文件读取
.splitter((String) orderMap.get("拆单员")) .splitter((String) orderMap.get("拆单员"))
.remark((String) orderMap.get("备注")) .remark((String) orderMap.get("备注"))
.build(); .build();
if (orderMap.get("出货日期") == null){ if (orderMap.get("出货日期") == null) {
error += "出货日期不能为空;"; error += "出货日期不能为空;";
}else { } else {
String s = (String) orderMap.get("出货日期"); String s = (String) orderMap.get("出货日期");
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try { try {
LocalDate orderDate = LocalDate.parse(s, formatter); LocalDate orderDate = LocalDate.parse(s, formatter);
orderDO.setDeliveryDate(orderDate.atStartOfDay()); // orderDO.setDeliveryDate(orderDate.atStartOfDay()); //
} catch (DateTimeParseException e) { } catch (DateTimeParseException e) {
error += s + "-出货日期格式错误;"; error += s + "-出货日期格式错误;";
} }
} }
map.put("order", orderDO); map.put("order", orderDO);
@@ -317,10 +317,21 @@ public class ExcelReadUtil { // 文件读取
List<String> errList = new ArrayList<>(); List<String> errList = new ArrayList<>();
Boolean flag = true; Boolean flag = true;
// 检查非空 类型、数量 // 检查非空 类型、数量
if (StringUtils.isEmpty(vo.getGoodType()) || StringUtils.isEmpty(vo.getGoodsNumber())) { if (StringUtils.isEmpty(vo.getGoodType())) {
errList.add("类型、数量不能为空"); errList.add("类型不能为空");
flag = false; flag = false;
} }
if (StringUtils.isEmpty(vo.getGoodsNumber())) {
errList.add("数量不能为空");
flag = false;
} else {
if (!checkNumber(vo.getGoodsNumber())) {
flag = false;
errList.add("数量不能为0");
}
}
// 检查商品物料编码或是商品名称、规格、材质、颜色不可全为空 // 检查商品物料编码或是商品名称、规格、材质、颜色不可全为空
if (StringUtils.isEmpty(vo.getGoodsId()) && (StringUtils.isEmpty(vo.getGoodsName()) || StringUtils.isEmpty(vo.getSpec()) if (StringUtils.isEmpty(vo.getGoodsId()) && (StringUtils.isEmpty(vo.getGoodsName()) || StringUtils.isEmpty(vo.getSpec())
|| StringUtils.isEmpty(vo.getMaterial()) || StringUtils.isEmpty(vo.getColor()) || StringUtils.isEmpty(vo.getUnit()))) { || StringUtils.isEmpty(vo.getMaterial()) || StringUtils.isEmpty(vo.getColor()) || StringUtils.isEmpty(vo.getUnit()))) {
@@ -329,11 +340,16 @@ public class ExcelReadUtil { // 文件读取
} }
// 若商品类型为板材,需检查房间、柜体、板名称、成品长、成品宽、拆单长、拆单宽、厚、左封边、右封边、上封边、下封边、排版面、纹路、开门方向不能为空 // 若商品类型为板材,需检查房间、柜体、板名称、成品长、成品宽、拆单长、拆单宽、厚、左封边、右封边、上封边、下封边、排版面、纹路、开门方向不能为空
if (StringUtils.equals(vo.getGoodType(), "板材")) { if (StringUtils.equals(vo.getGoodType(), "板材")) {
// 数量类型判断
if (!convertToInteger(vo.getGoodsNumber())) {
flag = false;
errList.add("数量类型错误");
}
// 纹理有效性判断 // 纹理有效性判断
if (StringUtils.isEmpty(vo.getWave())) { if (StringUtils.isEmpty(vo.getWave())) {
errList.add("板材纹理不可为空"); errList.add("板材纹理不可为空");
flag = false; flag = false;
}else { } else {
if (!StringUtils.equals(vo.getWave().trim(), "") && !StringUtils.equals(vo.getWave().trim(), "")) { if (!StringUtils.equals(vo.getWave().trim(), "") && !StringUtils.equals(vo.getWave().trim(), "")) {
flag = false; flag = false;
errList.add("纹理无效"); errList.add("纹理无效");
@@ -343,7 +359,7 @@ public class ExcelReadUtil { // 文件读取
if (StringUtils.isEmpty(vo.getGoodsHeight()) && StringUtils.isEmpty(vo.getGoodsWidth()) && StringUtils.isEmpty(vo.getGoodsThickness())) { if (StringUtils.isEmpty(vo.getGoodsHeight()) && StringUtils.isEmpty(vo.getGoodsWidth()) && StringUtils.isEmpty(vo.getGoodsThickness())) {
flag = false; flag = false;
errList.add("板材长宽厚数据不能为空"); errList.add("板材长宽厚数据不能为空");
}else { } else {
// 大板长宽厚数据不为空,检查数据格式 // 大板长宽厚数据不为空,检查数据格式
if (!convertToDouble(vo.getGoodsHeight())) { if (!convertToDouble(vo.getGoodsHeight())) {
flag = false; flag = false;
@@ -515,6 +531,16 @@ public class ExcelReadUtil { // 文件读取
return true; return true;
} }
// 数据类型可否转换判断
public Boolean convertToInteger(String str) {
try {
Integer.parseInt(str);
} catch (NumberFormatException e) {
return false;
}
return true;
}
// 数据长度判断 // 数据长度判断
public boolean checkPrecision(String numberStr) { public boolean checkPrecision(String numberStr) {
if (numberStr == null) { if (numberStr == null) {
@@ -545,4 +571,15 @@ public class ExcelReadUtil { // 文件读取
public void setErr(int isErr) { public void setErr(int isErr) {
this.isErr.set(isErr); this.isErr.set(isErr);
} }
// 数量大小判断
public Boolean checkNumber(String numberStr) {
if (numberStr == null) {
return false;
}
if (Double.parseDouble(numberStr) <= 0) {
return false;
}
return true;
}
} }
@@ -119,12 +119,12 @@ public class ExcelTypeRealize {
RawGoodsDO rawGoodsDO = setRawGoodsDO(value.get(0)).setId((Long) snowFlakeGenerator.nextId(null)).setOrderId(orderId); RawGoodsDO rawGoodsDO = setRawGoodsDO(value.get(0)).setId((Long) snowFlakeGenerator.nextId(null)).setOrderId(orderId);
rawGoodsDOS.add(rawGoodsDO); rawGoodsDOS.add(rawGoodsDO);
Long goodId = (Long) snowFlakeGenerator.nextId(null); Long goodId = (Long) snowFlakeGenerator.nextId(null);
GoodsDO plateDO = setGoodsDO(value.get(0)).setId(goodId).setOrderId(orderId) GoodsDO goodsDO = setGoodsDO(value.get(0)).setId(goodId).setOrderId(orderId)
.setRawGoodsId(String.valueOf(rawGoodsDO.getId())).setGoodsId(String.valueOf(rawGoodsDO.getRawGoodsId())) .setRawGoodsId(String.valueOf(rawGoodsDO.getId())).setGoodsId(String.valueOf(rawGoodsDO.getRawGoodsId()))
.setHeight(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsHeight()))) .setHeight(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsHeight())))
.setWidth(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsWidth()))) .setWidth(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsWidth())))
.setThickness(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsThickness()))); .setThickness(BigDecimal.valueOf(Double.parseDouble(value.get(0).getGoodsThickness())));
goodsDOS.add(plateDO); goodsDOS.add(goodsDO);
// 赋值给板件未对应前order_raw_goods的id // 赋值给板件未对应前order_raw_goods的id
for (OrderPlateImportExcelVO reqVO : value) { for (OrderPlateImportExcelVO reqVO : value) {
reqVO.setGoodId(goodId); reqVO.setGoodId(goodId);
@@ -248,7 +248,7 @@ public class ExcelTypeRealize {
.remark(remarkExtract(combination.remarkJSON())).build(); .remark(remarkExtract(combination.remarkJSON())).build();
orderPartsRemarks.add(orderPartsRemark); orderPartsRemarks.add(orderPartsRemark);
OrderItemDO orderItemDO = OrderItemDO.builder().orderId(orderId).type(OrderItemTypeEnum.PARTS_ITEM.getStatus()) OrderItemDO orderItemDO = OrderItemDO.builder().orderId(orderId).type(OrderItemTypeEnum.PARTS_ITEM.getStatus())
.roomId(roomId).bodyId(bodyId).partsId(partsId).groupId(synthesisTypeName != " " ? groupId : null) .roomId(roomName != " " ? roomId : null).bodyId(bodyName != " " ? bodyId : null).partsId(partsId).groupId(synthesisTypeName != " " ? groupId : null)
.num(Double.valueOf(combination.getGoodsNumber())).build(); .num(Double.valueOf(combination.getGoodsNumber())).build();
orderItemDOS.add(orderItemDO); orderItemDOS.add(orderItemDO);
} }
@@ -282,18 +282,29 @@ public class ExcelTypeRealize {
} }
// 备注提取 // 备注提取
// private String remarkExtract(String remark) {
// JSONObject jsonObject = new JSONObject(remark);
// JSONObject nonNullJsonObject = new JSONObject();
//
// for (String key : jsonObject.keySet()) {
// Object value = jsonObject.get(key);
// if (value != null) {
// nonNullJsonObject.put(key, value);
// }
// }
//
// return nonNullJsonObject.toString();
// }
private String remarkExtract(String remark) { private String remarkExtract(String remark) {
JSONObject jsonObject = new JSONObject(remark); JSONObject jsonObject = new JSONObject(remark);
JSONObject nonNullJsonObject = new JSONObject(); List<Object> nonNullValues = new ArrayList<>();
for (String key : jsonObject.keySet()) { for (String key : jsonObject.keySet()) {
Object value = jsonObject.get(key); Object value = jsonObject.get(key);
if (value != null) { nonNullValues.add(value);
nonNullJsonObject.put(key, value);
}
} }
return nonNullJsonObject.toString(); return nonNullValues.toString();
} }
@@ -6,6 +6,7 @@ import com.cf.imes.framework.excel.core.annotations.DictFormat;
import com.cf.imes.framework.excel.core.convert.DictConvert; import com.cf.imes.framework.excel.core.convert.DictConvert;
import com.cf.imes.module.system.enums.DictTypeConstants; import com.cf.imes.module.system.enums.DictTypeConstants;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@@ -24,6 +25,7 @@ import java.math.BigDecimal;
@AllArgsConstructor @AllArgsConstructor
@NoArgsConstructor @NoArgsConstructor
@Accessors(chain = false) // 设置 chain = false,避免生产单导入有问 @Accessors(chain = false) // 设置 chain = false,避免生产单导入有问
@JsonInclude(JsonInclude.Include.NON_NULL)
public class OrderPlateImportExcelVO { public class OrderPlateImportExcelVO {
@ExcelProperty(value = "序号") @ExcelProperty(value = "序号")
@@ -39,6 +41,7 @@ public class OrderPlateImportExcelVO {
private String goodsId; private String goodsId;
@ExcelIgnore @ExcelIgnore
@JsonIgnore
private Long goodId;//商品id private Long goodId;//商品id
@ExcelProperty(value = "商品名称") @ExcelProperty(value = "商品名称")
@@ -221,7 +224,7 @@ public class OrderPlateImportExcelVO {
return json; return json;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
return "{}"; return "";
} }
} }
} }
@@ -103,16 +103,16 @@
o.splitter, o.splitter,
o.remark, o.remark,
CONCAT( CONCAT(
LPAD(FLOOR(TIMESTAMPDIFF(SECOND, o.delivery_date, #{today}) / (24 * 60 * 60)), 2, '0'), '天 ', LPAD(FLOOR(TIMESTAMPDIFF(SECOND, #{today}, o.delivery_date ) / (24 * 60 * 60)), 2, '0'), '天 ',
LPAD(FLOOR(MOD(TIMESTAMPDIFF(SECOND, o.delivery_date, #{today}), (24 * 60 * 60)) / (60 * 60)), 2, '0'), ':', LPAD(FLOOR(MOD(TIMESTAMPDIFF(SECOND, #{today}, o.delivery_date), (24 * 60 * 60)) / (60 * 60)), 2, '0'), ':',
LPAD(FLOOR(MOD(MOD(TIMESTAMPDIFF(SECOND, o.delivery_date, #{today}), (24 * 60 * 60)), (60 * 60)) / 60), 2, '0'), ':', LPAD(FLOOR(MOD(MOD(TIMESTAMPDIFF(SECOND, #{today}, o.delivery_date), (24 * 60 * 60)), (60 * 60)) / 60), 2, '0'), ':',
LPAD(MOD(MOD(TIMESTAMPDIFF(SECOND, o.delivery_date, #{today}), (24 * 60 * 60)), (60 * 60)) % 60, 2, '0') LPAD(MOD(MOD(TIMESTAMPDIFF(SECOND, #{today}, o.delivery_date), (24 * 60 * 60)), (60 * 60)) % 60, 2, '0')
) AS becomeDue ) AS becomeDue
from orders o from orders o
where o.organ_id = #{organId} where o.organ_id = #{organId}
and o.deleted = 0 and o.deleted = 0
and o.status != 4 and o.status != 4
and o.delivery_date between #{orderDate} and #{today} and o.delivery_date between #{today} and #{orderDate}
</select> </select>
<select id="selectOrderOverdue" resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO"> <select id="selectOrderOverdue" resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderOverdueRespVO">
@@ -148,4 +148,22 @@
and o.status != 4 and o.status != 4
and #{today} > DATE(o.delivery_date) and #{today} > DATE(o.delivery_date)
</select> </select>
<select id="selectOrderCountProducePeriod" resultType="com.cf.imes.module.executor.controller.admin.order.vo.order.OrderCountProducePeriodRespVO">
SELECT
DATE(o.order_date) AS order_date,
COUNT(o.id) AS count
FROM
orders o
WHERE
o.deleted = 0
AND DATE(o.order_date) BETWEEN #{startTime} AND #{endTime}
<if test="organId != null">
AND o.organ_id = #{organId}
</if>
GROUP BY
DATE(o.order_date)
ORDER BY
order_date;
</select>
</mapper> </mapper>
@@ -26,15 +26,14 @@
a.brand, a.brand,
a.factory, a.factory,
a.unit, a.unit,
a.price,
a.is_composite, a.is_composite,
a.remark, a.remark,
b.num, b.num,
c.name as body_name, c.name as body_name,
c.id as body_id, c.id as body_id,
c.room_id, c.room_id,
c.room_name, c.room_name
b.num * a.price AS total_price -- 添加计算总金额的列
FROM order_parts a FROM order_parts a
LEFT JOIN order_item b ON a.id = b.parts_id LEFT JOIN order_item b ON a.id = b.parts_id
LEFT JOIN order_body c on c.id = b.body_id LEFT JOIN order_body c on c.id = b.body_id
@@ -81,7 +80,7 @@
<foreach collection="partsIds" item="partsId" open="(" separator="," close=")"> <foreach collection="partsIds" item="partsId" open="(" separator="," close=")">
#{partsId} #{partsId}
</foreach> </foreach>
AND organ_id = #{organId} AND organ_id = #{organId}
</delete> </delete>
<select id="selectPartList" <select id="selectPartList"
@@ -117,6 +116,9 @@
</select> </select>
<select id="countPartsByOrderId" resultType="java.lang.Integer">
SELECT count(*) FROM order_plate
WHERE order_id = #{orderId} AND organ_id = #{organId} AND deleted = #{deleted}
</select>
</mapper> </mapper>
@@ -602,4 +602,18 @@
</select> </select>
<select id="selectPlateTypeByRoomId" resultType="java.lang.Long">
SELECT p.id
FROM order_plate p
LEFT JOIN order_item i ON p.id = i.plate_id
WHERE i.organ_id = #{organId} AND i.order_id = #{orderId} AND p.deleted = #{deleted}
<if test="roomId != null">
AND i.room_id = #{roomId}
</if>
<if test="bodyId != null">
AND i.body_id = #{bodyId}
</if>
</select>
</mapper> </mapper>
@@ -4,6 +4,7 @@ import com.cf.imes.framework.common.pojo.CommonResult;
import com.cf.imes.module.manage.enums.ApiConstants; import com.cf.imes.module.manage.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Parameters;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
@@ -17,11 +18,19 @@ public interface PlateApi {
@GetMapping(PREFIX +"/get") @GetMapping(PREFIX +"/get")
@Operation(summary = "获得板材信息表") @Operation(summary = "获得板材信息表")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameters({
CommonResult<Boolean> getPlate(@RequestParam("id") Long id); @Parameter(name = "id", description = "编号", required = true, example = "1024"),
@Parameter(name = "organId", description = "板材所属组织ID", required = true, example = "1024")
})
CommonResult<Boolean> getPlate(@RequestParam("id") Long id,
@RequestParam("organId") Long organId);
@GetMapping(PREFIX +"/getGoodsId") @GetMapping(PREFIX +"/getGoodsId")
@Operation(summary = "判断板材是否存在") @Operation(summary = "判断板材是否存在")
@Parameter(name = "id", description = "客户的商品编号", required = true, example = "1024") @Parameters({
CommonResult<Long> getPlateGoods(@RequestParam("id") Long goodsId); @Parameter(name = "id", description = "客户的商品编号", required = true, example = "1024"),
@Parameter(name = "organId", description = "板材所属组织ID", required = true, example = "1024")
})
CommonResult<Long> getPlateGoods(@RequestParam("id") String goodsId,
@RequestParam("organId") Long organId);
} }
@@ -8,14 +8,14 @@ import javax.annotation.Resource;
import static com.cf.imes.framework.common.pojo.CommonResult.success; import static com.cf.imes.framework.common.pojo.CommonResult.success;
public class PlateServiceImpl implements PlateApi{ public class PlateServiceApiImpl implements PlateApi{
@Resource @Resource
private PlateService plateService; private PlateService plateService;
@Override @Override
public CommonResult<Boolean> getPlate(Long id) { public CommonResult<Boolean> getPlate(Long id, Long organId) {
PlateDO plateDO = plateService.getPlate(id); PlateDO plateDO = plateService.getPlate(id, organId);
if (plateDO == null) { if (plateDO == null) {
return success(false); return success(false);
} }
@@ -23,11 +23,11 @@ public class PlateServiceImpl implements PlateApi{
} }
@Override @Override
public CommonResult<Long> getPlateGoods(Long goodsId) { public CommonResult<Long> getPlateGoods(String goodsId, Long organId) {
if (goodsId == null) { if (goodsId == null) {
return success(0L); return success(0L);
} }
PlateDO plateDO = plateService.getPlateGoods(goodsId); PlateDO plateDO = plateService.getPlateGoods(goodsId, organId);
if (plateDO == null) { if (plateDO == null) {
return success(0L); return success(0L);
} }
@@ -68,18 +68,22 @@ public class PlateController {
// @PreAuthorize("@ss.hasPermission('manage:plate:delete')") // @PreAuthorize("@ss.hasPermission('manage:plate:delete')")
@PreAuthorize("@ss.hasAnyPermissions('manage:plate:delete','base:plate:delete')") @PreAuthorize("@ss.hasAnyPermissions('manage:plate:delete','base:plate:delete')")
public CommonResult<Boolean> deletePlate(@RequestParam("id") Long id, public CommonResult<Boolean> deletePlate(@RequestParam("id") Long id,
@RequestParam(value = "organId",required = false) Long organId) { @RequestParam(value = "organId",required = false, defaultValue = "0") Long organId) {
plateService.deletePlate(id,organId); plateService.deletePlate(id,organId);
return success(true); return success(true);
} }
@GetMapping("/get") @GetMapping("/get")
@Operation(summary = "获得板材信息") @Operation(summary = "获得板材信息")
@Parameter(name = "id", description = "编号", required = true, example = "1024") @Parameters({
@Parameter(name = "id", description = "编号", required = true, example = "1024"),
@Parameter(name = "organId", description = "板材所属组织ID", required = true, example = "1024")
})
// @PreAuthorize("@ss.hasPermission('manage:plate:query')") // @PreAuthorize("@ss.hasPermission('manage:plate:query')")
@PreAuthorize("@ss.hasAnyPermissions('manage:plate:query','base:plate:query')") @PreAuthorize("@ss.hasAnyPermissions('manage:plate:query','base:plate:query')")
public CommonResult<PlateRespVO> getPlate(@RequestParam("id") Long id) { public CommonResult<PlateRespVO> getPlate(@RequestParam("id") Long id,
PlateDO plate = plateService.getPlate(id); @RequestParam("organId") Long organId) {
PlateDO plate = plateService.getPlate(id, organId);
return success(BeanUtils.toBean(plate, PlateRespVO.class)); return success(BeanUtils.toBean(plate, PlateRespVO.class));
} }
@@ -66,7 +66,7 @@ public class RemainPlateController {
@Operation(summary = "余料板批量核销") @Operation(summary = "余料板批量核销")
@PreAuthorize("@ss.hasPermission('placeorder:remain')") @PreAuthorize("@ss.hasPermission('placeorder:remain')")
public CommonResult<Boolean> updateRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { public CommonResult<Boolean> updateRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) {
remainPlateService.updateRemainPlateStatus(updateReqVO.getId(), remainPlateService.updateRemainPlateStatus(updateReqVO.getIds(),
updateReqVO.getStatus(), updateReqVO.getStatus(),
updateReqVO.getUseType(), updateReqVO.getUseType(),
updateReqVO.getPlanId()); updateReqVO.getPlanId());
@@ -77,7 +77,7 @@ public class RemainPlateController {
@Operation(summary = "余料板批量释放") @Operation(summary = "余料板批量释放")
@PreAuthorize("@ss.hasPermission('placeorder:remain')") @PreAuthorize("@ss.hasPermission('placeorder:remain')")
public CommonResult<Boolean> revertRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) { public CommonResult<Boolean> revertRemainPlate(@RequestBody RemainPlateUptReqVO updateReqVO) {
remainPlateService.revertRemainPlateStatus(updateReqVO.getId(),updateReqVO.getStatus()); remainPlateService.revertRemainPlateStatus(updateReqVO.getIds(),updateReqVO.getStatus());
return success(true); return success(true);
} }
@@ -10,7 +10,7 @@ import java.util.Set;
public class RemainPlateUptReqVO { public class RemainPlateUptReqVO {
@Schema(description = "余料板集", example = "16470") @Schema(description = "余料板集", example = "16470")
private Set<Long> id; private Set<Long> ids;
@Schema(description = "余料板状态,0未使用,1使用中", example = "1") @Schema(description = "余料板状态,0未使用,1使用中", example = "1")
private Integer status; private Integer status;
@@ -46,7 +46,7 @@ public interface PlateService {
* @param id 编号 * @param id 编号
* @return 板材信息表 plate_{N} * @return 板材信息表 plate_{N}
*/ */
PlateDO getPlate(Long id); PlateDO getPlate(Long id, Long organId);
/** /**
* 获得板材信息表 plate_{N} * 获得板材信息表 plate_{N}
@@ -54,7 +54,7 @@ public interface PlateService {
* @param id 编号 * @param id 编号
* @return 板材信息表 plate_{N} * @return 板材信息表 plate_{N}
*/ */
PlateDO getPlateGoods(Long id); PlateDO getPlateGoods(String id, Long organId);
/** /**
* 获得板材信息表 plate_{N}分页 * 获得板材信息表 plate_{N}分页
@@ -96,16 +96,18 @@ public class PlateServiceImpl implements PlateService {
@OrganIgnore @OrganIgnore
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void deletePlate(Long id,Long organId) { public void deletePlate(Long id,Long organId) {
if (permissionApi.hasRoles(getLoginUser().getId(), BASE_PLATE_DELETE_PERMISSION).getData()){ boolean hasPermission = permissionApi.hasRoles(getLoginUser().getId(), BASE_PLATE_DELETE_PERMISSION).getData();
if (organId != null && organId != 0 ){
validateOrganExists(organId);
}
} else {
organId = OrganContextHolder.getOrganId();
}
Long organIdDefault = OrganContextHolder.getOrganId();
if (hasPermission && organId != null && organId != 0) {
validateOrganExists(organId);
organIdDefault = organId;
}
// 校验存在 // 校验存在
validatePlateExists(id,organId); validatePlateExists(id,organIdDefault);
// 删除 // 删除
plateMapper.deleteById(id); plateMapper.deleteById(id);
} }
@@ -118,13 +120,13 @@ public class PlateServiceImpl implements PlateService {
@Override @Override
@OrganIgnore @OrganIgnore
public PlateDO getPlate(Long id) { public PlateDO getPlate(Long id, Long organId) {
return plateMapper.selectById(id); return plateMapper.selectOneById(id, organId);
} }
@Override @Override
public PlateDO getPlateGoods(Long id) { public PlateDO getPlateGoods(String id, Long organId) {
return plateMapper.selectOne(PlateDO::getGoodsId,id); return plateMapper.selectByGoodID(id,organId);
} }
@Override @Override
@@ -68,6 +68,8 @@ public class RemainPlateServiceImpl implements RemainPlateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void updateRemainPlateStatus(Set<Long> ids, Integer status, Integer useType, Long planId) { public void updateRemainPlateStatus(Set<Long> ids, Integer status, Integer useType, Long planId) {
// 余料存在判断
validateRemainPlateExists(ids);
if (useType != RemainPlateUseTypeEnum.TYPE_ONE.getStatus() && useType != RemainPlateUseTypeEnum.TYPE_ZERO.getStatus()) { //余料使用状态为2或3 if (useType != RemainPlateUseTypeEnum.TYPE_ONE.getStatus() && useType != RemainPlateUseTypeEnum.TYPE_ZERO.getStatus()) { //余料使用状态为2或3
// 判断该排单是否存在以使用的余料 // 判断该排单是否存在以使用的余料
if (remainPlateMapper.selectRemainPlatesByPlanId(planId, RemainPlateStatusEnum.IN_USE.getStatus(), if (remainPlateMapper.selectRemainPlatesByPlanId(planId, RemainPlateStatusEnum.IN_USE.getStatus(),
@@ -127,6 +129,8 @@ public class RemainPlateServiceImpl implements RemainPlateService {
if (ids == null) { if (ids == null) {
throw exception(REMAIN_PLATE_ID_NOT_EXISTS); throw exception(REMAIN_PLATE_ID_NOT_EXISTS);
} }
// 余料存在判断
validateRemainPlateExists(ids);
// 判断余料的状态是否存在使用中 // 判断余料的状态是否存在使用中
validateRemainPlateStatus(ids, RemainPlateStatusEnum.IN_USE.getStatus()); validateRemainPlateStatus(ids, RemainPlateStatusEnum.IN_USE.getStatus());
// 删除 // 删除
@@ -150,7 +154,11 @@ public class RemainPlateServiceImpl implements RemainPlateService {
throw exception(REMAIN_PLATE_NOT_EXISTS); throw exception(REMAIN_PLATE_NOT_EXISTS);
} }
} }
private void validateRemainPlateExists(Set<Long> id) {
if (remainPlateMapper.selectBatchIds(id).isEmpty()) {
throw exception(REMAIN_PLATE_NOT_EXISTS);
}
}
private RemainPlateDO validateRemainPlateIsCutting(Long id) { private RemainPlateDO validateRemainPlateIsCutting(Long id) {
return remainPlateMapper.selectById(id); return remainPlateMapper.selectById(id);
} }