Merge pull request 'v1.3.0' (#4) from dev into master

Reviewed-on: #4
master release_1.3.0
zengchenxi 8 months ago
commit fc924825aa

@ -72,6 +72,14 @@ public enum OperateTypeEnum {
* *
* */ * */
DELIVER(14), DELIVER(14),
/*
*
* */
SUBMIT(15),
/*
*
* */
CANCEL_SUBMIT(16),
/** /**
* *
* *

@ -28,4 +28,15 @@ public interface OperateLogFrameworkService {
* @param content * @param content
*/ */
void createOperateLog(HttpServletRequest request, LocalDateTime startTime, String businessType, Long businessId, Integer type, String content); void createOperateLog(HttpServletRequest request, LocalDateTime startTime, String businessType, Long businessId, Integer type, String content);
/**
*
*
* @param startTime
* @param businessType
* @param businessId
* @param type
* @param content
*/
void createOperateLog(LocalDateTime startTime, String businessType, Long businessId, Integer type, String content);
} }

@ -58,4 +58,28 @@ public class OperateLogFrameworkServiceImpl implements OperateLogFrameworkServic
operateLogApi.createOperateLog(reqDTO); operateLogApi.createOperateLog(reqDTO);
} }
@Override
public void createOperateLog(LocalDateTime startTime, String businessType, Long businessId, Integer type, String content) {
OperateLog operateLogObj = new OperateLog();
operateLogObj.setTraceId(TracerUtils.getTraceId());
operateLogObj.setStartTime(startTime);
operateLogObj.setBusinessType(businessType);
operateLogObj.setBusinessId(businessId);
operateLogObj.setUserId(WebFrameworkUtils.getLoginUserId());
operateLogObj.setUserType(WebFrameworkUtils.getLoginUserType());
operateLogObj.setModule("ignore");
operateLogObj.setName("ignore");
operateLogObj.setType(type);
operateLogObj.setContent(content);
operateLogObj.setRequestMethod("system");
operateLogObj.setRequestUrl("system");
operateLogObj.setUserIp("127.0.0.1");
operateLogObj.setUserAgent("system");
operateLogObj.setJavaMethod("system");
operateLogObj.setDuration((int) (LocalDateTimeUtil.between(startTime, LocalDateTime.now()).toMillis()));
operateLogObj.setResultCode(SUCCESS.getCode());
OperateLogCreateReqDTO reqDTO = BeanUtil.toBean(operateLogObj, OperateLogCreateReqDTO.class);
operateLogApi.createOperateLog(reqDTO);
}
} }

@ -0,0 +1,42 @@
package com.chanko.yunxi.mes.framework.excel.core.convert;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
*
*
* @author chenxi
* @date 2024-02-28 09:01
*/
public class TimestampToDateConvert implements Converter<Object> {
@Override
public WriteCellData<?> convertToExcelData(Object value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) throws Exception {
try {
String date = "";
if(value instanceof Long){
long timestamp = (Long) value;
date = new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
}else if(value instanceof String){
long timestamp = Long.parseLong((String) value);
date = new SimpleDateFormat("yyyy-MM-dd").format(new Date(timestamp));
}else if(value instanceof LocalDateTime){
LocalDateTime local = (LocalDateTime) value;
date = DateTimeFormatter.ofPattern("yyyy-MM-dd").format(local);
}
return new WriteCellData<>(date);
}catch (Exception e){
}
return Converter.super.convertToExcelData(value, contentProperty, globalConfiguration);
}
}

@ -28,6 +28,12 @@
<artifactId>spring-boot-starter-validation</artifactId> <artifactId>spring-boot-starter-validation</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<scope>provided</scope>
</dependency>
</dependencies> </dependencies>

@ -13,6 +13,7 @@ public enum BusinesTypeEnum {
PROJECT_ORDER("销售订单"), PROJECT_ORDER("销售订单"),
PROJECT_ORDER_SNAPSHOT("销售订单快照"), PROJECT_ORDER_SNAPSHOT("销售订单快照"),
DELIVER_ORDER("发货订单"), DELIVER_ORDER("发货订单"),
PROCESS_BOM("工艺BOM"),
; ;
private String description; private String description;

@ -43,6 +43,9 @@ public enum CodeEnum {
STOCK_CHECK("盘点单据", "WC", 3, "yyyyMM"), STOCK_CHECK("盘点单据", "WC", 3, "yyyyMM"),
PROJECT_ORDER("业务订单", 3, "yyyyMM"), PROJECT_ORDER("业务订单", 3, "yyyyMM"),
PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"), PROJECT_DELIVERY_ORDER("发货单", "HL", 3, "yyyyMM"),
PROJECT_PLAN("生产计划", "PP",3, "yyyyMM"),
MATERIAL_PLAN("物料需求计划", "PR",4, "yyyyMMdd"),
PURCHASE_ORDER("采购订单", "PO",4, "yyyyMMdd"),
; ;

@ -17,6 +17,9 @@ import com.chanko.yunxi.mes.framework.common.exception.ErrorCode;
* 004 * 004
* 005 * 005
* 006 * 006
* 007
* 008
* 009
* 3 * 3
*/ */
public interface ErrorCodeConstants { public interface ErrorCodeConstants {
@ -57,4 +60,16 @@ public interface ErrorCodeConstants {
ErrorCode DELIVER_AMOUNT_OVERFLOW = new ErrorCode(1_005_003, "超额发货"); ErrorCode DELIVER_AMOUNT_OVERFLOW = new ErrorCode(1_005_003, "超额发货");
/************工艺设计***********/ /************工艺设计***********/
ErrorCode PROCESS_DESIGN_NOT_EXISTS = new ErrorCode(1_006_001, "工艺设计不存在"); ErrorCode PROCESS_DESIGN_NOT_EXISTS = new ErrorCode(1_006_001, "工艺设计不存在");
ErrorCode PROCESS_BOM_NOT_EXISTS = new ErrorCode(1_006_002, "工艺bom不存在");
ErrorCode PROCESS_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_006_003, "工艺bom明细不存在");
/************生产计划管理***********/
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(1_007_001, "生产计划不存在");
ErrorCode PLAN_SUB_NOT_EXISTS = new ErrorCode(1_007_002, "生产计划子项目不存在");
/************采购管理***********/
ErrorCode MATERIAL_PLAN_NOT_EXISTS = new ErrorCode(1_008_001, "物料需求计划不存在");
ErrorCode MATERIAL_PLAN_DETAIL_NOT_EXISTS = new ErrorCode(1_008_002, "物料需求计划物料详情不存在");
ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_003, "采购订单不存在");
ErrorCode PURCHASE_ORDER_MATERIAL_NOT_EXISTS = new ErrorCode(1_008_004, "采购单物料不存在");
/************生产管理***********/
ErrorCode TASK_DISPATCH_NOT_EXISTS = new ErrorCode(1_009_001, "派工单不存在");
} }

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
* bom
* @author chenxi
* @date 2024-02-26 11:25
*/
@Getter
public enum ProcessBomStatusEnum {
SAVE(1, "已保存"),
SUBMIT(2, "已提交"),
CANCEL_SUBMIT(1, "取消提交"),
TERMINATE(3, "已终止");
private int code;
private String description;
ProcessBomStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,23 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-21 01:09
*/
@Getter
public enum ProcessDesignTypeEnum {
BLUEPRINT_FOUNDRY_TECHNOLOGY("铸造工艺"),
BLUEPRINT_3D("3D图纸"),
BLUEPRINT_2D("2D图纸"),
BLUEPRINT_WORKBLANK("毛坯图纸");
private String description;
ProcessDesignTypeEnum(String description) {
this.description = description;
}
}

@ -0,0 +1,26 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-01-18 01:19
*/
@Getter
public enum ProjectPlanStatusEnum {
START(1, "未开始"),
PRODUCING(2, "生产中"),
COMPLETE(3, "已完成"),
TERMINATE(4, "已终止"),
CHANGE(5, "已变更"),
;
private int code;
private String description;
ProjectPlanStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-01-18 01:19
*/
@Getter
public enum PurchaseStatusEnum {
START(1, "已保存"),
SUBMIT(2, "已送审"),
AUDIT(3, "已审核"),
REFUSE(4, "已打回"),
;
private int code;
private String description;
PurchaseStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,22 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-27 10:28
*/
@Getter
public enum ValidStatusEnum {
VALID(1, "有效"),
INVALID(2, "无效");
private int code;
private String description;
ValidStatusEnum(int code, String description) {
this.code = code;
this.description = description;
}
}

@ -0,0 +1,20 @@
package com.chanko.yunxi.mes.module.heli.enums;
import lombok.Getter;
/**
*
* @author chenxi
* @date 2024-02-23 10:15
*/
@Getter
public enum WarningEnum {
PROCESS_DESIGN_DEFERRED_WARNING("工艺设计延期预警");
private String description;
WarningEnum(String description) {
this.description = description;
}
}

@ -0,0 +1,56 @@
package com.chanko.yunxi.mes.module.heli.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
*
*
* @author chenxi
* @date 2024-02-23 09:54
*/
@Data
@Accessors(chain = true)
public class WarningMessageVO {
@Schema(description = "是否包含预警信息")
private boolean hasWarning = false;
@Schema(description = "预警信息")
private List<WarningVO> warnings;
public static abstract class WarningVO {}
@Data
@Accessors(chain = true)
public static class ProcessDesignDeferredWarningVO extends WarningVO {
/**
* {@link com.chanko.yunxi.mes.module.heli.enums.WarningEnum}
*/
@Schema(description = "预警类型")
private String warningType;
/**
* {@link com.chanko.yunxi.mes.module.heli.enums.ProcessDesignTypeEnum}
*/
@Schema(description = "工艺设计类型")
private String processDesignType;
@Schema(description = "预警接收人")
private String ownerName;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "剩余时间")
private long remainingTime;
}
}

@ -119,4 +119,7 @@ public class CustomerPageReqVO extends PageParam {
@Schema(description = "公司税号") @Schema(description = "公司税号")
private String taxNo; private String taxNo;
@Schema(description = "简称或全称")
private String briefOrName;
} }

@ -92,4 +92,19 @@ public class EquipController {
BeanUtils.toBean(list, EquipRespVO.class)); BeanUtils.toBean(list, EquipRespVO.class));
} }
@GetMapping({"/all-simples"})
@Operation(summary = "TODO:获取设备信息信息列表", description = "只包含被开启的设备信息,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getSimpleList() {
List<Map<String, Object>> list = equipService.getEquipSimpleList();
// 拼接数据
return success(list);
}
@GetMapping({"/all-no-status-simples"})
@Operation(summary = "TODO:获取无状态设备信息信息列表", description = "设备信息,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getNoStatusSimpleList() {
List<Map<String, Object>> list = equipService.getEquipNoStatusSimpleList();
// 拼接数据
return success(list);
}
} }

@ -24,6 +24,9 @@ public class MaterialPageReqVO extends PageParam {
@Schema(description = "物料名称", example = "李四") @Schema(description = "物料名称", example = "李四")
private String name; private String name;
@Schema(description = "物料名称", example = "李四")
private String codeAndName;
@Schema(description = "品牌") @Schema(description = "品牌")
private String brand; private String brand;

@ -27,6 +27,9 @@ public class MaterialRespVO {
@ExcelProperty("物料名称") @ExcelProperty("物料名称")
private String name; private String name;
@Schema(description = "物料名称和编码")
private String codeAndName;
@Schema(description = "品牌") @Schema(description = "品牌")
@ExcelProperty("品牌") @ExcelProperty("品牌")
private String brand; private String brand;

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.service.materialplan.MaterialPlanService;
@Tag(name = "管理后台 - 物料需求计划")
@RestController
@RequestMapping("/heli/material-plan")
@Validated
public class MaterialPlanController {
@Resource
private MaterialPlanService materialPlanService;
@PostMapping("/create")
@Operation(summary = "创建物料需求计划")
@PreAuthorize("@ss.hasPermission('heli:material-plan:create')")
public CommonResult<Long> createMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO createReqVO) {
return success(materialPlanService.createMaterialPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料需求计划")
@PreAuthorize("@ss.hasPermission('heli:material-plan:update')")
public CommonResult<Boolean> updateMaterialPlan(@Valid @RequestBody MaterialPlanSaveReqVO updateReqVO) {
materialPlanService.updateMaterialPlan(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料需求计划")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:material-plan:delete')")
public CommonResult<Boolean> deleteMaterialPlan(@RequestParam("id") Long id) {
materialPlanService.deleteMaterialPlan(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料需求计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<MaterialPlanRespVO> getMaterialPlan(@RequestParam("id") Long id) {
MaterialPlanDO materialPlan = materialPlanService.getMaterialPlan(id);
return success(BeanUtils.toBean(materialPlan, MaterialPlanRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得物料需求计划分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan:query')")
public CommonResult<PageResult<MaterialPlanRespVO>> getMaterialPlanPage(@Valid MaterialPlanPageReqVO pageReqVO) {
PageResult<MaterialPlanDO> pageResult = materialPlanService.getMaterialPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan:export')")
@OperateLog(type = EXPORT)
public void exportMaterialPlanExcel(@Valid MaterialPlanPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MaterialPlanDO> list = materialPlanService.getMaterialPlanPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "物料需求计划.xls", "数据", MaterialPlanRespVO.class,
BeanUtils.toBean(list, MaterialPlanRespVO.class));
}
}

@ -0,0 +1,60 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPlanPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "物料计划单号")
private String projectMaterialPlanNo;
@Schema(description = "生产计划单号")
private String planNo;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "订单id")
private Long projectId;
@Schema(description = "生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
private String createTime;
}

@ -0,0 +1,75 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 物料需求计划 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialPlanRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料计划单号")
private String projectMaterialPlanNo;
@Schema(description = "生产计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("生产计划单号")
private String planNo;
@Schema(description = "项目单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目单号")
private String projectName;
@Schema(description = "订单id")
@ExcelProperty("订单id")
private Long projectId;
@Schema(description = "生产计划id")
@ExcelProperty("生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
@ExcelProperty("送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@ExcelProperty("送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
@ExcelProperty("审核人")
private Long auditor;
@Schema(description = "审核时间")
@ExcelProperty("审核时间")
private LocalDateTime auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
@ExcelProperty(value = "状态,1已保存2已送审3已审核4已打回 默认是1", converter = DictConvert.class)
@DictFormat("heli_project_material_plan_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建人")
@ExcelProperty("创建人")
private Long creator;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,45 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划新增/修改 Request VO")
@Data
public class MaterialPlanSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "物料计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String projectMaterialPlanNo;
@Schema(description = "订单id")
private Long projectId;
@Schema(description = "生产计划id")
private Long projectPlanId;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "备注")
private String description;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
import com.chanko.yunxi.mes.module.heli.service.materialplandetail.MaterialPlanDetailService;
@Tag(name = "管理后台 - 物料需求计划物料详情")
@RestController
@RequestMapping("/heli/material-plan-detail")
@Validated
public class MaterialPlanDetailController {
@Resource
private MaterialPlanDetailService materialPlanDetailService;
@PostMapping("/create")
@Operation(summary = "创建物料需求计划物料详情")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:create')")
public CommonResult<Long> createMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO createReqVO) {
return success(materialPlanDetailService.createMaterialPlanDetail(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新物料需求计划物料详情")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:update')")
public CommonResult<Boolean> updateMaterialPlanDetail(@Valid @RequestBody MaterialPlanDetailSaveReqVO updateReqVO) {
materialPlanDetailService.updateMaterialPlanDetail(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除物料需求计划物料详情")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:delete')")
public CommonResult<Boolean> deleteMaterialPlanDetail(@RequestParam("id") Long id) {
materialPlanDetailService.deleteMaterialPlanDetail(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得物料需求计划物料详情")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')")
public CommonResult<MaterialPlanDetailRespVO> getMaterialPlanDetail(@RequestParam("id") Long id) {
MaterialPlanDetailDO materialPlanDetail = materialPlanDetailService.getMaterialPlanDetail(id);
return success(BeanUtils.toBean(materialPlanDetail, MaterialPlanDetailRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得物料需求计划物料详情分页")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:query')")
public CommonResult<PageResult<MaterialPlanDetailRespVO>> getMaterialPlanDetailPage(@Valid MaterialPlanDetailPageReqVO pageReqVO) {
PageResult<MaterialPlanDetailDO> pageResult = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, MaterialPlanDetailRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出物料需求计划物料详情 Excel")
@PreAuthorize("@ss.hasPermission('heli:material-plan-detail:export')")
@OperateLog(type = EXPORT)
public void exportMaterialPlanDetailExcel(@Valid MaterialPlanDetailPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<MaterialPlanDetailDO> list = materialPlanDetailService.getMaterialPlanDetailPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "物料需求计划物料详情.xls", "数据", MaterialPlanDetailRespVO.class,
BeanUtils.toBean(list, MaterialPlanDetailRespVO.class));
}
}

@ -0,0 +1,46 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 物料需求计划物料详情分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class MaterialPlanDetailPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "物料需求采购计划id")
private Long projectMaterialPlanId;
@Schema(description = "物料id")
private Long materialId;
@Schema(description = "子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] requireArriveTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,74 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 物料需求计划物料详情 Response VO")
@Data
@ExcelIgnoreUnannotated
public class MaterialPlanDetailRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料需求采购计划id")
private Long projectMaterialPlanId;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料id")
private Long materialId;
@Schema(description = "子项目编号")
@ExcelProperty("子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
@ExcelProperty("需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
@ExcelProperty("需求到货日期")
private LocalDateTime requireArriveTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料id")
private Long matId;
@Schema(description = "备注")
@ExcelProperty("物料名称")
private String matName;
@Schema(description = "备注")
@ExcelProperty("物料编码")
private String matCode;
@Schema(description = "备注")
@ExcelProperty("物料规格型号")
private String matSpec;
@Schema(description = "备注")
@ExcelProperty("物料单位")
private String matUnit;
@Schema(description = "备注")
@ExcelProperty("物料类型")
private String matType;
}

@ -0,0 +1,40 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 物料需求计划物料详情新增/修改 Request VO")
@Data
public class MaterialPlanDetailSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "物料需求采购计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料需求采购计划id不能为空")
private Long projectMaterialPlanId;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "物料id不能为空")
private Long materialId;
@Schema(description = "子项目编号")
private Long projectSubId;
@Schema(description = "需求数量")
private BigDecimal requireAmount;
@Schema(description = "需求到货日期")
private LocalDateTime requireArriveTime;
@Schema(description = "备注")
private String description;
}

@ -99,4 +99,12 @@ public class MouldTypeController {
// 拼接数据 // 拼接数据
return success(list); return success(list);
} }
@GetMapping({"/all-no-status-simples"})
@Operation(summary = "TODO:获取无状态模块类型信息列表", description = "模块类型,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getNoStatusSimpleList() {
List<Map<String, Object>> list = mouldTypeService.getMouldTypeNoStatusSimpleList();
// 拼接数据
return success(list);
}
} }

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.service.plan.PlanService;
@Tag(name = "管理后台 - 生产计划")
@RestController
@RequestMapping("/heli/plan")
@Validated
public class PlanController {
@Resource
private PlanService planService;
@PostMapping("/create")
@Operation(summary = "创建生产计划")
@PreAuthorize("@ss.hasPermission('heli:plan:create')")
public CommonResult<Long> createPlan(@Valid @RequestBody PlanSaveReqVO createReqVO) {
return success(planService.createPlan(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划")
@PreAuthorize("@ss.hasPermission('heli:plan:update')")
public CommonResult<Boolean> updatePlan(@Valid @RequestBody PlanSaveReqVO updateReqVO) {
planService.updatePlan(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan:delete')")
public CommonResult<Boolean> deletePlan(@RequestParam("id") Long id) {
planService.deletePlan(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PlanRespVO> getPlan(@RequestParam("id") Long id) {
PlanDO plan = planService.getPlan(id);
return success(BeanUtils.toBean(plan, PlanRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PageResult<PlanRespVO>> getPlanPage(@Valid PlanPageReqVO pageReqVO) {
PageResult<PlanDO> pageResult = planService.getPlanPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanRespVO.class));
}
@GetMapping("/page-by-status")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:plan:query')")
public CommonResult<PageResult<PlanRespVO>> getPlanPageByStatus(@Valid PlanPageReqVO pageReqVO) {
PageResult<PlanDO> pageResult = planService.getPlanPageByStatus(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划 Excel")
@PreAuthorize("@ss.hasPermission('heli:plan:export')")
@OperateLog(type = EXPORT)
public void exportPlanExcel(@Valid PlanPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanDO> list = planService.getPlanPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划.xls", "数据", PlanRespVO.class,
BeanUtils.toBean(list, PlanRespVO.class));
}
}

@ -0,0 +1,96 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一", example = "15769")
private Long id;
@Schema(description = "计划单号")
private String planNo;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String businessManName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "业务员")
private String customerName;
@Schema(description = "业务线")
private String businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "项目负责人")
private String projectOwner;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwner;
@Schema(description = "工艺开始日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] craftStartDate;
@Schema(description = "工艺结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] craftEndDate;
@Schema(description = "编辑人")
private String editor;
@Schema(description = "编辑日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] editorDate;
@Schema(description = "审核人")
private String auditor;
@Schema(description = "审核日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditDate;
@Schema(description = "批准人")
private String approver;
@Schema(description = "批准日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] approveDate;
@Schema(description = "备注", example = "随便")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
private Integer status;
@Schema(description = "项目变更次数")
private Integer changeNum;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,139 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 生产计划 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "15769")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计划单号")
private String planNo;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28157")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "项目负责人")
@ExcelProperty("项目负责人")
private Long projectOwner;
@Schema(description = "项目编码")
@ExcelProperty("项目编码")
private String projectCode;
@Schema(description = "客户名称")
@ExcelProperty("客户名称")
private String customerName;
@Schema(description = "项目名称")
@ExcelProperty("项目名称")
private String projectName;
@Schema(description = "业务员")
@ExcelProperty("业务员")
private String businessManName;
@Schema(description = "项目开始日期")
@ExcelProperty("项目开始日期")
private LocalDateTime projectStartTime;
@Schema(description = "项目结束日期")
@ExcelProperty("项目结束日期")
private LocalDateTime projectEndTime;
@Schema(description = "业务线")
@ExcelProperty("业务线")
private String businessLine;
@Schema(description = "性质")
@ExcelProperty("性质")
private Integer property;
@Schema(description = "是否已变更")
@ExcelProperty("是否已变更")
private Integer hasAlter;
@Schema(description = "是否紧急")
@ExcelProperty("是否紧急")
private Integer isUrgency;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
@ExcelProperty(value = "是否需要工艺:1表示需要0表示不需要", converter = DictConvert.class)
@DictFormat("heli_common_is_or_not") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer hasCraft;
@Schema(description = "工艺负责人")
@ExcelProperty("工艺负责人")
private Long craftOwner;
@Schema(description = "工艺开始日期")
@ExcelProperty("工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
@ExcelProperty("工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
@ExcelProperty("工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
private String craftContent;
@Schema(description = "编辑人")
@ExcelProperty("编辑人")
private Long editor;
@Schema(description = "编辑日期")
@ExcelProperty("编辑日期")
private LocalDateTime editorDate;
@Schema(description = "审核人")
@ExcelProperty("审核人")
private Long auditor;
@Schema(description = "审核日期")
@ExcelProperty("审核日期")
private LocalDateTime auditDate;
@Schema(description = "批准人")
@ExcelProperty("批准人")
private Long approver;
@Schema(description = "批准日期")
@ExcelProperty("批准日期")
private LocalDateTime approveDate;
@Schema(description = "备注", example = "随便")
@ExcelProperty("备注")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
@ExcelProperty("状态,1未开始2生产中3已完成4已终止 默认是1")
private Integer status;
@Schema(description = "项目变更次数")
@ExcelProperty("项目变更次数")
private Integer changeNum;
@Schema(description = "项目变更日期")
@ExcelProperty("项目变更日期")
private LocalDateTime changeLastDate;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,70 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划新增/修改 Request VO")
@Data
public class PlanSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "15769")
private Long id;
@Schema(description = "计划单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String planNo;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28157")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "项目负责人")
private String projectOwner;
@Schema(description = "是否需要工艺:1表示需要0表示不需要")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwner;
@Schema(description = "工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "工艺流程数组信息[{'id':1,'sdate':'','edate':'','owner':'','description':''}]")
private String craftContent;
@Schema(description = "编辑人")
private String editor;
@Schema(description = "编辑日期")
private LocalDateTime editorDate;
@Schema(description = "审核人")
private String auditor;
@Schema(description = "审核日期")
private LocalDateTime auditDate;
@Schema(description = "批准人")
private String approver;
@Schema(description = "批准日期")
private LocalDateTime approveDate;
@Schema(description = "备注", example = "随便")
private String description;
@Schema(description = "状态,1未开始2生产中3已完成4已终止 默认是1", example = "2")
private Boolean status;
@Schema(description = "项目变更次数")
private Integer changeNum;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.service.plansub.PlanSubService;
@Tag(name = "管理后台 - 生产计划子项目")
@RestController
@RequestMapping("/heli/plan-sub")
@Validated
public class PlanSubController {
@Resource
private PlanSubService planSubService;
@PostMapping("/create")
@Operation(summary = "创建生产计划子项目")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:create')")
public CommonResult<Long> createPlanSub(@Valid @RequestBody PlanSubSaveReqVO createReqVO) {
return success(planSubService.createPlanSub(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新生产计划子项目")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:update')")
public CommonResult<Boolean> updatePlanSub(@Valid @RequestBody PlanSubSaveReqVO updateReqVO) {
planSubService.updatePlanSub(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除生产计划子项目")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:plan-sub:delete')")
public CommonResult<Boolean> deletePlanSub(@RequestParam("id") Long id) {
planSubService.deletePlanSub(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得生产计划子项目")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:query')")
public CommonResult<PlanSubRespVO> getPlanSub(@RequestParam("id") Long id) {
PlanSubDO planSub = planSubService.getPlanSub(id);
return success(BeanUtils.toBean(planSub, PlanSubRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得生产计划子项目分页")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:query')")
public CommonResult<PageResult<PlanSubRespVO>> getPlanSubPage(@Valid PlanSubPageReqVO pageReqVO) {
PageResult<PlanSubDO> pageResult = planSubService.getPlanSubPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PlanSubRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出生产计划子项目 Excel")
@PreAuthorize("@ss.hasPermission('heli:plan-sub:export')")
@OperateLog(type = EXPORT)
public void exportPlanSubExcel(@Valid PlanSubPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PlanSubDO> list = planSubService.getPlanSubPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "生产计划子项目.xls", "数据", PlanSubRespVO.class,
BeanUtils.toBean(list, PlanSubRespVO.class));
}
}

@ -0,0 +1,61 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 生产计划子项目分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PlanSubPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "计划id")
private Long projectPlanId;
@Schema(description = "项目id")
private Long projectId;
@Schema(description = "子项目id")
private Long projectSubId;
@Schema(description = "模具类型id")
private Long mouldId;
@Schema(description = "设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] blankDate;
@Schema(description = "毛坯负责人")
private String blankOwner;
@Schema(description = "2D结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] twoDimDate;
@Schema(description = "2D负责人")
private String twoDimOwner;
@Schema(description = "3D结束日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] threeDimDate;
@Schema(description = "3D负责人")
private String threeDimOwner;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,77 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 生产计划子项目 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PlanSubRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("计划id")
private Long projectPlanId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "子项目简称")
@ExcelProperty("子项目简称")
private String projectSubShortName;
@Schema(description = "子项目编码")
@ExcelProperty("子项目编码")
private String projectSubCode;
@Schema(description = "模具类型id")
@ExcelProperty("模具类型id")
private Long mouldId;
@Schema(description = "设备id")
@ExcelProperty("设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
@ExcelProperty("毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人")
@ExcelProperty("毛坯负责人")
private Long blankOwner;
@Schema(description = "2D结束日期")
@ExcelProperty("2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人")
@ExcelProperty("2D负责人")
private Long twoDimOwner;
@Schema(description = "3D结束日期")
@ExcelProperty("3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人")
@ExcelProperty("3D负责人")
private Long threeDimOwner;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,58 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 生产计划子项目新增/修改 Request VO")
@Data
public class PlanSubSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "计划id", requiredMode = Schema.RequiredMode.REQUIRED)
private Long projectPlanId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id")
private Long projectSubId;
@Schema(description = "子项目简称")
private String projectSubShortName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "模具类型id")
private Long mouldId;
@Schema(description = "设备id")
private Long equipId;
@Schema(description = "毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人")
private String blankOwner;
@Schema(description = "2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人")
private String twoDimOwner;
@Schema(description = "3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人")
private String threeDimOwner;
}

@ -0,0 +1,136 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomRespVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
@Tag(name = "管理后台 - 工艺bom")
@RestController
@RequestMapping("/heli/process-bom")
@Validated
public class ProcessBomController {
@Resource
private ProcessBomService processBomService;
@Resource
private OperateLogFrameworkService operateLogFrameworkService;
@Resource
private HttpServletRequest request;
@PostMapping("/create")
@Operation(summary = "创建工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:create')")
public CommonResult<Long> createProcessBom(@Valid @RequestBody ProcessBomSaveReqVO createReqVO) {
return success(processBomService.createProcessBom(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:update')")
public CommonResult<Boolean> updateProcessBom(@Valid @RequestBody ProcessBomSaveReqVO updateReqVO) {
processBomService.updateProcessBom(updateReqVO);
return success(true);
}
@PostMapping("/operate")
@Operation(summary = "操作工艺bom")
@PreAuthorize("@ss.hasPermission('heli:process-bom:update')")
@OperateLog(enable = false)
@Transactional(rollbackFor = Exception.class)
public CommonResult<Long> operateProcessBom(@Valid @RequestBody ProcessBomSaveReqVO operateReqVO) {
LocalDateTime startTime = LocalDateTime.now();
processBomService.operateProcessBom(operateReqVO);
// 手动记录日志
operateLogFrameworkService.createOperateLog(request,
startTime,
BusinesTypeEnum.PROCESS_BOM.name(),
operateReqVO.getId(),
OperateTypeEnum.valueOf(operateReqVO.getActive()).getType(),
operateReqVO.getActiveOpinion());
return success(operateReqVO.getId());
}
@DeleteMapping("/delete")
@Operation(summary = "删除工艺bom")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:process-bom:delete')")
public CommonResult<Boolean> deleteProcessBom(@RequestParam("id") Long id) {
processBomService.deleteProcessBom(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得工艺bom")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<ProcessBomRespVO> getProcessBom(@RequestParam("id") Long id) {
ProcessBomDO processBom = processBomService.getProcessBom(id);
return success(BeanUtils.toBean(processBom, ProcessBomRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得工艺bom分页")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<PageResult<ProcessBomRespVO>> getProcessBomPage(@Valid ProcessBomPageReqVO pageReqVO) {
PageResult<ProcessBomDO> pageResult = processBomService.getProcessBomPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, ProcessBomRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出工艺bom Excel")
@PreAuthorize("@ss.hasPermission('heli:process-bom:export')")
@OperateLog(type = EXPORT)
public void exportProcessBomExcel(@Valid ProcessBomPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<ProcessBomDO> list = processBomService.getProcessBomPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "工艺bom.xls", "数据", ProcessBomRespVO.class,
BeanUtils.toBean(list, ProcessBomRespVO.class));
}
// ==================== 子表工艺bom明细 ====================
@GetMapping("/process-bom-detail/list-by-bom-id")
@Operation(summary = "获得工艺bom明细列表")
@Parameter(name = "bomId", description = "bom id")
@PreAuthorize("@ss.hasPermission('heli:process-bom:query')")
public CommonResult<List<ProcessBomDetailDO>> getProcessBomDetailListByBomId(@RequestParam("bomId") Long bomId) {
return success(processBomService.getProcessBomDetailListByBomId(bomId));
}
}

@ -0,0 +1,64 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 工艺bom分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class ProcessBomPageReqVO extends PageParam {
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "生产计划id", example = "19403")
private Long planId;
@Schema(description = "项目id", example = "32751")
private Long projectId;
@Schema(description = "子项目id", example = "12526")
private Long projectSubId;
@Schema(description = "子项目名称", example = "张三")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", example = "2")
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", example = "2")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
@Schema(description = "生产计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
}

@ -0,0 +1,79 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 工艺bom Response VO")
@Data
@ExcelIgnoreUnannotated
public class ProcessBomRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18511")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "编号,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("编号,唯一")
private String code;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19403")
@ExcelProperty("生产计划id")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32751")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12526")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "子项目名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三")
@ExcelProperty("子项目名称")
private String projectSubName;
@Schema(description = "子项目编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("bom版本号")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "bom状态 已保存|已提交 1|2", converter = DictConvert.class)
@DictFormat("heli_bom_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
@ExcelProperty("备注")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty("状态,1表示正常2表示禁用")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
}

@ -0,0 +1,63 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
@Schema(description = "管理后台 - 工艺bom新增/修改 Request VO")
@Data
public class ProcessBomSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "18511")
private Long id;
@Schema(description = "编号")
private String code;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19403")
@NotNull(message = "生产计划id不能为空")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "32751")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "12526")
@NotNull(message = "子项目id不能为空")
private Long projectSubId;
@Schema(description = "子项目名称", example = "张三")
private String projectSubName;
@Schema(description = "子项目编号")
private String projectSubCode;
@Schema(description = "bom版本号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "bom版本号不能为空")
private Integer version;
@Schema(description = "bom状态 已保存|已提交 1|2", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "bom状态 已保存|已提交 1|2不能为空")
private Integer bomStatus;
@Schema(description = "备注", example = "你猜")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "工艺bom明细列表")
private List<ProcessBomDetailDO> processBomDetails;
@Schema(description = "操作类型")
@NotBlank(message = "操作类型不能为空")
private String active;
@Schema(description = "操作意见")
private String activeOpinion;
}

@ -1,5 +1,6 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign;
import com.chanko.yunxi.mes.module.heli.vo.WarningMessageVO;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -49,9 +50,8 @@ public class ProcessDesignController {
@PutMapping("/update") @PutMapping("/update")
@Operation(summary = "更新工艺设计") @Operation(summary = "更新工艺设计")
@PreAuthorize("@ss.hasPermission('heli:process-design:update')") @PreAuthorize("@ss.hasPermission('heli:process-design:update')")
public CommonResult<Boolean> updateProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO updateReqVO) { public CommonResult<Long> updateProcessDesign(@Valid @RequestBody ProcessDesignSaveReqVO updateReqVO) {
processDesignService.updateProcessDesign(updateReqVO); return success(processDesignService.updateProcessDesign(updateReqVO));
return success(true);
} }
@DeleteMapping("/delete") @DeleteMapping("/delete")
@ -103,4 +103,11 @@ public class ProcessDesignController {
return success(processDesignService.getProcessDesignProgressListByProcessDesignId(processDesignId)); return success(processDesignService.getProcessDesignProgressListByProcessDesignId(processDesignId));
} }
@GetMapping("/warnings")
@Operation(summary = "获得工艺设计预警信息")
@PreAuthorize("@ss.hasPermission('heli:process-design:query')")
public CommonResult<WarningMessageVO> getWarnings() {
return success(processDesignService.getWarnings());
}
} }

@ -1,11 +1,14 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam; import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ -18,13 +21,7 @@ public class ProcessDesignPageReqVO extends PageParam {
@Schema(description = "生产计划id", example = "87") @Schema(description = "生产计划id", example = "87")
private Long planId; private Long planId;
@Schema(description = "销售订单id", example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", example = "1")
private Long saleOrderId;
@Schema(description = "销售订单子项id", example = "7018")
private Long saleOrderSubId;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", example = "1")
private String processDesignType; private String processDesignType;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ -37,4 +34,58 @@ public class ProcessDesignPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "项目id", example = "527")
private Long projectId;
@Schema(description = "子项目id", example = "28809")
private Long projectSubId;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "所属业务线")
private Integer businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "工艺负责人")
private String craftOwnerName;
@Schema(description = "3D负责人")
private String threeDimOwnerName;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "2D负责人")
private String twoDimOwnerName;
@Schema(description = "毛坯负责人")
private String blankOwnerName;
@Schema(description = "设计类型列表")
private List<String> processDesignTypeList;
@Schema(description = "是否总览")
private Boolean isOverview = false;
@Schema(description = "子项目id列表")
private List<Long> projectSubIdList;
@Schema(description = "责任人")
private Long owner;
@Schema(description = "未完成设计")
private Boolean uncompletedDesign;
} }

@ -1,12 +1,17 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo; package com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.*; import java.util.*;
import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*; import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 工艺设计 Response VO") @Schema(description = "管理后台 - 工艺设计 Response VO")
@Data @Data
@ -21,16 +26,9 @@ public class ProcessDesignRespVO {
@ExcelProperty("生产计划id") @ExcelProperty("生产计划id")
private Long planId; private Long planId;
@Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("销售订单id") @ExcelProperty(value = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", converter = DictConvert.class)
private Long saleOrderId; @DictFormat("heli_process_design_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
@Schema(description = "销售订单子项id", example = "7018")
@ExcelProperty("销售订单子项id")
private Long saleOrderSubId;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT")
private String processDesignType; private String processDesignType;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ -45,4 +43,84 @@ public class ProcessDesignRespVO {
@ExcelProperty("创建时间") @ExcelProperty("创建时间")
private LocalDateTime createTime; private LocalDateTime createTime;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "527")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "计划单号")
private String planCode;
@Schema(description = "项目编号")
private String projectCode;
@Schema(description = "客户名称")
private String customerName;
@Schema(description = "项目名称")
private String projectName;
@Schema(description = "项目负责人")
private String projectOwnerName;
@Schema(description = "所属业务线")
private String businessLine;
@Schema(description = "性质")
private Integer property;
@Schema(description = "是否紧急")
private Integer isUrgency;
@Schema(description = "是否需要工艺")
private Integer hasCraft;
@Schema(description = "工艺负责人")
private String craftOwnerName;
@Schema(description = "工艺开始日期")
private LocalDateTime craftStartDate;
@Schema(description = "工艺结束日期")
private LocalDateTime craftEndDate;
@Schema(description = "毛坯结束日期")
private LocalDateTime blankDate;
@Schema(description = "毛坯负责人名称")
private String blankOwnerName;
@Schema(description = "毛坯最新进度")
private BigDecimal progressBlank;
@Schema(description = "2D结束日期")
private LocalDateTime twoDimDate;
@Schema(description = "2D负责人名称")
private String twoDimOwnerName;
@Schema(description = "2D最新进度")
private BigDecimal progress2d;
@Schema(description = "3D结束日期")
private LocalDateTime threeDimDate;
@Schema(description = "3D负责人名称")
private String threeDimOwnerName;
@Schema(description = "3D最新进度")
private BigDecimal progress3d;
@Schema(description = "子项目名称")
private String projectSubName;
@Schema(description = "子项目编码")
private String projectSubCode;
@Schema(description = "最新进度")
private BigDecimal progress;
} }

@ -18,15 +18,8 @@ public class ProcessDesignSaveReqVO {
@NotNull(message = "生产计划id不能为空") @NotNull(message = "生产计划id不能为空")
private Long planId; private Long planId;
@Schema(description = "销售订单id", requiredMode = Schema.RequiredMode.REQUIRED, example = "27757") @Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "销售订单id不能为空") @NotEmpty(message = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK不能为空")
private Long saleOrderId;
@Schema(description = "销售订单子项id", example = "7018")
private Long saleOrderSubId;
@Schema(description = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "设计类型 铸造工艺|3D图纸|2D图纸|毛坯图纸 FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT不能为空")
private String processDesignType; private String processDesignType;
@Schema(description = "备注", example = "随便") @Schema(description = "备注", example = "随便")
@ -36,7 +29,14 @@ public class ProcessDesignSaveReqVO {
@NotNull(message = "状态,1表示正常2表示禁用不能为空") @NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status; private Integer status;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "527")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id", example = "28809")
private Long projectSubId;
@Schema(description = "工艺设计进度列表") @Schema(description = "工艺设计进度列表")
private List<ProcessDesignProgressDO> processDesignProgresss; private List<ProcessDesignProgressDO> processDesignProgressList;
} }

@ -14,6 +14,7 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.projectorder.vo.Project
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum; import com.chanko.yunxi.mes.module.heli.enums.BusinesTypeEnum;
import com.chanko.yunxi.mes.module.heli.manager.CrossOrderManager;
import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService; import com.chanko.yunxi.mes.module.heli.service.projectorder.ProjectOrderService;
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;
@ -49,6 +50,9 @@ public class ProjectOrderController {
@Resource @Resource
private HttpServletRequest request; private HttpServletRequest request;
@Resource
private CrossOrderManager crossOrderManager;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建项目订单") @Operation(summary = "创建项目订单")
@PreAuthorize("@ss.hasPermission('heli:project-order:create')") @PreAuthorize("@ss.hasPermission('heli:project-order:create')")
@ -84,7 +88,13 @@ public class ProjectOrderController {
// 批准、终止记录快照 // 批准、终止记录快照
switch (OperateTypeEnum.valueOf(operateReqVO.getActive())){ switch (OperateTypeEnum.valueOf(operateReqVO.getActive())){
case APPROVE: case APPROVE:
// 订单批准时创建或者更新生产计划数据
crossOrderManager.generatePlan(operateReqVO.getId());
projectOrderService.createProjectOrderSnapshot(operateReqVO);
break;
case TERMINATE: case TERMINATE:
// 订单终止时更新生产计划状态
crossOrderManager.updatePlanStatusToTerminate(operateReqVO.getId());
projectOrderService.createProjectOrderSnapshot(operateReqVO); projectOrderService.createProjectOrderSnapshot(operateReqVO);
break; break;
} }

@ -0,0 +1,135 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanRespVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.math.BigDecimal;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseorder.PurchaseOrderService;
@Tag(name = "管理后台 - 采购订单")
@RestController
@RequestMapping("/heli/purchase-order")
@Validated
public class PurchaseOrderController {
@Resource
private PurchaseOrderService purchaseOrderService;
@PostMapping("/create")
@Operation(summary = "创建采购订单")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:create')")
public CommonResult<Long> createPurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO createReqVO) {
return success(purchaseOrderService.createPurchaseOrder(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购订单")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:update')")
public CommonResult<Boolean> updatePurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO updateReqVO) {
purchaseOrderService.updatePurchaseOrder(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购订单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order:delete')")
public CommonResult<Boolean> deletePurchaseOrder(@RequestParam("id") Long id) {
purchaseOrderService.deletePurchaseOrder(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购订单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PurchaseOrderRespVO> getPurchaseOrder(@RequestParam("id") Long id) {
PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id);
return success(BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购订单分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) {
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class));
}
@GetMapping("/page-by-status")
@Operation(summary = "获得生产计划分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:query')")
public CommonResult<PageResult<PurchaseOrderRespVO>> getPurchaseOrderPageByStatus(@Valid PurchaseOrderPageReqVO pageReqVO) {
PageResult<PurchaseOrderDO> pageResult = purchaseOrderService.getPurchaseOrderPageByStatus(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购订单 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderExcel(@Valid PurchaseOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderDO> list = purchaseOrderService.getPurchaseOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
@GetMapping("/export-excel-with-tax")
@Operation(summary = "导出采购订单 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderExcelWithTax(@Valid PurchaseOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderDO> list = purchaseOrderService.getPurchaseOrderPageWithTax(pageReqVO).getList();
for(PurchaseOrderDO item : list) {
if(item.getEstimatedPrice() != null && item.getTaxRatio() !=null) {
item.setEstimatedPrice(item.getEstimatedPrice().multiply(BigDecimal.valueOf(item.getTaxRatio())).divide(BigDecimal.valueOf(100)));
}else{
item.setEstimatedPrice(BigDecimal.ZERO);
}
if(item.getActualPrice() != null && item.getTaxRatio() !=null) {
item.setActualPrice(item.getActualPrice().multiply(BigDecimal.valueOf(item.getTaxRatio())).divide(BigDecimal.valueOf(100)));
}else{
item.setActualPrice(BigDecimal.ZERO);
}
}
// 导出 Excel
ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
}

@ -0,0 +1,87 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 采购订单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PurchaseOrderPageReqVO extends PageParam {
@Schema(description = "自增字段,唯一")
private Long id;
@Schema(description = "选中采购编号")
private List<Long> ids;
@Schema(description = "采购单号")
private String purchaseNo;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "供应商名称")
private String supplierName;
@Schema(description = "采购合同号")
private String contractNo;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
private Integer purchaseType;
@Schema(description = "供应商id")
private Long projectMaterialPlanId;
@Schema(description = "供应商id")
private Long materialPlanNo;
@Schema(description = "采购物类型1物料2加工件")
private Integer goodsType;
@Schema(description = "结算币种")
private Integer currencyType;
@Schema(description = "税率")
private Integer taxRatio;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] auditTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建者")
private String creator;
@Schema(description = "创建时间")
private String createTime;
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
import com.chanko.yunxi.mes.framework.excel.core.convert.TimestampToDateConvert;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 采购订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PurchaseOrderRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购单号")
private String purchaseNo;
@Schema(description = "创建时间")
@ExcelProperty(value="单据日期", converter = TimestampToDateConvert.class)
private LocalDateTime createTime;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "供应商名称")
@ExcelProperty("供应商")
private String supplierName;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
@ExcelProperty(value = "采购单类型", converter = DictConvert.class)
@DictFormat("heli_project_purchase_order_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer purchaseType;
@Schema(description = "物料需求计划单号")
@ExcelProperty("物料需求计划单号")
private String materialPlanNo;
@Schema(description = "采购物类型1物料2加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty(value = "采购物料类型", converter = DictConvert.class)
@DictFormat("heli_project_purchase_goods_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer goodsType;
@Schema(description = "采购合同号")
@ExcelProperty("采购合同号")
private String contractNo;
@Schema(description = "物料需求计划id")
private Long projectMaterialPlanId;
@Schema(description = "结算币种")
@ExcelProperty(value ="结算币种",converter = DictConvert.class)
@DictFormat("heli_currency")
private Integer currencyType;
@Schema(description = "暂估价金额")
@ExcelProperty("暂估价金额(元)")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
@ExcelProperty("实际价金额(元)")
private BigDecimal actualPrice;
@Schema(description = "税率")
@ExcelProperty("税率(%)")
private Integer taxRatio;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
@ExcelProperty(value = "单据状态", converter = DictConvert.class)
@DictFormat("heli_purchase_order_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建者")
private String creator;
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 采购订单新增/修改 Request VO")
@Data
public class PurchaseOrderSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单号", requiredMode = Schema.RequiredMode.REQUIRED)
private String purchaseNo;
@Schema(description = "供应商id")
private Long supplierId;
@Schema(description = "采购合同号")
private String contractNo;
@Schema(description = "采购单类型1按物料需求计划采购2备库采购")
private Integer purchaseType;
@Schema(description = "供应商id")
private Long projectMaterialPlanId;
@Schema(description = "采购物类型1物料2加工件", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "采购物类型1物料2加工件不能为空")
private Integer goodsType;
@Schema(description = "结算币种")
private Integer currencyType;
@Schema(description = "税率")
private Integer taxRatio;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "状态,1已保存2已送审3已审核4已打回 默认是1")
private Integer status;
@Schema(description = "送审人")
private Long submitUserId;
@Schema(description = "送审时间")
private LocalDateTime submitTime;
@Schema(description = "审核人")
private Long auditor;
@Schema(description = "审核时间")
private LocalDateTime auditTime;
@Schema(description = "备注")
private String description;
}

@ -0,0 +1,95 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermaterial.PurchaseOrderMaterialDO;
import com.chanko.yunxi.mes.module.heli.service.purchaseordermaterial.PurchaseOrderMaterialService;
@Tag(name = "管理后台 - 采购单物料")
@RestController
@RequestMapping("/heli/purchase-order-material")
@Validated
public class PurchaseOrderMaterialController {
@Resource
private PurchaseOrderMaterialService purchaseOrderMaterialService;
@PostMapping("/create")
@Operation(summary = "创建采购单物料")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:create')")
public CommonResult<Long> createPurchaseOrderMaterial(@Valid @RequestBody PurchaseOrderMaterialSaveReqVO createReqVO) {
return success(purchaseOrderMaterialService.createPurchaseOrderMaterial(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新采购单物料")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:update')")
public CommonResult<Boolean> updatePurchaseOrderMaterial(@Valid @RequestBody PurchaseOrderMaterialSaveReqVO updateReqVO) {
purchaseOrderMaterialService.updatePurchaseOrderMaterial(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除采购单物料")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:delete')")
public CommonResult<Boolean> deletePurchaseOrderMaterial(@RequestParam("id") Long id) {
purchaseOrderMaterialService.deletePurchaseOrderMaterial(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得采购单物料")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:query')")
public CommonResult<PurchaseOrderMaterialRespVO> getPurchaseOrderMaterial(@RequestParam("id") Long id) {
PurchaseOrderMaterialDO purchaseOrderMaterial = purchaseOrderMaterialService.getPurchaseOrderMaterial(id);
return success(BeanUtils.toBean(purchaseOrderMaterial, PurchaseOrderMaterialRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得采购单物料分页")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:query')")
public CommonResult<PageResult<PurchaseOrderMaterialRespVO>> getPurchaseOrderMaterialPage(@Valid PurchaseOrderMaterialPageReqVO pageReqVO) {
PageResult<PurchaseOrderMaterialDO> pageResult = purchaseOrderMaterialService.getPurchaseOrderMaterialPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, PurchaseOrderMaterialRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出采购单物料 Excel")
@PreAuthorize("@ss.hasPermission('heli:purchase-order-material:export')")
@OperateLog(type = EXPORT)
public void exportPurchaseOrderMaterialExcel(@Valid PurchaseOrderMaterialPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<PurchaseOrderMaterialDO> list = purchaseOrderMaterialService.getPurchaseOrderMaterialPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "采购单物料.xls", "数据", PurchaseOrderMaterialRespVO.class,
BeanUtils.toBean(list, PurchaseOrderMaterialRespVO.class));
}
}

@ -0,0 +1,45 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 采购单物料分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class PurchaseOrderMaterialPageReqVO extends PageParam {
@Schema(description = "采购单编号")
private Long purchaseOrderId;
@Schema(description = "物料id")
private Long materialId;
@Schema(description = "采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] arriveTime;
@Schema(description = "备注")
private String description;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,78 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@Schema(description = "管理后台 - 采购单物料 Response VO")
@Data
@ExcelIgnoreUnannotated
public class PurchaseOrderMaterialRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("采购单编号")
private Long purchaseOrderId;
@Schema(description = "物料id")
@ExcelProperty("物料id")
private Long materialId;
@Schema(description = "采购数量")
@ExcelProperty("采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "暂估价金额")
@ExcelProperty("暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
@ExcelProperty("实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
@ExcelProperty("预计到期日期")
private LocalDateTime arriveTime;
@Schema(description = "备注")
@ExcelProperty("备注")
private String description;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
@Schema(description = "物料id", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("物料id")
private Long matId;
@Schema(description = "备注")
@ExcelProperty("物料名称")
private String matName;
@Schema(description = "备注")
@ExcelProperty("物料编码")
private String matCode;
@Schema(description = "备注")
@ExcelProperty("物料规格型号")
private String matSpec;
@Schema(description = "备注")
@ExcelProperty("物料单位")
private String matUnit;
@Schema(description = "备注")
@ExcelProperty("物料类型")
private String matType;
}

@ -0,0 +1,41 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 采购单物料新增/修改 Request VO")
@Data
public class PurchaseOrderMaterialSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED)
private Long id;
@Schema(description = "采购单编号", requiredMode = Schema.RequiredMode.REQUIRED)
@NotNull(message = "采购单编号不能为空")
private Long purchaseOrderId;
@Schema(description = "物料id")
private Long materialId;
@Schema(description = "采购数量")
private BigDecimal purchaseAmount;
@Schema(description = "暂估价金额")
private BigDecimal estimatedPrice;
@Schema(description = "实际价金额")
private BigDecimal actualPrice;
@Schema(description = "预计到期日期")
private LocalDateTime arriveTime;
@Schema(description = "备注")
private String description;
}

@ -92,4 +92,18 @@ public class SupplierController {
BeanUtils.toBean(list, SupplierRespVO.class)); BeanUtils.toBean(list, SupplierRespVO.class));
} }
@GetMapping({"/all-simples"})
@Operation(summary = "TODO:获取供应商精简信息列表", description = "只包含被开启的供应商,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getSimpleList() {
List<Map<String, Object>> list = supplierService.getSimpleList();
// 拼接数据
return success(list);
}
@GetMapping({"/all-no-status-simples"})
@Operation(summary = "TODO:获取供应商精简信息列表", description = "全部供应商,主要用于前端的下拉选项")
public CommonResult<List<Map<String, Object>> > getSimpleNoStatusList() {
List<Map<String, Object>> list = supplierService.getSimpleNoStatusList();
// 拼接数据
return success(list);
}
} }

@ -0,0 +1,106 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.CommonResult;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import static com.chanko.yunxi.mes.framework.common.pojo.CommonResult.success;
import com.chanko.yunxi.mes.framework.excel.core.util.ExcelUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.annotations.OperateLog;
import static com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetail.TaskDispatchDetailDO;
import com.chanko.yunxi.mes.module.heli.service.taskdispatch.TaskDispatchService;
@Tag(name = "管理后台 - 派工单")
@RestController
@RequestMapping("/heli/task-dispatch")
@Validated
public class TaskDispatchController {
@Resource
private TaskDispatchService taskDispatchService;
@PostMapping("/create")
@Operation(summary = "创建派工单")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:create')")
public CommonResult<Long> createTaskDispatch(@Valid @RequestBody TaskDispatchSaveReqVO createReqVO) {
return success(taskDispatchService.createTaskDispatch(createReqVO));
}
@PutMapping("/update")
@Operation(summary = "更新派工单")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:update')")
public CommonResult<Boolean> updateTaskDispatch(@Valid @RequestBody TaskDispatchSaveReqVO updateReqVO) {
taskDispatchService.updateTaskDispatch(updateReqVO);
return success(true);
}
@DeleteMapping("/delete")
@Operation(summary = "删除派工单")
@Parameter(name = "id", description = "编号", required = true)
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:delete')")
public CommonResult<Boolean> deleteTaskDispatch(@RequestParam("id") Long id) {
taskDispatchService.deleteTaskDispatch(id);
return success(true);
}
@GetMapping("/get")
@Operation(summary = "获得派工单")
@Parameter(name = "id", description = "编号", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<TaskDispatchRespVO> getTaskDispatch(@RequestParam("id") Long id) {
TaskDispatchDO taskDispatch = taskDispatchService.getTaskDispatch(id);
return success(BeanUtils.toBean(taskDispatch, TaskDispatchRespVO.class));
}
@GetMapping("/page")
@Operation(summary = "获得派工单分页")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<PageResult<TaskDispatchRespVO>> getTaskDispatchPage(@Valid TaskDispatchPageReqVO pageReqVO) {
PageResult<TaskDispatchDO> pageResult = taskDispatchService.getTaskDispatchPage(pageReqVO);
return success(BeanUtils.toBean(pageResult, TaskDispatchRespVO.class));
}
@GetMapping("/export-excel")
@Operation(summary = "导出派工单 Excel")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:export')")
@OperateLog(type = EXPORT)
public void exportTaskDispatchExcel(@Valid TaskDispatchPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<TaskDispatchDO> list = taskDispatchService.getTaskDispatchPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "派工单.xls", "数据", TaskDispatchRespVO.class,
BeanUtils.toBean(list, TaskDispatchRespVO.class));
}
// ==================== 子表(派工明细) ====================
@GetMapping("/task-dispatch-detail/list-by-dispatch-id")
@Operation(summary = "获得派工明细列表")
@Parameter(name = "dispatchId", description = "派工单id")
@PreAuthorize("@ss.hasPermission('heli:task-dispatch:query')")
public CommonResult<List<TaskDispatchDetailDO>> getTaskDispatchDetailListByDispatchId(@RequestParam("dispatchId") Long dispatchId) {
return success(taskDispatchService.getTaskDispatchDetailListByDispatchId(dispatchId));
}
}

@ -0,0 +1,52 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo;
import lombok.*;
import java.util.*;
import io.swagger.v3.oas.annotations.media.Schema;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import static com.chanko.yunxi.mes.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@Schema(description = "管理后台 - 派工单分页 Request VO")
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class TaskDispatchPageReqVO extends PageParam {
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE", example = "1")
private String dispatchType;
@Schema(description = "生产任务id", example = "8538")
private Long taskId;
@Schema(description = "生产计划id", example = "3259")
private Long planId;
@Schema(description = "项目id", example = "19610")
private Long projectId;
@Schema(description = "子项目id", example = "21985")
private Long projectSubId;
@Schema(description = "bom明细id", example = "15969")
private Long bomDetailId;
@Schema(description = "派工状态 已保存|已提交|已终止 1|2|3", example = "2")
private Integer dispatchStatus;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", example = "1")
private Integer status;
@Schema(description = "创建时间")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime;
}

@ -0,0 +1,68 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.util.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import com.chanko.yunxi.mes.framework.excel.core.annotations.DictFormat;
import com.chanko.yunxi.mes.framework.excel.core.convert.DictConvert;
@Schema(description = "管理后台 - 派工单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TaskDispatchRespVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "26723")
@ExcelProperty("自增字段,唯一")
private Long id;
@Schema(description = "编号,唯一")
@ExcelProperty("编号,唯一")
private String code;
@Schema(description = "派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty(value = "派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE", converter = DictConvert.class)
@DictFormat("heli_dispatch_type") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private String dispatchType;
@Schema(description = "生产任务id", example = "8538")
@ExcelProperty("生产任务id")
private Long taskId;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3259")
@ExcelProperty("生产计划id")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19610")
@ExcelProperty("项目id")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21985")
@ExcelProperty("子项目id")
private Long projectSubId;
@Schema(description = "bom明细id", example = "15969")
@ExcelProperty("bom明细id")
private Long bomDetailId;
@Schema(description = "派工状态 已保存|已提交|已终止 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@ExcelProperty(value = "派工状态 已保存|已提交|已终止 1|2|3", converter = DictConvert.class)
@DictFormat("heli_dispatch_status") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中
private Integer dispatchStatus;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@ExcelProperty("状态,1表示正常2表示禁用")
private Integer status;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
@ExcelProperty("创建时间")
private LocalDateTime createTime;
}

@ -0,0 +1,56 @@
package com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetail.TaskDispatchDetailDO;
@Schema(description = "管理后台 - 派工单新增/修改 Request VO")
@Data
public class TaskDispatchSaveReqVO {
@Schema(description = "自增字段,唯一", requiredMode = Schema.RequiredMode.REQUIRED, example = "26723")
private Long id;
@Schema(description = "编号,唯一")
private String code;
@Schema(description = "派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotEmpty(message = "派工类型 生产任务|装配任务 PRODUCTION|ASSEMBLE不能为空")
private String dispatchType;
@Schema(description = "生产任务id", example = "8538")
private Long taskId;
@Schema(description = "生产计划id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3259")
@NotNull(message = "生产计划id不能为空")
private Long planId;
@Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19610")
@NotNull(message = "项目id不能为空")
private Long projectId;
@Schema(description = "子项目id", requiredMode = Schema.RequiredMode.REQUIRED, example = "21985")
@NotNull(message = "子项目id不能为空")
private Long projectSubId;
@Schema(description = "bom明细id", example = "15969")
private Long bomDetailId;
@Schema(description = "派工状态 已保存|已提交|已终止 1|2|3", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
@NotNull(message = "派工状态 已保存|已提交|已终止 1|2|3不能为空")
private Integer dispatchStatus;
@Schema(description = "备注", example = "你说的对")
private String remark;
@Schema(description = "状态,1表示正常2表示禁用", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "状态,1表示正常2表示禁用不能为空")
private Integer status;
@Schema(description = "派工明细列表")
private List<TaskDispatchDetailDO> taskDispatchDetails;
}

@ -0,0 +1,87 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_material_plan")
@KeySequence("project_material_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialPlanDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String projectMaterialPlanNo;
/**
* id
*/
private Long projectId;
/**
* id
*/
private Long projectPlanId;
/**
*
*/
private Long submitUserId;
/**
*
*/
private LocalDateTime submitTime;
/**
*
*/
private Long auditor;
/**
*
*/
private LocalDateTime auditTime;
/**
* ,1234 1
*
* {@link TODO heli_project_material_plan_status }
*/
private Integer status;
/**
*
*/
private String description;
/**
*
*/
private String creator;
/**
*
*/
@TableField(exist = false)
private String planNo;
/**
*
*/
@TableField(exist = false)
private String projectName;
}

@ -0,0 +1,71 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail;
import lombok.*;
import java.math.BigDecimal;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_material_plan_detail")
@KeySequence("project_material_plan_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MaterialPlanDetailDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* id
*/
private Long projectMaterialPlanId;
/**
* id
*/
private Long materialId;
/**
*
*/
private Long projectSubId;
/**
*
*/
private BigDecimal requireAmount;
/**
*
*/
private LocalDateTime requireArriveTime;
/**
*
*/
private String description;
@TableField(exist = false)
private Long matId;
@TableField(exist = false)
private String matName;
@TableField(exist = false)
private String matCode;
@TableField(exist = false)
private String matSpec;
@TableField(exist = false)
private String matUnit;
@TableField(exist = false)
private String matType;
}

@ -0,0 +1,141 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.plan;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_plan")
@KeySequence("project_plan_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PlanDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String planNo;
/**
* id
*/
private Long projectId;
/**
*
*/
private Long projectOwner;
/**
* :10
*
* {@link TODO heli_common_is_or_not }
*/
private Integer hasCraft;
/**
*
*/
private Long craftOwner;
/**
*
*/
private LocalDateTime craftStartDate;
/**
*
*/
private LocalDateTime craftEndDate;
/**
* [{'id':1,'sdate':'','edate':'','owner':'','description':''}]
*/
private String craftContent;
/**
*
*/
private Long editor;
/**
*
*/
private LocalDateTime editorDate;
/**
*
*/
private Long auditor;
/**
*
*/
private LocalDateTime auditDate;
/**
*
*/
private Long approver;
/**
*
*/
private LocalDateTime approveDate;
/**
*
*/
private String description;
/**
* ,1234 1
*/
private Integer status;
/**
*
*/
private Integer changeNum;
/**
*
*/
private LocalDateTime changeLastDate;
@TableField(exist = false)
private String projectCode;
@TableField(exist = false)
private String customerName;
@TableField(exist = false)
private String projectName;
@TableField(exist = false)
private String businessManName;
@TableField(exist = false)
private LocalDateTime projectStartTime;
@TableField(exist = false)
private LocalDateTime projectEndTime;
@TableField(exist = false)
private String businessLine;
@TableField(exist = false)
private Integer property;
@TableField(exist = false)
private Integer hasAlter;
@TableField(exist = false)
private Integer isUrgency;
}

@ -0,0 +1,86 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_plan_sub")
@KeySequence("project_plan_sub_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PlanSubDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* id
*/
private Long projectPlanId;
/**
* id
*/
private Long projectId;
/**
* id
*/
private Long projectSubId;
/**
* id
*/
private Long mouldId;
/**
* id
*/
private Long equipId;
/**
*
*/
private LocalDateTime blankDate;
/**
*
*/
private Long blankOwner;
/**
* 2D
*/
private LocalDateTime twoDimDate;
/**
* 2D
*/
private Long twoDimOwner;
/**
* 3D
*/
private LocalDateTime threeDimDate;
/**
* 3D
*/
private Long threeDimOwner;
/**
*
*/
private String projectSubShortName;
/**
*
*/
private String projectSubCode;
}

@ -0,0 +1,108 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.module.heli.enums.ProcessBomStatusEnum;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* bom DO
*
* @author
*/
@TableName("pro_process_bom")
@KeySequence("pro_process_bom_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessBomDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
* id
*/
private Long planId;
/**
* id
*/
private Long projectId;
/**
* id
*/
private Long projectSubId;
/**
* bom
*/
private Integer version;
/**
* bom | 1|2
*
* {@link TODO heli_bom_status }
*/
private Integer bomStatus;
/**
*
*/
private String remark;
/**
* ,12
*/
private Integer status;
/**
*
*/
@TableField(exist = false)
private String projectSubName;
@TableField(exist = false)
private String planCode;
@TableField(exist = false)
private String projectCode;
@TableField(exist = false)
private String customerName;
@TableField(exist = false)
private String projectName;
public boolean canSave(){
return ProcessBomStatusEnum.SAVE.getCode() == this.bomStatus.intValue();
}
public boolean canSubmit(){
return ProcessBomStatusEnum.SAVE.getCode() == this.bomStatus.intValue();
}
public boolean canCancel(){
return ProcessBomStatusEnum.SUBMIT.getCode() == this.bomStatus.intValue();
}
public boolean canOperate(OperateTypeEnum operateTypeEnum) {
switch (operateTypeEnum){
case SAVE:
return canSave();
case SUBMIT:
return canSubmit();
case CANCEL_SUBMIT:
return canCancel();
default:
return false;
}
}
}

@ -0,0 +1,80 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom;
import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
/**
* bom DO
*
* @author
*/
@TableName("pro_process_bom_detail")
@KeySequence("pro_process_bom_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProcessBomDetailDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* bom id
*/
private Long bomId;
/**
* 1 |2
*
* {@link TODO heli_bom_material_type }
*/
private String type;
/**
* id
*/
private Long materialId;
/**
*
*/
private String materialName;
/**
*
*/
private String materialCode;
/**
* id
*/
private Long compositionId;
/**
*
*/
private String spec;
/**
*
*/
private String unit;
/**
*
*/
private String blueprintNo;
/**
*
*/
private Integer amount;
/**
*
*/
private String remark;
/**
* ,12
*/
private Integer status;
}

@ -1,6 +1,8 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign; package com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign;
import lombok.*; import lombok.*;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@ -32,15 +34,9 @@ public class ProcessDesignDO extends BaseDO {
*/ */
private Long planId; private Long planId;
/** /**
* id * |3D|2D| BLUEPRINT_FOUNDRY_TECHNOLOGY|BLUEPRINT_3D|BLUEPRINT_2D|BLUEPRINT_WORKBLANK
*/ *
private Long saleOrderId; * {@link TODO heli_process_design_type }
/**
* id
*/
private Long saleOrderSubId;
/**
* |3D|2D| FOUNDRY_TECHNOLOGY_BLUEPRINT|3D_BLUEPRINT|2D_BLUEPRINT|WORKBLANK_BLUEPRINT
*/ */
private String processDesignType; private String processDesignType;
/** /**
@ -51,5 +47,85 @@ public class ProcessDesignDO extends BaseDO {
* ,12 * ,12
*/ */
private Integer status; private Integer status;
/**
* id
*/
private Long projectId;
/**
* id
*/
private Long projectSubId;
@TableField(exist = false)
private String planCode;
@TableField(exist = false)
private String projectCode;
@TableField(exist = false)
private String customerName;
@TableField(exist = false)
private String projectName;
@TableField(exist = false)
private String projectOwnerName;
@TableField(exist = false)
private String businessLine;
@TableField(exist = false)
private Integer property;
@TableField(exist = false)
private Integer isUrgency;
@TableField(exist = false)
private Integer hasCraft;
@TableField(exist = false)
private String craftOwnerName;
@TableField(exist = false)
private LocalDateTime craftStartDate;
@TableField(exist = false)
private LocalDateTime craftEndDate;
@TableField(exist = false)
private LocalDateTime blankDate;
@TableField(exist = false)
private String blankOwnerName;
@TableField(exist = false)
private BigDecimal progressBlank;
@TableField(exist = false)
private LocalDateTime twoDimDate;
@TableField(exist = false)
private String twoDimOwnerName;
@TableField(exist = false)
private BigDecimal progress2d;
@TableField(exist = false)
private LocalDateTime threeDimDate;
@TableField(exist = false)
private String threeDimOwnerName;
@TableField(exist = false)
private BigDecimal progress3d;
@TableField(exist = false)
private String projectSubName;
@TableField(exist = false)
private String projectSubCode;
@TableField(exist = false)
private BigDecimal progress;
} }

@ -49,4 +49,9 @@ public class ProcessDesignProgressDO extends BaseDO {
*/ */
private Integer status; private Integer status;
private Boolean deleted;
@TableField(exist = false)
private String creatorName;
} }

@ -80,4 +80,7 @@ public class ProjectOrderSubDO extends BaseDO {
@TableField(exist = false) @TableField(exist = false)
private String projectOrderCode; private String projectOrderCode;
@TableField(exist = false)
private String deviceName;
} }

@ -0,0 +1,110 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_purchase_order")
@KeySequence("project_purchase_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PurchaseOrderDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String purchaseNo;
/**
* id
*/
private Long supplierId;
/**
*
*/
private String contractNo;
/**
* 12
*
* {@link TODO heli_project_purchase_order_type }
*/
private Integer purchaseType;
/**
* id
*/
private Long projectMaterialPlanId;
/**
* 12
*
* {@link TODO heli_project_purchase_goods_type }
*/
private Integer goodsType;
/**
*
*/
private Integer currencyType;
/**
*
*/
private Integer taxRatio;
/**
*
*/
private BigDecimal estimatedPrice;
/**
*
*/
private BigDecimal actualPrice;
/**
* ,1234 1
*
* {@link TODO heli_purchase_order_status }
*/
private Integer status;
/**
*
*/
private Long submitUserId;
/**
*
*/
private LocalDateTime submitTime;
/**
*
*/
private Long auditor;
/**
*
*/
private LocalDateTime auditTime;
/**
*
*/
private String description;
@TableField(exist = false)
private String supplierName;
@TableField(exist = false)
private String materialPlanNo;
}

@ -0,0 +1,75 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermaterial;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("project_purchase_order_material")
@KeySequence("project_purchase_order_material_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PurchaseOrderMaterialDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private Long purchaseOrderId;
/**
* id
*/
private Long materialId;
/**
*
*/
private BigDecimal purchaseAmount;
/**
*
*/
private BigDecimal estimatedPrice;
/**
*
*/
private BigDecimal actualPrice;
/**
*
*/
private LocalDateTime arriveTime;
/**
*
*/
private String description;
@TableField(exist = false)
private Long matId;
@TableField(exist = false)
private String matName;
@TableField(exist = false)
private String matCode;
@TableField(exist = false)
private String matSpec;
@TableField(exist = false)
private String matUnit;
@TableField(exist = false)
private String matType;
}

@ -53,6 +53,7 @@ public class StorageLogAllDO extends BaseDO {
private String matType; private String matType;
private String whName; private String whName;
private Long whId;
private String rgName; private String rgName;

@ -0,0 +1,75 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch;
import lombok.*;
import java.util.*;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("pro_task_dispatch")
@KeySequence("pro_task_dispatch_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TaskDispatchDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
*
*/
private String code;
/**
* | PRODUCTION|ASSEMBLE
*
* {@link TODO heli_dispatch_type }
*/
private String dispatchType;
/**
* id
*/
private Long taskId;
/**
* id
*/
private Long planId;
/**
* id
*/
private Long projectId;
/**
* id
*/
private Long projectSubId;
/**
* bomid
*/
private Long bomDetailId;
/**
* || 1|2|3
*
* {@link TODO heli_dispatch_status }
*/
private Integer dispatchStatus;
/**
*
*/
private String remark;
/**
* ,12
*/
private Integer status;
}

@ -0,0 +1,64 @@
package com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetail;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.chanko.yunxi.mes.framework.mybatis.core.dataobject.BaseDO;
/**
* DO
*
* @author
*/
@TableName("pro_task_dispatch_detail")
@KeySequence("pro_task_dispatch_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class TaskDispatchDetailDO extends BaseDO {
/**
*
*/
@TableId
private Long id;
/**
* id
*/
private Long procedureId;
/**
*
*/
private Integer sort;
/**
*
*/
private Long owner;
/**
*
*/
private BigDecimal workTime;
/**
*
*/
private Integer amount;
/**
*
*/
private String summary;
/**
* ,12
*/
private Boolean status;
/**
* id
*/
private Long dispatchId;
}

@ -1,13 +1,12 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.customer; package com.chanko.yunxi.mes.module.heli.dal.mysql.customer;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.CustomerPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.*; import org.springframework.util.StringUtils;
/** /**
* Mapper * Mapper
@ -18,11 +17,16 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.*;
public interface CustomerMapper extends BaseMapperX<CustomerDO> { public interface CustomerMapper extends BaseMapperX<CustomerDO> {
default PageResult<CustomerDO> selectPage(CustomerPageReqVO reqVO) { default PageResult<CustomerDO> selectPage(CustomerPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<CustomerDO>() LambdaQueryWrapperX<CustomerDO> query = new LambdaQueryWrapperX<CustomerDO>()
.likeIfPresent(CustomerDO::getCode, reqVO.getCode()) .likeIfPresent(CustomerDO::getCode, reqVO.getCode())
.likeIfPresent(CustomerDO::getBrief, reqVO.getBrief()) .likeIfPresent(CustomerDO::getBrief, reqVO.getBrief())
.eqIfPresent(CustomerDO::getStatus, reqVO.getStatus()) .eqIfPresent(CustomerDO::getStatus, reqVO.getStatus())
.orderByDesc(CustomerDO::getId)); .orderByDesc(CustomerDO::getId);
if(!StringUtils.isEmpty(reqVO.getBriefOrName())){
query.and(QueryWrapper -> QueryWrapper.like(CustomerDO::getBrief, reqVO.getBriefOrName()).or().like(CustomerDO::getName, reqVO.getName()));
}
return selectPage(reqVO, query);
} }
} }

@ -2,10 +2,12 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.equip;
import java.util.*; import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.rg.RgDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.equip.vo.*;
@ -31,4 +33,11 @@ public interface EquipMapper extends BaseMapperX<EquipDO> {
.orderByDesc(EquipDO::getId)); .orderByDesc(EquipDO::getId));
} }
default List<Map<String, Object>> selectSimpleList() {
return selectMaps(new QueryWrapper<EquipDO>().select("id", "name","mould_type_id").eq("status","1").lambda());
}
default List<Map<String, Object>> selectNoStatusSimpleList() {
return selectMaps(new QueryWrapper<EquipDO>().select("id", "name","mould_type_id").lambda());
}
} }

@ -8,6 +8,7 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.pn.PnDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum; import com.chanko.yunxi.mes.module.heli.enums.YesOrNoEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -35,7 +36,13 @@ public interface MaterialMapper extends BaseMapperX<MaterialDO> {
.eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType()) .eq(!StringUtils.isEmpty(reqVO.getMaterialType()), MaterialDO::getMaterialType, reqVO.getMaterialType())
.eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus()) .eq(reqVO.getStatus() != null, MaterialDO::getStatus, reqVO.getStatus())
.eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name()) .eq(true,MaterialDO::getVirtualPart, YesOrNoEnum.N.name())
.eq(!StringUtils.isEmpty(reqVO.getVirtualPart()), MaterialDO::getVirtualPart, reqVO.getVirtualPart()); .apply(!StringUtils.isEmpty(reqVO.getCodeAndName()), " (t.name like {0} or t.code like {0})", "%"+reqVO.getCodeAndName()+"%");
// if(!StringUtils.isEmpty(reqVO.getCodeAndName())){
// query.like(MaterialDO::getName, reqVO.getCodeAndName()).or().like(MaterialDO::getCode, reqVO.getCodeAndName());
//
// }
return selectPage(reqVO, query); return selectPage(reqVO, query);
} }

@ -0,0 +1,60 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.PlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
import org.springframework.util.StringUtils;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialPlanMapper extends BaseMapperX<MaterialPlanDO> {
default PageResult<MaterialPlanDO> selectPage(MaterialPlanPageReqVO reqVO) {
MPJLambdaWrapper<MaterialPlanDO> query = new MPJLambdaWrapper<>();
query.selectAll(MaterialPlanDO.class)
.select("p.project_name as projectName","pl.plan_no as planNo")
.leftJoin(PlanDO.class, "pl", PlanDO::getId, MaterialPlanDO::getProjectPlanId)
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, MaterialPlanDO::getProjectId)
.disableSubLogicDel()
.orderByDesc(MaterialPlanDO::getCreateTime);
query.like(!StringUtils.isEmpty(reqVO.getProjectMaterialPlanNo()), MaterialPlanDO::getProjectMaterialPlanNo, reqVO.getProjectMaterialPlanNo())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), "p.project_name", reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getPlanNo()), "pl.plan_no", reqVO.getPlanNo())
.apply(reqVO.getCreateTime() != null && !reqVO.getCreateTime().equals("Invalid Date"), "DATE_FORMAT(t.create_time,'%Y-%m-%d') = {0}", reqVO.getCreateTime())
.eq(reqVO.getStatus() != null, MaterialPlanDO::getStatus, reqVO.getStatus());
return selectPage(reqVO, query);
}
// default PageResult<MaterialPlanDO> selectPage(MaterialPlanPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDO>()
// .eqIfPresent(MaterialPlanDO::getId, reqVO.getId())
// .likeIfPresent(MaterialPlanDO::getProjectMaterialPlanNo, reqVO.getProjectMaterialPlanNo())
// .eqIfPresent(MaterialPlanDO::getProjectId, reqVO.getProjectId())
// .eqIfPresent(MaterialPlanDO::getProjectPlanId, reqVO.getProjectPlanId())
// .eqIfPresent(MaterialPlanDO::getSubmitUserId, reqVO.getSubmitUserId())
// .betweenIfPresent(MaterialPlanDO::getSubmitTime, reqVO.getSubmitTime())
// .eqIfPresent(MaterialPlanDO::getAuditor, reqVO.getAuditor())
// .betweenIfPresent(MaterialPlanDO::getAuditTime, reqVO.getAuditTime())
// .eqIfPresent(MaterialPlanDO::getStatus, reqVO.getStatus())
// .eqIfPresent(MaterialPlanDO::getDescription, reqVO.getDescription())
// .betweenIfPresent(MaterialPlanDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(MaterialPlanDO::getId));
// }
}

@ -0,0 +1,52 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.materialplandetail;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.MaterialPlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*;
import org.springframework.util.StringUtils;
/**
* Mapper
*
* @author
*/
@Mapper
public interface MaterialPlanDetailMapper extends BaseMapperX<MaterialPlanDetailDO> {
default PageResult<MaterialPlanDetailDO> selectPage(MaterialPlanDetailPageReqVO reqVO) {
MPJLambdaWrapper<MaterialPlanDetailDO> query = new MPJLambdaWrapper<>();
query.selectAll(MaterialPlanDetailDO.class)
.select("mat.id as matId","mat.name as matName","mat.code as matCode","mat.spec as matSpec","mat.unit as matUnit","mat.material_type as matType")
.leftJoin(MaterialDO.class, "mat", MaterialDO::getId, MaterialPlanDetailDO::getMaterialId)
.disableSubLogicDel()
.orderByDesc(MaterialPlanDetailDO::getCreateTime);
query.eq(reqVO.getProjectMaterialPlanId()!=null,MaterialPlanDetailDO::getProjectMaterialPlanId, reqVO.getProjectMaterialPlanId()).orderByAsc(MaterialPlanDetailDO::getCreateTime);
return selectPage(reqVO, query);
}
// default PageResult<MaterialPlanDetailDO> selectPage(MaterialPlanDetailPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<MaterialPlanDetailDO>()
// .eqIfPresent(MaterialPlanDetailDO::getId, reqVO.getId())
// .eqIfPresent(MaterialPlanDetailDO::getProjectMaterialPlanId, reqVO.getProjectMaterialPlanId())
// .eqIfPresent(MaterialPlanDetailDO::getMaterialId, reqVO.getMaterialId())
// .eqIfPresent(MaterialPlanDetailDO::getProjectSubId, reqVO.getProjectSubId())
// .eqIfPresent(MaterialPlanDetailDO::getRequireAmount, reqVO.getRequireAmount())
// .betweenIfPresent(MaterialPlanDetailDO::getRequireArriveTime, reqVO.getRequireArriveTime())
// .eqIfPresent(MaterialPlanDetailDO::getDescription, reqVO.getDescription())
// .betweenIfPresent(MaterialPlanDetailDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(MaterialPlanDetailDO::getId));
// }
}

@ -27,8 +27,9 @@ public interface MouldTypeMapper extends BaseMapperX<MouldTypeDO> {
.orderByDesc(MouldTypeDO::getId)); .orderByDesc(MouldTypeDO::getId));
} }
default List<Map<String, Object>> selectSimpleList() { default List<Map<String, Object>> selectSimpleList() {
return selectMaps(new QueryWrapper<MouldTypeDO>().select("id", "name").eq("status","1").lambda()); return selectMaps(new QueryWrapper<MouldTypeDO>().select("id", "name").eq("status","1").lambda());
}
default List<Map<String, Object>> selectNoStatusSimpleList() {
return selectMaps(new QueryWrapper<MouldTypeDO>().select("id", "name").lambda());
} }
} }

@ -0,0 +1,97 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.plan;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.enums.ProjectPlanStatusEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.dept.DeptDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.plan.vo.*;
import org.springframework.util.StringUtils;
/**
* Mapper
*
* @author
*/
@Mapper
public interface PlanMapper extends BaseMapperX<PlanDO> {
default PageResult<PlanDO> selectPage(PlanPageReqVO reqVO) {
MPJLambdaWrapper<PlanDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanDO.class)
.select("u.nickname as businessManName", "e.name as customerName","p.code as projectCode","p.project_name as projectName","p.project_start_time as projectStartTime","p.project_end_time as projectEndTime","p.business_line as businessLine","p.property","p.is_urgency as isUrgency","p.has_alter as hasAlter")
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, PlanDO::getProjectId)
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.disableSubLogicDel()
.orderByDesc(PlanDO::getPlanNo);
query.like(!StringUtils.isEmpty(reqVO.getPlanNo()), PlanDO::getPlanNo, reqVO.getPlanNo())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), "p.code", reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), "e.name", reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getBusinessManName()), "u.nickname", reqVO.getBusinessManName())
.like(!StringUtils.isEmpty(reqVO.getProjectOwner()), PlanDO::getProjectOwner, reqVO.getProjectOwner())
.eq(reqVO.getBusinessLine() != null, ProjectOrderDO::getBusinessLine, reqVO.getBusinessLine())
.eq(reqVO.getProperty() != null, ProjectOrderDO::getProperty, reqVO.getProperty())
.eq(reqVO.getStatus() != null, PlanDO::getStatus, reqVO.getStatus());
return selectPage(reqVO, query);
}
default PageResult<PlanDO> selectPageByStatus(PlanPageReqVO reqVO) {
MPJLambdaWrapper<PlanDO> query = new MPJLambdaWrapper<>();
query.selectAll(PlanDO.class)
.select("u.nickname as businessManName", "e.name as customerName","p.code as projectCode","p.project_name as projectName","p.project_start_time as projectStartTime","p.project_end_time as projectEndTime","p.business_line as businessLine","p.property","p.is_urgency as isUrgency","p.has_alter as hasAlter")
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, PlanDO::getProjectId)
.leftJoin(AdminUserDO.class, "u", AdminUserDO::getId, ProjectOrderDO::getBusinessMan)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.disableSubLogicDel()
.orderByDesc(PlanDO::getPlanNo);
query.like(!StringUtils.isEmpty(reqVO.getPlanNo()), PlanDO::getPlanNo, reqVO.getPlanNo())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), "p.code", reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), "e.name", reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getBusinessManName()), "u.nickname", reqVO.getBusinessManName())
.like(!StringUtils.isEmpty(reqVO.getProjectOwner()), PlanDO::getProjectOwner, reqVO.getProjectOwner())
.eq(reqVO.getBusinessLine() != null, ProjectOrderDO::getBusinessLine, reqVO.getBusinessLine())
.eq(reqVO.getProperty() != null, ProjectOrderDO::getProperty, reqVO.getProperty())
.ne(true, PlanDO::getStatus, ProjectPlanStatusEnum.COMPLETE.getCode())
.ne(true,PlanDO::getStatus,ProjectPlanStatusEnum.TERMINATE.getCode());
return selectPage(reqVO, query);
}
// default PageResult<PlanDO> selectPage(PlanPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<PlanDO>()
// .eqIfPresent(PlanDO::getId, reqVO.getId())
// .likeIfPresent(PlanDO::getPlanNo, reqVO.getPlanNo())
// .eqIfPresent(PlanDO::getProjectId, reqVO.getProjectId())
// .likeIfPresent(PlanDO::getProjectOwner, reqVO.getProjectOwner())
// .eqIfPresent(PlanDO::getHasCraft, reqVO.getHasCraft())
// .likeIfPresent(PlanDO::getCraftOwner, reqVO.getCraftOwner())
// .betweenIfPresent(PlanDO::getCraftStartDate, reqVO.getCraftStartDate())
// .betweenIfPresent(PlanDO::getCraftEndDate, reqVO.getCraftEndDate())
// .likeIfPresent(PlanDO::getEditor, reqVO.getEditor())
// .betweenIfPresent(PlanDO::getEditorDate, reqVO.getEditorDate())
// .likeIfPresent(PlanDO::getAuditor, reqVO.getAuditor())
// .betweenIfPresent(PlanDO::getAuditDate, reqVO.getAuditDate())
// .likeIfPresent(PlanDO::getApprover, reqVO.getApprover())
// .betweenIfPresent(PlanDO::getApproveDate, reqVO.getApproveDate())
// .eqIfPresent(PlanDO::getDescription, reqVO.getDescription())
// .eqIfPresent(PlanDO::getStatus, reqVO.getStatus())
// .eqIfPresent(PlanDO::getChangeNum, reqVO.getChangeNum())
// .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(PlanDO::getId));
// }
}

@ -0,0 +1,38 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.plansub;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.plansub.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface PlanSubMapper extends BaseMapperX<PlanSubDO> {
default PageResult<PlanSubDO> selectPage(PlanSubPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<PlanSubDO>()
.eqIfPresent(PlanSubDO::getId, reqVO.getId())
.eqIfPresent(PlanSubDO::getProjectPlanId, reqVO.getProjectPlanId())
.eqIfPresent(PlanSubDO::getProjectId, reqVO.getProjectId())
.eqIfPresent(PlanSubDO::getProjectSubId, reqVO.getProjectSubId())
.eqIfPresent(PlanSubDO::getMouldId, reqVO.getMouldId())
.eqIfPresent(PlanSubDO::getEquipId, reqVO.getEquipId())
.betweenIfPresent(PlanSubDO::getBlankDate, reqVO.getBlankDate())
.betweenIfPresent(PlanSubDO::getTwoDimDate, reqVO.getTwoDimDate())
.eqIfPresent(PlanSubDO::getBlankOwner, reqVO.getBlankOwner())
.eqIfPresent(PlanSubDO::getTwoDimOwner, reqVO.getTwoDimOwner())
.betweenIfPresent(PlanSubDO::getThreeDimDate, reqVO.getThreeDimDate())
.eqIfPresent(PlanSubDO::getThreeDimOwner, reqVO.getThreeDimOwner())
.betweenIfPresent(PlanSubDO::getCreateTime, reqVO.getCreateTime())
.orderByAsc(PlanSubDO::getId));
}
}

@ -0,0 +1,25 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.processbom;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDetailDO;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/**
* bom Mapper
*
* @author
*/
@Mapper
public interface ProcessBomDetailMapper extends BaseMapperX<ProcessBomDetailDO> {
default List<ProcessBomDetailDO> selectListByBomId(Long bomId) {
return selectList(ProcessBomDetailDO::getBomId, bomId);
}
default int deleteByBomId(Long bomId) {
return delete(ProcessBomDetailDO::getBomId, bomId);
}
}

@ -0,0 +1,70 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.processbom;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plansub.PlanSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.util.StringUtils;
/**
* bom Mapper
*
* @author
*/
@Mapper
public interface ProcessBomMapper extends BaseMapperX<ProcessBomDO> {
default PageResult<ProcessBomDO> selectPage(ProcessBomPageReqVO reqVO) {
MPJLambdaWrapper<ProcessBomDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessBomDO.class)
.select("concat('BOM-', e.project_sub_code) as code")
.select("a.plan_no as planCode", "b.code as projectCode", "c.name as customerName", "b.project_name as projectName")
.select("d.name as projectSubName")
.leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId)
.leftJoin(PlanSubDO.class, "e", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
.orderByDesc(ProcessBomDO::getId)
.disableSubLogicDel()
;
query.like(!StringUtils.isEmpty(reqVO.getCode()), ProcessBomDO::getCode, reqVO.getCode())
.like(!StringUtils.isEmpty(reqVO.getPlanCode()), PlanDO::getPlanNo, reqVO.getPlanCode())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName())
.eq(reqVO.getBomStatus() != null, ProcessBomDO::getBomStatus, reqVO.getBomStatus())
;
return selectPage(reqVO, query);
}
default ProcessBomDO selectById(Long id) {
MPJLambdaWrapper<ProcessBomDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessBomDO.class)
.select("concat('BOM-', e.project_sub_code) as code")
.select("a.plan_no as planCode", "b.code as projectCode", "c.name as customerName", "b.project_name as projectName")
.select("d.name as projectSubName")
.leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessBomDO::getPlanId)
.leftJoin(PlanSubDO.class, "e", PlanSubDO::getProjectSubId, ProcessBomDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "b", ProjectOrderDO::getId, ProcessBomDO::getProjectId)
.leftJoin(CustomerDO.class, "c", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(ProjectOrderSubDO.class, "d", ProjectOrderSubDO::getId, ProcessBomDO::getProjectSubId)
.eq(ProcessBomDO::getId, id)
.last("LIMIT 1")
.disableSubLogicDel()
;
return selectOne(query);
}
}

@ -1,13 +1,18 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign; package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.ProcessDesignPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.enums.ProjectPlanStatusEnum;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*; import org.springframework.util.StringUtils;
/** /**
* Mapper * Mapper
@ -18,15 +23,101 @@ import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.*;
public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> { public interface ProcessDesignMapper extends BaseMapperX<ProcessDesignDO> {
default PageResult<ProcessDesignDO> selectPage(ProcessDesignPageReqVO reqVO) { default PageResult<ProcessDesignDO> selectPage(ProcessDesignPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ProcessDesignDO>() MPJLambdaWrapper<ProcessDesignDO> query = new MPJLambdaWrapper<>();
.eqIfPresent(ProcessDesignDO::getPlanId, reqVO.getPlanId()) query.selectAll(ProcessDesignDO.class)
.eqIfPresent(ProcessDesignDO::getSaleOrderId, reqVO.getSaleOrderId()) .select("a.plan_no as planCode","a.has_craft as hasCraft", "a.craft_start_date as craftStartDate", "a.craft_end_date as craftEndDate", "e.name as customerName")
.eqIfPresent(ProcessDesignDO::getSaleOrderSubId, reqVO.getSaleOrderSubId()) .select("d.code as projectCode", "d.project_name as projectName", "d.business_line as businessLine", "d.property","d.is_urgency as isUrgency")
.eqIfPresent(ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignType()) .select("u1.nickname as projectOwnerName", "u2.nickname as craftOwnerName")
.eqIfPresent(ProcessDesignDO::getRemark, reqVO.getRemark()) .select("b.blank_date as blankDate", "b.two_dim_date as twoDimDate", "b.three_dim_date as threeDimDate")
.eqIfPresent(ProcessDesignDO::getStatus, reqVO.getStatus()) .select("u3.nickname as blankOwnerName", "u4.nickname as twoDimOwnerName", "u5.nickname as threeDimOwnerName")
.betweenIfPresent(ProcessDesignDO::getCreateTime, reqVO.getCreateTime()) .select("c.name as projectSubName", "b.project_sub_code as projectSubCode")
.orderByDesc(ProcessDesignDO::getId)); .select("z.progress")
.leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessDesignDO::getPlanId)
.leftJoin("project_plan_sub b on b.project_plan_id = t.plan_id and b.project_sub_id = t.project_sub_id")
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, PlanDO::getProjectOwner)
.leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, PlanDO::getCraftOwner)
.leftJoin("system_users u3 on u3.id = b.blank_owner")
.leftJoin("system_users u4 on u4.id = b.two_dim_owner")
.leftJoin("system_users u5 on u5.id = b.three_dim_owner")
.leftJoin("(select progress,process_design_id FROM pro_process_design_progress where id in (select max(id) FROM pro_process_design_progress GROUP BY process_design_id) ) z on z.process_design_id = t.id")
.orderByDesc(ProcessDesignDO::getId)
.disableSubLogicDel();
query.like(!StringUtils.isEmpty(reqVO.getPlanCode()), PlanDO::getPlanNo, reqVO.getPlanCode())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.eq(reqVO.getBusinessLine() != null, ProjectOrderDO::getBusinessLine, reqVO.getBusinessLine())
.eq(reqVO.getProperty() != null, ProjectOrderDO::getProperty, reqVO.getProperty())
.like(!StringUtils.isEmpty(reqVO.getCraftOwnerName()), "u2.nickname", reqVO.getCraftOwnerName())
.like(!StringUtils.isEmpty(reqVO.getThreeDimOwnerName()), "u5.nickname", reqVO.getThreeDimOwnerName())
.like(!StringUtils.isEmpty(reqVO.getTwoDimOwnerName()), "u4.nickname", reqVO.getTwoDimOwnerName())
.like(!StringUtils.isEmpty(reqVO.getBlankOwnerName()), "u3.nickname", reqVO.getBlankOwnerName())
.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName())
.eq(!StringUtils.isEmpty(reqVO.getProcessDesignType()), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignType())
.in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList())
.eq(reqVO.getProjectId() != null, ProcessDesignDO::getProjectId, reqVO.getProjectId())
.eq(reqVO.getProjectSubId() != null, ProcessDesignDO::getProjectSubId, reqVO.getProjectSubId())
.in(reqVO.getProjectSubIdList() != null && !reqVO.getProjectSubIdList().isEmpty(), ProcessDesignDO::getProjectSubId, reqVO.getProjectSubIdList())
;
if(!StringUtils.isEmpty(reqVO.getOwner())){
query.and(QueryWrapper -> QueryWrapper.eq("u2.id", reqVO.getOwner()).or().eq("u3.id", reqVO.getOwner()).or().eq("u4.id", reqVO.getOwner()).or().eq("u5.id", reqVO.getOwner()));
}
if(reqVO.getUncompletedDesign() != null && reqVO.getUncompletedDesign()){
query.and(QueryWrapper -> QueryWrapper.lt("z.progress", "100").ne(PlanDO::getStatus, ProjectPlanStatusEnum.TERMINATE.getCode()));
}
return selectPage(reqVO, query);
}
default ProcessDesignDO selectById(Long id) {
MPJLambdaWrapper<ProcessDesignDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessDesignDO.class)
.select("a.plan_no as planCode","a.has_craft as hasCraft", "a.craft_start_date as craftStartDate", "a.craft_end_date as craftEndDate", "e.name as customerName")
.select("d.code as projectCode", "d.project_name as projectName", "d.business_line as businessLine", "d.property","d.is_urgency as isUrgency")
.select("u1.nickname as projectOwnerName", "u2.nickname as craftOwnerName")
.select("b.blank_date as blankDate", "b.two_dim_date as twoDimDate", "b.three_dim_date as threeDimDate")
.select("u3.nickname as blankOwnerName", "u4.nickname as twoDimOwnerName", "u5.nickname as threeDimOwnerName")
.select("c.name as projectSubName", "b.project_sub_code as projectSubCode")
.leftJoin(PlanDO.class, "a", PlanDO::getId, ProcessDesignDO::getPlanId)
.leftJoin("project_plan_sub b on b.project_plan_id = t.plan_id and b.project_sub_id = t.project_sub_id")
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, PlanDO::getProjectOwner)
.leftJoin(AdminUserDO.class, "u2", AdminUserDO::getId, PlanDO::getCraftOwner)
.leftJoin("system_users u3 on u3.id = b.blank_owner")
.leftJoin("system_users u4 on u4.id = b.two_dim_owner")
.leftJoin("system_users u5 on u5.id = b.three_dim_owner")
.eq(ProcessDesignDO::getId, id)
.last("LIMIT 1")
.disableSubLogicDel();
return selectOne(query);
}
default PageResult<ProcessDesignDO> selectPageOverview(ProcessDesignPageReqVO reqVO) {
MPJLambdaWrapper<ProcessDesignDO> query = new MPJLambdaWrapper<>();
query.select(ProcessDesignDO::getProjectId, ProcessDesignDO::getProjectSubId)
.select("c.name as projectSubName")
.select("e.name as customerName")
.select("d.code as projectCode", "d.project_name as projectName", "d.business_line as businessLine", "d.property","d.is_urgency as isUrgency")
.leftJoin(ProjectOrderSubDO.class, "c", ProjectOrderSubDO::getId, ProcessDesignDO::getProjectSubId)
.leftJoin(ProjectOrderDO.class, "d", ProjectOrderDO::getId, ProcessDesignDO::getProjectId)
.leftJoin(CustomerDO.class, "e", CustomerDO::getId, ProjectOrderDO::getCustomerId)
.groupBy("d.id,c.id")
.orderByDesc(ProjectOrderDO::getId)
.disableSubLogicDel();
query.in(reqVO.getProcessDesignTypeList() != null && !reqVO.getProcessDesignTypeList().isEmpty(), ProcessDesignDO::getProcessDesignType, reqVO.getProcessDesignTypeList())
.like(!StringUtils.isEmpty(reqVO.getProjectCode()), ProjectOrderDO::getCode, reqVO.getProjectCode())
.like(!StringUtils.isEmpty(reqVO.getCustomerName()), CustomerDO::getName, reqVO.getCustomerName())
.like(!StringUtils.isEmpty(reqVO.getProjectName()), ProjectOrderDO::getProjectName, reqVO.getProjectName())
.like(!StringUtils.isEmpty(reqVO.getProjectSubName()), ProjectOrderSubDO::getName, reqVO.getProjectSubName())
;
return selectPage(reqVO, query);
} }
} }

@ -1,14 +1,13 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesignprogress; package com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesignprogress.ProcessDesignProgressDO;
import com.chanko.yunxi.mes.module.system.dal.dataobject.user.AdminUserDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.util.List;
/** /**
* Mapper * Mapper
* *
@ -18,7 +17,15 @@ import org.apache.ibatis.annotations.Mapper;
public interface ProcessDesignProgressMapper extends BaseMapperX<ProcessDesignProgressDO> { public interface ProcessDesignProgressMapper extends BaseMapperX<ProcessDesignProgressDO> {
default List<ProcessDesignProgressDO> selectListByProcessDesignId(Long processDesignId) { default List<ProcessDesignProgressDO> selectListByProcessDesignId(Long processDesignId) {
return selectList(ProcessDesignProgressDO::getProcessDesignId, processDesignId); MPJLambdaWrapper<ProcessDesignProgressDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProcessDesignProgressDO.class)
.select("u1.nickname as creatorName")
.leftJoin(AdminUserDO.class, "u1", AdminUserDO::getId, ProcessDesignProgressDO::getCreator)
.eq(ProcessDesignProgressDO::getProcessDesignId, processDesignId)
.orderByDesc(ProcessDesignProgressDO::getId)
.disableSubLogicDel();
return selectList(query);
} }
default int deleteByProcessDesignId(Long processDesignId) { default int deleteByProcessDesignId(Long processDesignId) {

@ -2,6 +2,7 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.composition.CompositionDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.equip.EquipDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
@ -20,10 +21,12 @@ public interface ProjectOrderSubMapper extends BaseMapperX<ProjectOrderSubDO> {
default List<ProjectOrderSubDO> selectListByProjectOrderId(Long projectOrderId) { default List<ProjectOrderSubDO> selectListByProjectOrderId(Long projectOrderId) {
MPJLambdaWrapper<ProjectOrderSubDO> query = new MPJLambdaWrapper<>(); MPJLambdaWrapper<ProjectOrderSubDO> query = new MPJLambdaWrapper<>();
query.selectAll(ProjectOrderSubDO.class) query.selectAll(ProjectOrderSubDO.class)
.select("b.name as compositionName", "p.code as projectOrderCode") .select("b.name as compositionName", "p.code as projectOrderCode", "e.name as deviceName")
.leftJoin(EquipDO.class, "e", EquipDO::getId, ProjectOrderSubDO::getDeviceModel)
.leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId) .leftJoin(ProjectOrderDO.class, "p", ProjectOrderDO::getId, ProjectOrderSubDO::getProjectOrderId)
.leftJoin(CompositionDO.class, "b", CompositionDO::getId, ProjectOrderSubDO::getCompositionId) .leftJoin(CompositionDO.class, "b", CompositionDO::getId, ProjectOrderSubDO::getCompositionId)
.disableSubLogicDel() .disableSubLogicDel()
.orderByAsc(ProjectOrderSubDO::getId)
.eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId); .eq(ProjectOrderSubDO::getProjectOrderId, projectOrderId);
return selectList(query); return selectList(query);
} }

@ -0,0 +1,114 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseorder;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.MaterialPlanPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.plan.PlanDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseorder.PurchaseOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.enums.PurchaseStatusEnum;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseorder.vo.*;
import org.springframework.util.StringUtils;
/**
* Mapper
*
* @author
*/
@Mapper
public interface PurchaseOrderMapper extends BaseMapperX<PurchaseOrderDO> {
default PageResult<PurchaseOrderDO> selectPage(PurchaseOrderPageReqVO reqVO) {
MPJLambdaWrapper<PurchaseOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderDO.class)
.select("s.name as supplierName","m.project_material_plan_no as materialPlanNo")
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderDO::getSupplierId)
.leftJoin(MaterialPlanDO.class, "m", MaterialPlanDO::getId, PurchaseOrderDO::getProjectMaterialPlanId)
.disableSubLogicDel()
.orderByDesc(PurchaseOrderDO::getCreateTime);
query.like(!StringUtils.isEmpty(reqVO.getPurchaseNo()), PurchaseOrderDO::getPurchaseNo, reqVO.getPurchaseNo())
.like(!StringUtils.isEmpty(reqVO.getSupplierName()), "s.name", reqVO.getSupplierName())
.like(!StringUtils.isEmpty(reqVO.getMaterialPlanNo()), "m.project_material_plan_no", reqVO.getMaterialPlanNo())
.apply(!StringUtils.isEmpty(reqVO.getCreateTime()), "DATE_FORMAT(t.create_time,'%Y-%m-%d') = {0}", reqVO.getCreateTime())
.eq(reqVO.getStatus() != null, PurchaseOrderDO::getStatus, reqVO.getStatus())
.eq(reqVO.getPurchaseType() != null, PurchaseOrderDO::getPurchaseType, reqVO.getPurchaseType())
.eq(reqVO.getGoodsType() != null, PurchaseOrderDO::getGoodsType, reqVO.getGoodsType())
.in(reqVO.getIds() != null && !reqVO.getIds().isEmpty(),PurchaseOrderDO::getId,reqVO.getIds());
return selectPage(reqVO, query);
}
default PageResult<PurchaseOrderDO> selectPageByStatus(PurchaseOrderPageReqVO reqVO) {
MPJLambdaWrapper<PurchaseOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderDO.class)
.select("s.name as supplierName","m.project_material_plan_no as materialPlanNo")
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderDO::getSupplierId)
.leftJoin(MaterialPlanDO.class, "m", MaterialPlanDO::getId, PurchaseOrderDO::getProjectMaterialPlanId)
.disableSubLogicDel()
.orderByDesc(PurchaseOrderDO::getCreateTime);
query.like(!StringUtils.isEmpty(reqVO.getPurchaseNo()), PurchaseOrderDO::getPurchaseNo, reqVO.getPurchaseNo())
.like(!StringUtils.isEmpty(reqVO.getSupplierName()), "s.name", reqVO.getSupplierName())
.like(!StringUtils.isEmpty(reqVO.getMaterialPlanNo()), "m.project_material_plan_no", reqVO.getMaterialPlanNo())
.apply(reqVO.getCreateTime() != null, "DATE_FORMAT(t.create_time,'%Y-%m-%d') = {0}", reqVO.getCreateTime())
.eq(reqVO.getStatus() != null, PurchaseOrderDO::getStatus, reqVO.getStatus())
.ne(true, PurchaseOrderDO::getStatus, PurchaseStatusEnum.START.getCode())
.eq(reqVO.getPurchaseType() != null, PurchaseOrderDO::getPurchaseType, reqVO.getPurchaseType())
.eq(reqVO.getGoodsType() != null, PurchaseOrderDO::getGoodsType, reqVO.getGoodsType());
return selectPage(reqVO, query);
}
default PageResult<PurchaseOrderDO> selectListWithTax(PurchaseOrderPageReqVO reqVO) {
MPJLambdaWrapper<PurchaseOrderDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderDO.class)
.select("s.name as supplierName","m.project_material_plan_no as materialPlanNo","(case when t.tax_ratio!=Null and t.estimated_price!=null then t.estimated_price*t.tax_ratio else '' end) as estimated_price","(case when t.tax_ratio!=Null and t.actual_price!=null then t.actual_price*t.tax_ratio else '' end) as actual_price")
.leftJoin(SupplierDO.class, "s", SupplierDO::getId, PurchaseOrderDO::getSupplierId)
.leftJoin(MaterialPlanDO.class, "m", MaterialPlanDO::getId, PurchaseOrderDO::getProjectMaterialPlanId)
.disableSubLogicDel()
.orderByDesc(PurchaseOrderDO::getCreateTime);
query.like(!StringUtils.isEmpty(reqVO.getPurchaseNo()), PurchaseOrderDO::getPurchaseNo, reqVO.getPurchaseNo())
.like(!StringUtils.isEmpty(reqVO.getSupplierName()), "s.name", reqVO.getSupplierName())
.like(!StringUtils.isEmpty(reqVO.getMaterialPlanNo()), "m.project_material_plan_no", reqVO.getMaterialPlanNo())
.apply(reqVO.getCreateTime() != null, "DATE_FORMAT(t.create_time,'%Y-%m-%d') = {0}", reqVO.getCreateTime())
.eq(reqVO.getStatus() != null, PurchaseOrderDO::getStatus, reqVO.getStatus())
.eq(reqVO.getPurchaseType() != null, PurchaseOrderDO::getPurchaseType, reqVO.getPurchaseType())
.eq(reqVO.getGoodsType() != null, PurchaseOrderDO::getGoodsType, reqVO.getGoodsType())
.in(reqVO.getIds() != null && !reqVO.getIds().isEmpty(),PurchaseOrderDO::getId,reqVO.getIds());
return selectPage(reqVO, query);
}
// default PageResult<PurchaseOrderDO> selectPage(PurchaseOrderPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<PurchaseOrderDO>()
// .eqIfPresent(PurchaseOrderDO::getId, reqVO.getId())
// .eqIfPresent(PurchaseOrderDO::getPurchaseNo, reqVO.getPurchaseNo())
// .eqIfPresent(PurchaseOrderDO::getSupplierId, reqVO.getSupplierId())
// .eqIfPresent(PurchaseOrderDO::getContractNo, reqVO.getContractNo())
// .eqIfPresent(PurchaseOrderDO::getPurchaseType, reqVO.getPurchaseType())
// .eqIfPresent(PurchaseOrderDO::getProjectMaterialPlanId, reqVO.getProjectMaterialPlanId())
// .eqIfPresent(PurchaseOrderDO::getGoodsType, reqVO.getGoodsType())
// .eqIfPresent(PurchaseOrderDO::getCurrencyType, reqVO.getCurrencyType())
// .eqIfPresent(PurchaseOrderDO::getTaxRatio, reqVO.getTaxRatio())
// .eqIfPresent(PurchaseOrderDO::getEstimatedPrice, reqVO.getEstimatedPrice())
// .eqIfPresent(PurchaseOrderDO::getActualPrice, reqVO.getActualPrice())
// .eqIfPresent(PurchaseOrderDO::getStatus, reqVO.getStatus())
// .eqIfPresent(PurchaseOrderDO::getSubmitUserId, reqVO.getSubmitUserId())
// .betweenIfPresent(PurchaseOrderDO::getSubmitTime, reqVO.getSubmitTime())
// .eqIfPresent(PurchaseOrderDO::getAuditor, reqVO.getAuditor())
// .betweenIfPresent(PurchaseOrderDO::getAuditTime, reqVO.getAuditTime())
// .eqIfPresent(PurchaseOrderDO::getDescription, reqVO.getDescription())
// .eqIfPresent(PurchaseOrderDO::getCreator, reqVO.getCreator())
// .betweenIfPresent(PurchaseOrderDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(PurchaseOrderDO::getId));
// }
}

@ -0,0 +1,49 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.purchaseordermaterial;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.MaterialPlanDetailPageReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.purchaseordermaterial.PurchaseOrderMaterialDO;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.purchaseordermaterial.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface PurchaseOrderMaterialMapper extends BaseMapperX<PurchaseOrderMaterialDO> {
default PageResult<PurchaseOrderMaterialDO> selectPage(PurchaseOrderMaterialPageReqVO reqVO) {
MPJLambdaWrapper<PurchaseOrderMaterialDO> query = new MPJLambdaWrapper<>();
query.selectAll(PurchaseOrderMaterialDO.class)
.select("mat.id as matId","mat.name as matName","mat.code as matCode","mat.spec as matSpec","mat.unit as matUnit","mat.material_type as matType")
.leftJoin(MaterialDO.class, "mat", MaterialDO::getId, PurchaseOrderMaterialDO::getMaterialId)
.disableSubLogicDel()
.orderByAsc(PurchaseOrderMaterialDO::getId);
query.eq(reqVO.getPurchaseOrderId()!=null,PurchaseOrderMaterialDO::getPurchaseOrderId, reqVO.getPurchaseOrderId()).orderByAsc(PurchaseOrderMaterialDO::getCreateTime);
return selectPage(reqVO, query);
}
// default PageResult<PurchaseOrderMaterialDO> selectPage(PurchaseOrderMaterialPageReqVO reqVO) {
// return selectPage(reqVO, new LambdaQueryWrapperX<PurchaseOrderMaterialDO>()
// .eqIfPresent(PurchaseOrderMaterialDO::getPurchaseOrderId, reqVO.getPurchaseOrderId())
// .eqIfPresent(PurchaseOrderMaterialDO::getMaterialId, reqVO.getMaterialId())
// .eqIfPresent(PurchaseOrderMaterialDO::getPurchaseAmount, reqVO.getPurchaseAmount())
// .eqIfPresent(PurchaseOrderMaterialDO::getEstimatedPrice, reqVO.getEstimatedPrice())
// .eqIfPresent(PurchaseOrderMaterialDO::getActualPrice, reqVO.getActualPrice())
// .betweenIfPresent(PurchaseOrderMaterialDO::getArriveTime, reqVO.getArriveTime())
// .eqIfPresent(PurchaseOrderMaterialDO::getDescription, reqVO.getDescription())
// .betweenIfPresent(PurchaseOrderMaterialDO::getCreateTime, reqVO.getCreateTime())
// .orderByDesc(PurchaseOrderMaterialDO::getId));
// }
}

@ -31,6 +31,7 @@ public interface StorageMapper extends BaseMapperX<StorageDO> {
query.selectAll(StorageDO.class) query.selectAll(StorageDO.class)
.leftJoin(StorageMatDO.class, "sm", StorageMatDO::getStockId, StorageDO::getId) .leftJoin(StorageMatDO.class, "sm", StorageMatDO::getStockId, StorageDO::getId)
.leftJoin(MaterialDO.class, "mat", MaterialDO::getId, StorageMatDO::getMatId) .leftJoin(MaterialDO.class, "mat", MaterialDO::getId, StorageMatDO::getMatId)
.disableSubLogicDel()
.orderByDesc(StorageDO::getId); .orderByDesc(StorageDO::getId);
query.like(!StringUtils.isEmpty(reqVO.getMatNo()), MaterialDO::getCode, reqVO.getMatNo()) query.like(!StringUtils.isEmpty(reqVO.getMatNo()), MaterialDO::getCode, reqVO.getMatNo())

@ -25,6 +25,7 @@ public interface StorageCheckMapper extends BaseMapperX<StorageCheckDO> {
.eqIfPresent(StorageCheckDO::getNoZero, reqVO.getNoZero()) .eqIfPresent(StorageCheckDO::getNoZero, reqVO.getNoZero())
.eqIfPresent(StorageCheckDO::getDescription, reqVO.getDescription()) .eqIfPresent(StorageCheckDO::getDescription, reqVO.getDescription())
.eqIfPresent(StorageCheckDO::getStatus, reqVO.getStatus()) .eqIfPresent(StorageCheckDO::getStatus, reqVO.getStatus())
.neIfPresent(StorageCheckDO::getStatus, 3)
.eqIfPresent(StorageCheckDO::getWhId, reqVO.getWhId()) .eqIfPresent(StorageCheckDO::getWhId, reqVO.getWhId())
.eqIfPresent(StorageCheckDO::getCreator, reqVO.getCreator()) .eqIfPresent(StorageCheckDO::getCreator, reqVO.getCreator())
.betweenIfPresent(StorageCheckDO::getCreateTime, reqVO.getCreateTime()) .betweenIfPresent(StorageCheckDO::getCreateTime, reqVO.getCreateTime())

@ -30,6 +30,7 @@ public interface StorageLogAllMapper extends BaseMapperX<StorageLogAllDO> {
query.like(!StringUtils.isEmpty(reqVO.getMatType()),StorageLogAllDO::getMatType, reqVO.getMatType()) query.like(!StringUtils.isEmpty(reqVO.getMatType()),StorageLogAllDO::getMatType, reqVO.getMatType())
.eq(reqVO.getStockType()!= null,StorageLogAllDO::getStockType, reqVO.getStockType()) .eq(reqVO.getStockType()!= null,StorageLogAllDO::getStockType, reqVO.getStockType())
.eq(reqVO.getWhId()!= null,StorageLogAllDO::getWhId, reqVO.getWhId())
.like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogAllDO::getMatName, reqVO.getMatName()) .like(!StringUtils.isEmpty(reqVO.getMatName()), StorageLogAllDO::getMatName, reqVO.getMatName())
.like(!StringUtils.isEmpty(reqVO.getMatCode()), StorageLogAllDO::getMatCode, reqVO.getMatCode()) .like(!StringUtils.isEmpty(reqVO.getMatCode()), StorageLogAllDO::getMatCode, reqVO.getMatCode())
.like(!StringUtils.isEmpty(reqVO.getStockNo()), StorageLogAllDO::getStockNo, reqVO.getStockNo()) .like(!StringUtils.isEmpty(reqVO.getStockNo()), StorageLogAllDO::getStockNo, reqVO.getStockNo())

@ -2,10 +2,12 @@ package com.chanko.yunxi.mes.module.heli.dal.mysql.supplier;
import java.util.*; import java.util.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX; import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX; import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.supplier.SupplierDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.warehouse.WarehouseDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.supplier.vo.*; import com.chanko.yunxi.mes.module.heli.controller.admin.supplier.vo.*;
@ -55,5 +57,14 @@ public interface SupplierMapper extends BaseMapperX<SupplierDO> {
.eqIfPresent(SupplierDO::getTaxNo, reqVO.getTaxNo()) .eqIfPresent(SupplierDO::getTaxNo, reqVO.getTaxNo())
.orderByDesc(SupplierDO::getId)); .orderByDesc(SupplierDO::getId));
} }
default List<Map<String, Object>> selectSimpleList() {
return selectMaps(new QueryWrapper<SupplierDO>().select("id", "name").eq("status","1").lambda());
}
default List<Map<String, Object>> selectSimpleNoStatusList() {
return selectMaps(new QueryWrapper<SupplierDO>().select("id", "name").lambda());
}
} }

@ -0,0 +1,28 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatchdetail;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatchdetail.TaskDispatchDetailDO;
import org.apache.ibatis.annotations.Mapper;
/**
* Mapper
*
* @author
*/
@Mapper
public interface TaskDispatchDetailMapper extends BaseMapperX<TaskDispatchDetailDO> {
default List<TaskDispatchDetailDO> selectListByDispatchId(Long dispatchId) {
return selectList(TaskDispatchDetailDO::getDispatchId, dispatchId);
}
default int deleteByDispatchId(Long dispatchId) {
return delete(TaskDispatchDetailDO::getDispatchId, dispatchId);
}
}

@ -0,0 +1,36 @@
package com.chanko.yunxi.mes.module.heli.dal.mysql.taskdispatch;
import java.util.*;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.mybatis.core.query.LambdaQueryWrapperX;
import com.chanko.yunxi.mes.framework.mybatis.core.mapper.BaseMapperX;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.taskdispatch.TaskDispatchDO;
import org.apache.ibatis.annotations.Mapper;
import com.chanko.yunxi.mes.module.heli.controller.admin.taskdispatch.vo.*;
/**
* Mapper
*
* @author
*/
@Mapper
public interface TaskDispatchMapper extends BaseMapperX<TaskDispatchDO> {
default PageResult<TaskDispatchDO> selectPage(TaskDispatchPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<TaskDispatchDO>()
.eqIfPresent(TaskDispatchDO::getCode, reqVO.getCode())
.eqIfPresent(TaskDispatchDO::getDispatchType, reqVO.getDispatchType())
.eqIfPresent(TaskDispatchDO::getTaskId, reqVO.getTaskId())
.eqIfPresent(TaskDispatchDO::getPlanId, reqVO.getPlanId())
.eqIfPresent(TaskDispatchDO::getProjectId, reqVO.getProjectId())
.eqIfPresent(TaskDispatchDO::getProjectSubId, reqVO.getProjectSubId())
.eqIfPresent(TaskDispatchDO::getBomDetailId, reqVO.getBomDetailId())
.eqIfPresent(TaskDispatchDO::getDispatchStatus, reqVO.getDispatchStatus())
.eqIfPresent(TaskDispatchDO::getRemark, reqVO.getRemark())
.eqIfPresent(TaskDispatchDO::getStatus, reqVO.getStatus())
.betweenIfPresent(TaskDispatchDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(TaskDispatchDO::getId));
}
}

@ -3,10 +3,16 @@ package com.chanko.yunxi.mes.module.heli.manager;
import cn.hutool.core.lang.UUID; import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.framework.operatelog.core.enums.OperateTypeEnum;
import com.chanko.yunxi.mes.framework.operatelog.core.service.OperateLogFrameworkService;
import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderSaveReqVO; import com.chanko.yunxi.mes.module.heli.controller.admin.deliverorder.vo.DeliverOrderSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processbom.vo.ProcessBomSaveReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.processdesign.vo.ProcessDesignSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.deliverorder.DeliverOrderSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processbom.ProcessBomDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.processdesign.ProcessDesignDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.projectorder.ProjectOrderSubDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storage.StorageDO;
@ -14,25 +20,31 @@ import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagelog.StorageLogDO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO; import com.chanko.yunxi.mes.module.heli.dal.dataobject.storagemat.StorageMatDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.deliverorder.DeliverOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.material.MaterialMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processbom.ProcessBomMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.processdesign.ProcessDesignMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.projectorder.ProjectOrderSubMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storage.StorageMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagelog.StorageLogMapper;
import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.storagemat.StorageMatMapper;
import com.chanko.yunxi.mes.module.heli.enums.*; import com.chanko.yunxi.mes.module.heli.enums.*;
import com.chanko.yunxi.mes.module.heli.service.plan.PlanService;
import com.chanko.yunxi.mes.module.heli.service.processbom.ProcessBomService;
import com.chanko.yunxi.mes.module.heli.service.processdesign.ProcessDesignService;
import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper;
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.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN; import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.STOCK_IN;
/** /**
* *
* *
* @author chenxi * @author chenxi
* @date 2024-01-31 10:03 * @date 2024-01-31 10:03
@ -54,6 +66,18 @@ public class CrossOrderManager {
private StorageLogMapper storageLogMapper; private StorageLogMapper storageLogMapper;
@Resource @Resource
private MaterialMapper materialMapper; private MaterialMapper materialMapper;
@Resource
private PlanService planService;
@Resource
private ProcessDesignService processDesignService;
@Resource
private ProcessDesignMapper processDesignMapper;
@Resource
private ProcessBomService processBomService;
@Resource
private OperateLogFrameworkService operateLogFrameworkService;
@Resource
private ProcessBomMapper processBomMapper;
/** /**
* *
@ -191,4 +215,127 @@ public class CrossOrderManager {
} }
}); });
} }
/**
*
* @param projectId
*/
@Transactional(rollbackFor = Exception.class)
public void generatePlan(Long projectId) {
// 锁定该订单
projectOrderMapper.selectOne(new LambdaQueryWrapper<ProjectOrderDO>() {{
eq(ProjectOrderDO::getId, projectId);
last("LIMIT 1 FOR UPDATE");
}});
Long planId = planService.generatePlanByProjectId(projectId);
// 同时生成工艺设计
generateProcessDesign(projectId, planId);
}
/**
*
* @param projectId
* @param planId
*/
@Transactional(rollbackFor = Exception.class)
public void generateProcessDesign(Long projectId, Long planId){
// 判断是否已经生成
List<ProjectOrderSubDO> projectSubList = projectOrderSubMapper.selectListByProjectOrderId(projectId);
if(projectSubList != null){
List<Long> projectSubIdList = projectSubList.stream().map(ProjectOrderSubDO::getId).collect(Collectors.toList());
List<ProcessDesignDO> processDesignDOList = processDesignMapper.selectList(new LambdaQueryWrapper<ProcessDesignDO>() {{
in(ProcessDesignDO::getProjectSubId, projectSubIdList);
eq(ProcessDesignDO::getProcessDesignType, ProcessDesignTypeEnum.BLUEPRINT_3D.name());
}});
// 只考虑增加情况
if( projectSubIdList.size() > processDesignDOList.size()){
List<Long> existProjectSubIdList = processDesignDOList.stream().map(ProcessDesignDO::getProjectSubId).collect(Collectors.toList());
List<Long> needSavedProjectSubIdList = projectSubIdList.stream().filter(projectSubId -> !existProjectSubIdList.contains(projectSubId)).collect(Collectors.toList());
// 如未插入过 则生成铸造工艺
if(existProjectSubIdList.isEmpty()){
ProcessDesignSaveReqVO saveReqVO = new ProcessDesignSaveReqVO();
saveReqVO.setPlanId(planId)
.setProcessDesignType(ProcessDesignTypeEnum.BLUEPRINT_FOUNDRY_TECHNOLOGY.name())
.setStatus(ValidStatusEnum.VALID.getCode())
.setProjectId(projectId);
processDesignService.createProcessDesign(saveReqVO);
}
// 按每个子项目生成工艺设计
if(!needSavedProjectSubIdList.isEmpty()){
LocalDateTime startTime = LocalDateTime.now();
needSavedProjectSubIdList.forEach(projectSubId -> {
ProcessDesignSaveReqVO threeD = new ProcessDesignSaveReqVO();
threeD.setPlanId(planId)
.setProcessDesignType(ProcessDesignTypeEnum.BLUEPRINT_3D.name())
.setStatus(ValidStatusEnum.VALID.getCode())
.setProjectSubId(projectSubId)
.setProjectId(projectId);
processDesignService.createProcessDesign(threeD);
ProcessDesignSaveReqVO twoD = new ProcessDesignSaveReqVO();
twoD.setPlanId(planId)
.setProcessDesignType(ProcessDesignTypeEnum.BLUEPRINT_2D.name())
.setStatus(ValidStatusEnum.VALID.getCode())
.setProjectSubId(projectSubId)
.setProjectId(projectId);
processDesignService.createProcessDesign(twoD);
ProcessDesignSaveReqVO blank = new ProcessDesignSaveReqVO();
blank.setPlanId(planId)
.setProcessDesignType(ProcessDesignTypeEnum.BLUEPRINT_WORKBLANK.name())
.setStatus(ValidStatusEnum.VALID.getCode())
.setProjectSubId(projectSubId)
.setProjectId(projectId);
processDesignService.createProcessDesign(blank);
ProcessBomSaveReqVO bomSaveReqVO = new ProcessBomSaveReqVO();
bomSaveReqVO.setPlanId(planId)
.setProjectId(projectId)
.setProjectSubId(projectSubId)
.setVersion(0)
.setBomStatus(ProcessBomStatusEnum.SAVE.getCode())
.setStatus(ValidStatusEnum.VALID.getCode())
.setActive(OperateTypeEnum.CREATE.name());
processBomService.operateProcessBom(bomSaveReqVO);
// 手动记录日志
operateLogFrameworkService.createOperateLog(startTime,
BusinesTypeEnum.PROCESS_BOM.name(),
bomSaveReqVO.getId(),
OperateTypeEnum.CREATE.getType(),
bomSaveReqVO.getActiveOpinion());
});
}
}
}
}
/**
*
* @param projectId
*/
@Transactional(rollbackFor = Exception.class)
public void updatePlanStatusToTerminate(Long projectId) {
planService.updatePlanStatusToTerminateByProjectId(projectId);
// 同时更新工艺设计状态
updateProcessDesignStatusToTerminate(projectId);
}
/**
*
* @param projectId
*/
public void updateProcessDesignStatusToTerminate(Long projectId){
List<ProcessBomDO> processBomDOList = processBomMapper.selectList(new LambdaQueryWrapper<ProcessBomDO>() {{
eq(ProcessBomDO::getProjectId, projectId);
}});
if(!processBomDOList.isEmpty()){
processBomDOList.forEach(processBomDO -> {
processBomDO.setBomStatus(ProcessBomStatusEnum.TERMINATE.getCode());
});
processBomMapper.updateBatch(processBomDOList);
}
}
} }

@ -1,26 +1,20 @@
package com.chanko.yunxi.mes.module.heli.service.customer; package com.chanko.yunxi.mes.module.heli.service.customer;
import cn.hutool.core.lang.UUID;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.material.MaterialDO;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult; import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils; import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.CustomerPageReqVO;
import com.chanko.yunxi.mes.module.heli.controller.admin.customer.vo.CustomerSaveReqVO;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.customer.CustomerDO;
import com.chanko.yunxi.mes.module.heli.dal.mysql.customer.CustomerMapper; import com.chanko.yunxi.mes.module.heli.dal.mysql.customer.CustomerMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.CUSTOMER; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.CODE_REPEAT;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.WORKSHOP; import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.CUSTOMER_NOT_EXISTS;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
/** /**
* Service * Service

@ -52,4 +52,7 @@ public interface EquipService {
*/ */
PageResult<EquipDO> getEquipPage(EquipPageReqVO pageReqVO); PageResult<EquipDO> getEquipPage(EquipPageReqVO pageReqVO);
List<Map<String, Object>> getEquipSimpleList();
List<Map<String, Object>> getEquipNoStatusSimpleList();
} }

@ -71,4 +71,13 @@ public class EquipServiceImpl implements EquipService {
return equipMapper.selectPage(pageReqVO); return equipMapper.selectPage(pageReqVO);
} }
@Override
public List<Map<String, Object>> getEquipSimpleList(){
return equipMapper.selectSimpleList();
}
@Override
public List<Map<String, Object>> getEquipNoStatusSimpleList(){
return equipMapper.selectNoStatusSimpleList();
}
} }

@ -0,0 +1,55 @@
package com.chanko.yunxi.mes.module.heli.service.materialplan;
import java.util.*;
import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface MaterialPlanService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterialPlan(@Valid MaterialPlanSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterialPlan(@Valid MaterialPlanSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterialPlan(Long id);
/**
*
*
* @param id
* @return
*/
MaterialPlanDO getMaterialPlan(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialPlanDO> getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO);
}

@ -0,0 +1,103 @@
package com.chanko.yunxi.mes.module.heli.service.materialplan;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.serialnumber.SerialNumberDO;
import com.chanko.yunxi.mes.module.heli.service.serialnumber.SerialNumberService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplan.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplan.MaterialPlanDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
import com.chanko.yunxi.mes.framework.common.util.object.BeanUtils;
import com.chanko.yunxi.mes.module.heli.dal.mysql.materialplan.MaterialPlanMapper;
import static com.chanko.yunxi.mes.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.MATERIAL_PLAN;
import static com.chanko.yunxi.mes.module.heli.enums.CodeEnum.PROJECT_PLAN;
import static com.chanko.yunxi.mes.module.heli.enums.ErrorCodeConstants.*;
/**
* Service
*
* @author
*/
@Service
@Validated
public class MaterialPlanServiceImpl implements MaterialPlanService {
@Resource
private MaterialPlanMapper materialPlanMapper;
@Resource
private SerialNumberService serialNumberService;
@Override
public Long createMaterialPlan(MaterialPlanSaveReqVO createReqVO) {
// 插入
MaterialPlanDO materialPlan = BeanUtils.toBean(createReqVO, MaterialPlanDO.class);
// 月度流水号
SerialNumberDO serialNumberDO = new SerialNumberDO();
serialNumberDO = serialNumberService.getSerialNumber(MATERIAL_PLAN.name(), new SimpleDateFormat("yyyyMMdd").format(new Date()));
serialNumberDO.setSerialNumber(serialNumberDO.getSerialNumber()+1);
materialPlan.setProjectMaterialPlanNo(MATERIAL_PLAN.getCode(serialNumberDO.getSerialNumber().toString()));
materialPlanMapper.insert(materialPlan);
// 回写序列记录
serialNumberService.updateSerialNumber(serialNumberDO);
// 返回
return materialPlan.getId();
}
@Override
public void updateMaterialPlan(MaterialPlanSaveReqVO updateReqVO) {
// 校验存在
validateMaterialPlanExists(updateReqVO.getId());
// 更新
MaterialPlanDO updateObj = BeanUtils.toBean(updateReqVO, MaterialPlanDO.class);
LocalDateTime currTime = LocalDateTime.now();
if(updateReqVO.getStatus()==2){
updateObj.setSubmitTime(currTime);
}
if(updateReqVO.getStatus()== 3 || updateReqVO.getStatus() == 4){
updateObj.setAuditTime(currTime);
}
materialPlanMapper.updateById(updateObj);
}
@Override
public void deleteMaterialPlan(Long id) {
// 校验存在
validateMaterialPlanExists(id);
// 删除
materialPlanMapper.deleteById(id);
}
private void validateMaterialPlanExists(Long id) {
if (materialPlanMapper.selectById(id) == null) {
throw exception(MATERIAL_PLAN_NOT_EXISTS);
}
}
@Override
public MaterialPlanDO getMaterialPlan(Long id) {
return materialPlanMapper.selectById(id);
}
@Override
public PageResult<MaterialPlanDO> getMaterialPlanPage(MaterialPlanPageReqVO pageReqVO) {
return materialPlanMapper.selectPage(pageReqVO);
}
}

@ -0,0 +1,55 @@
package com.chanko.yunxi.mes.module.heli.service.materialplandetail;
import java.util.*;
import javax.validation.*;
import com.chanko.yunxi.mes.module.heli.controller.admin.materialplandetail.vo.*;
import com.chanko.yunxi.mes.module.heli.dal.dataobject.materialplandetail.MaterialPlanDetailDO;
import com.chanko.yunxi.mes.framework.common.pojo.PageResult;
import com.chanko.yunxi.mes.framework.common.pojo.PageParam;
/**
* Service
*
* @author
*/
public interface MaterialPlanDetailService {
/**
*
*
* @param createReqVO
* @return
*/
Long createMaterialPlanDetail(@Valid MaterialPlanDetailSaveReqVO createReqVO);
/**
*
*
* @param updateReqVO
*/
void updateMaterialPlanDetail(@Valid MaterialPlanDetailSaveReqVO updateReqVO);
/**
*
*
* @param id
*/
void deleteMaterialPlanDetail(Long id);
/**
*
*
* @param id
* @return
*/
MaterialPlanDetailDO getMaterialPlanDetail(Long id);
/**
*
*
* @param pageReqVO
* @return
*/
PageResult<MaterialPlanDetailDO> getMaterialPlanDetailPage(MaterialPlanDetailPageReqVO pageReqVO);
}

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save