From bf30552ba8237818b2d71b8dadfd0f1538457131 Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期二, 08 四月 2025 14:54:56 +0800 Subject: [PATCH] 点检工单 --- lxzn-module-eam/pom.xml | 5 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java | 21 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java | 126 ++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java | 20 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java | 18 + lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java | 14 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java | 344 ++++++++++++++++++++++++++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java | 52 ++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java | 92 ++++++ 9 files changed, 673 insertions(+), 19 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java index 313c0c8..43926c7 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/dncFlow/controller/DispatchFileController.java @@ -183,10 +183,16 @@ return Result.OK(dispatchFile); } - @GetMapping(value = "/selectVoById") - public Result<?> selectVoById(@RequestParam(name="id") String id){ - return dispatchFileService.queryDispatchFile(id); - } + /** + * 鏌ヨ瀹$鍩烘湰淇℃伅 + * @param id + * @return + */ + @ApiOperation(value = "鏌ヨ瀹$鍩烘湰淇℃伅", notes = "鏌ヨ瀹$鍩烘湰淇℃伅") + @GetMapping(value = "/selectVoById") + public Result<?> selectVoById(@RequestParam(name="id") String id){ + return dispatchFileService.queryDispatchFile(id); + } /** * 瀵煎嚭excel diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java new file mode 100644 index 0000000..b90a87c --- /dev/null +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/constant/InspectionStatus.java @@ -0,0 +1,21 @@ +package org.jeecg.modules.eam.constant; + +public enum InspectionStatus { + INIT("1", "寰呯偣妫�"), + IN_PROGRESS("2", "鐐规涓�"), + COMPLETED("3", "鐐规瀹屾垚" ), + CONFIRMED("4", "宸茬‘璁�" ); + + private final String code; + private final String desc; + + InspectionStatus(String code, String desc) { + + this.code = code; + this.desc = desc; + } + + // Getters + public String getCode() { return code; } + public String getDesc() { return desc; } +} diff --git a/lxzn-module-eam/pom.xml b/lxzn-module-eam/pom.xml index 53d4c00..4e188e8 100644 --- a/lxzn-module-eam/pom.xml +++ b/lxzn-module-eam/pom.xml @@ -30,6 +30,11 @@ <artifactId>lxzn-module-mdc-common</artifactId> <version>3.4.3</version> </dependency> + <dependency> + <groupId>org.jeecgframework.boot</groupId> + <artifactId>lxzn-module-flowable</artifactId> + <version>${jeecgboot.version}</version> + </dependency> </dependencies> </project> diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java index 8c1431c..428905e 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderController.java @@ -10,8 +10,13 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.eam.constant.BusinessCodeConst; +import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.EamInspectionOrder; +import org.jeecg.modules.eam.request.EamInspectionOrderRequest; import org.jeecg.modules.eam.service.IEamInspectionOrderService; +import org.jeecg.modules.eam.service.IEamMaintenanceStandardService; +import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @@ -31,9 +36,12 @@ @RequestMapping("/eam/eamInspectionOrder") @Slf4j public class EamInspectionOrderController extends JeecgController<EamInspectionOrder, IEamInspectionOrderService> { - @Autowired - private IEamInspectionOrderService eamInspectionOrderService; - + @Autowired + private IEamInspectionOrderService eamInspectionOrderService; + @Autowired + private ISysBusinessCodeRuleService businessCodeRuleService; + @Autowired + private IEamMaintenanceStandardService eamMaintenanceStandardService; /** * 鍒嗛〉鍒楄〃鏌ヨ * @@ -56,36 +64,102 @@ return Result.OK(pageList); } + /** + * 鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅 + * @param id + * @return + */ + @ApiOperation(value = "鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅", notes = "鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅") + @GetMapping(value = "/selectVoById") + public Result<?> selectVoById(@RequestParam(name="id") String id){ + return eamInspectionOrderService.selectVoById(id); + } + + /** * 娣诲姞 * - * @param eamInspectionOrder + * @param eamInspectionOrderRequest * @return */ @AutoLog(value = "鐐规宸ュ崟-娣诲姞") @ApiOperation(value="鐐规宸ュ崟-娣诲姞", notes="鐐规宸ュ崟-娣诲姞") //@RequiresPermissions("org.jeecg.modules:鐐规宸ュ崟:add") @PostMapping(value = "/add") - public Result<String> add(@RequestBody EamInspectionOrder eamInspectionOrder) { - eamInspectionOrderService.save(eamInspectionOrder); + public Result<String> add(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) { + String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.INSPECTION_ORDER_CODE_RULE); + eamInspectionOrderRequest.setOrderNum(codeSeq); + eamInspectionOrderRequest.setCreationMethod(String.valueOf(OrderCreationMethodEnum.AUTO)); + eamInspectionOrderService.addInspectionOrder(eamInspectionOrderRequest); return Result.OK("娣诲姞鎴愬姛锛�"); } /** * 缂栬緫 * - * @param eamInspectionOrder + * @param eamInspectionOrderRequest * @return */ @AutoLog(value = "鐐规宸ュ崟-缂栬緫") @ApiOperation(value="鐐规宸ュ崟-缂栬緫", notes="鐐规宸ュ崟-缂栬緫") //@RequiresPermissions("org.jeecg.modules:鐐规宸ュ崟:edit") @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST}) - public Result<String> edit(@RequestBody EamInspectionOrder eamInspectionOrder) { - eamInspectionOrderService.updateById(eamInspectionOrder); + public Result<String> edit(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) { + eamInspectionOrderService.editInspectionOrder(eamInspectionOrderRequest); return Result.OK("缂栬緫鎴愬姛!"); } + /** + * 棰嗗彇鐐规宸ュ崟 + * @param id + * @return + */ + @AutoLog(value = "鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟") + @ApiOperation(value="鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟", notes="鐐规宸ュ崟-棰嗗彇鐐规宸ュ崟") + @GetMapping(value = "/receiveInspectionOrder") + public Result<String> receiveInspectionOrder(@RequestParam(name="id") String id) { + eamInspectionOrderService.takeInspectionOrder(id); + return Result.OK("棰嗗彇鎴愬姛"); + } + + /** + * 浣滃簾鐐规宸ュ崟 + * @param id + * @return + */ + @AutoLog(value = "鐐规宸ュ崟-浣滃簾鐐规宸ュ崟") + @ApiOperation(value="鐐规宸ュ崟-浣滃簾鐐规宸ュ崟", notes="鐐规宸ュ崟-浣滃簾鐐规宸ュ崟") + @GetMapping(value = "/cancelInspectionOrder") + public Result<String> cancelInspectionOrder(@RequestParam(name="id") String id) { + eamInspectionOrderService.cancelInspectionOrder(id); + return Result.OK("浣滃簾鎴愬姛"); + } + + /** + * 鎵归噺浣滃簾涓庨鍙� + * @param ids + * @param type + * @return + */ + @AutoLog(value = "鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�") + @ApiOperation(value="鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�", notes="鐐规宸ュ崟-鎵归噺浣滃簾涓庨鍙�") + @GetMapping(value = "/cancelOrReceive") + public Result<?> cancelOrReceive(@RequestParam(name="ids") String ids, @RequestParam(name="type") String type) { + return eamInspectionOrderService.batchCancelOrTakeInspectionOrder(ids, type); + } + + /** + * 鐐规娴佺▼ + * @param eamInspectionOrderRequest + * @return + */ + @AutoLog(value = "鐐规娴佺▼") + @ApiOperation(value="鐐规宸ュ崟-鐐规娴佺▼", notes="鐐规宸ュ崟-鐐规娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody EamInspectionOrderRequest eamInspectionOrderRequest) { + return eamInspectionOrderService.inspectionProcess(eamInspectionOrderRequest); + } + /** * 閫氳繃id鍒犻櫎 * diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java index a5168af..931aa4a 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamInspectionOrderDetailController.java @@ -1,5 +1,6 @@ package org.jeecg.modules.eam.controller; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -19,8 +20,9 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Arrays; +import java.util.List; - /** +/** * @Description: 鐐规宸ュ崟鏄庣粏 * @Author: jeecg-boot * @Date: 2025-04-02 @@ -158,4 +160,20 @@ return super.importExcel(request, response, EamInspectionOrderDetail.class); } + /** + * 涓�娆″姞杞� + * + * @param orderId + * @return + */ + @ApiOperation(value = "淇濆吇鏍囧噯鏄庣粏-涓嶅垎椤靛垪琛ㄦ煡璇�", notes = "淇濆吇鏍囧噯鏄庣粏-涓嶅垎椤靛垪琛ㄦ煡璇�") + @GetMapping(value = "/queryList") + public Result<?> queryList(@RequestParam("orderId") String orderId) { + LambdaQueryWrapper<EamInspectionOrderDetail> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EamInspectionOrderDetail::getOrderId, orderId); + queryWrapper.orderByAsc(EamInspectionOrderDetail::getItemCode); + List<EamInspectionOrderDetail> list = eamInspectionOrderDetailService.list(queryWrapper); + return Result.OK(list); + } + } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java index fb934c4..563f2f9 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/EamInspectionOrder.java @@ -64,12 +64,12 @@ /**璁惧ID*/ @Excel(name = "璁惧ID", width = 15) @ApiModelProperty(value = "璁惧ID") - @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id") + @Dict(dictTable = "eam_equipment", dicCode = "id", dicText = "equipment_code") private String equipmentId; /**鏍囧噯ID*/ @Excel(name = "淇濆吇鏍囧噯ID", width = 15) @ApiModelProperty(value = "淇濆吇鏍囧噯ID") - @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id") + @Dict(dictTable = "eam_maintenance_standard", dicCode = "id", dicText = "standard_code") private String standardId; /**鐐规鏃ユ湡*/ @Excel(name = "鐐规鏃ユ湡锛堣鍒掞級", width = 15, format = "yyyy-MM-dd") @@ -97,10 +97,12 @@ /**鍒涘缓鏂瑰紡*/ @Excel(name = "鍒涘缓鏂瑰紡", width = 15) @ApiModelProperty(value = "鍒涘缓鏂瑰紡") + @Dict(dicCode = "order_creation_method") private String creationMethod; /**鐐规鐘舵��*/ @Excel(name = "鐐规鐘舵��", width = 15) - @ApiModelProperty(value = "鐐规鐘舵�� 寰呯偣妫�-寰呯‘璁�-宸插畬鎴�") + @ApiModelProperty(value = "鐐规鐘舵�� 寰呯偣妫�-鐐规涓�-寰呯‘璁�-宸插畬鎴�-浣滃簾") + @Dict(dicCode = "inspection_status") private String inspectionStatus; /**鐝粍闀跨‘璁�*/ @Excel(name = "鐝粍闀跨‘璁�", width = 15) @@ -121,4 +123,14 @@ @Excel(name = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧-鎵ц鏃�", width = 15) @ApiModelProperty(value = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧") private String imageFiles; + + /**鏍囧噯鍚嶇О*/ + @ApiModelProperty(value = "鏍囧噯鍚嶇О") + private transient String standardName; + /**淇濆吇鍛ㄦ湡;鍗曚綅:澶�*/ + @ApiModelProperty(value = "淇濆吇鍛ㄦ湡;鍗曚綅:澶�") + private transient Integer maintenancePeriod; + /**璁惧缂栧彿*/ + @ApiModelProperty(value = "璁惧缂栧彿") + private transient String equipmentCode; } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java new file mode 100644 index 0000000..3eb586f --- /dev/null +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamInspectionOrderRequest.java @@ -0,0 +1,126 @@ +package org.jeecg.modules.eam.request; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableLogic; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.api.vo.FileUploadResult; +import org.jeecg.common.aspect.annotation.Dict; +import org.jeecg.modules.eam.entity.EamInspectionOrderDetail; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; +import org.jeecgframework.poi.excel.annotation.Excel; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; +import java.util.List; + +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +public class EamInspectionOrderRequest extends FlowTaskVo implements Serializable { + private static final long serialVersionUID = 1L; + + /**涓婚敭*/ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭") + private String id; + /**鍒涘缓浜�*/ + @ApiModelProperty(value = "鍒涘缓浜�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String createBy; + /**鍒涘缓鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + /**鏇存柊浜�*/ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + /**鏇存柊鏃堕棿*/ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鏇存柊鏃堕棿") + private Date updateTime; + /**鍒犻櫎鏍囪*/ + @Excel(name = "鍒犻櫎鏍囪", width = 15) + @ApiModelProperty(value = "鍒犻櫎鏍囪") + @TableLogic + private Integer delFlag; + /**宸ュ崟鍙�*/ + @Excel(name = "宸ュ崟鍙�", width = 15) + @ApiModelProperty(value = "宸ュ崟鍙�") + private String orderNum; + /**璁惧ID*/ + @Excel(name = "璁惧ID", width = 15) + @ApiModelProperty(value = "璁惧ID") + @Dict(dictTable = "eam_equipment", dicCode = "equipment_code", dicText = "id") + private String equipmentId; + /**鏍囧噯ID*/ + @Excel(name = "淇濆吇鏍囧噯ID", width = 15) + @ApiModelProperty(value = "淇濆吇鏍囧噯ID") + @Dict(dictTable = "eam_maintenance_standard", dicCode = "standard_code", dicText = "id") + private String standardId; + /**鐐规鏃ユ湡*/ + @Excel(name = "鐐规鏃ユ湡锛堣鍒掞級", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鐐规鏃ユ湡") + private Date inspectionDate; + /**鐐规杩囨湡鏃堕棿*/ + @Excel(name = "鐐规杩囨湡鏃堕棿", width = 15, format = "yyyy-MM-dd") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern="yyyy-MM-dd") + @ApiModelProperty(value = "鐐规杩囨湡鏃堕棿") + private Date expirationTime; + /**鐐规鏃堕棿*/ + @Excel(name = "鐐规鏃堕棿锛堝疄闄咃級", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鐐规鏃堕棿") + private Date operateTime; + /**鐐规浜�*/ + @Excel(name = "鐐规浜�", width = 15) + @ApiModelProperty(value = "鐐规浜�-鏄鍙栦汉") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String operator; + /**鍒涘缓鏂瑰紡*/ + @Excel(name = "鍒涘缓鏂瑰紡", width = 15) + @ApiModelProperty(value = "鍒涘缓鏂瑰紡") + private String creationMethod; + /**鐐规鐘舵��*/ + @Excel(name = "鐐规鐘舵��", width = 15) + @ApiModelProperty(value = "鐐规鐘舵�� 寰呯偣妫�-寰呯‘璁�-宸插畬鎴�") + private String inspectionStatus; + /**鐝粍闀跨‘璁�*/ + @Excel(name = "鐝粍闀跨‘璁�", width = 15) + @ApiModelProperty(value = "鐝粍闀跨‘璁�--棰嗗彇鍚庝骇鐢�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") + private String confirmUser; + /**纭鏃堕棿*/ + @Excel(name = "纭鏃堕棿", width = 15, format = "yyyy-MM-dd HH:mm:ss") + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "纭鏃堕棿") + private Date confirmTime; + /**澶囨敞*/ + @Excel(name = "澶囨敞", width = 15) + @ApiModelProperty(value = "澶囨敞-鐐规宸ュ崟鍒涘缓澶囨敞") + private String remark; + /**鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧*/ + @Excel(name = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧-鎵ц鏃�", width = 15) + @ApiModelProperty(value = "鐓х墖鏂囦欢ids;id浠ラ�楀彿鍒嗛殧") + private String imageFiles; + + /**涓婁紶鏂囦欢瀵圭郴*/ + @ApiModelProperty(value = "涓婁紶鏂囦欢瀵硅薄") + private List<FileUploadResult> fileList; + + /**鍒楄〃 淇濆吇椤规槑缁�*/ + @ApiModelProperty(value = "鍒楄〃 淇濆吇椤规槑缁�") + private List<EamInspectionOrderDetail> tableDetailList; +} diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java index 11f3831..fdeee05 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamInspectionOrderService.java @@ -1,7 +1,9 @@ package org.jeecg.modules.eam.service; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.common.api.vo.Result; import org.jeecg.modules.eam.entity.EamInspectionOrder; +import org.jeecg.modules.eam.request.EamInspectionOrderRequest; /** * @Description: 鐐规宸ュ崟 @@ -11,4 +13,54 @@ */ public interface IEamInspectionOrderService extends IService<EamInspectionOrder> { + /** + * 鏂板鐐规宸ュ崟 + * @param eamInspectionOrderRequest + * @return + */ + boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest); + + /** + * 缂栬緫鐐规宸ュ崟 + * @param eamInspectionOrderRequest + * @return + */ + boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest); + + /** + * 棰嗗彇鐐规宸ュ崟 + * @param id + * @return + */ + boolean takeInspectionOrder(String id); + + /** + * 浣滃簾鐐规宸ュ崟 + * @param id + * @return + */ + boolean cancelInspectionOrder(String id); + + /** + * 鎵归噺浣滃簾涓庨鍙� + * @param ids + * @param type + * @return + */ + Result<?> batchCancelOrTakeInspectionOrder(String ids, String type); + + /** + * 鏌ヨ鐐规宸ュ崟鍩烘湰淇℃伅 + * @param id + * @return + */ + Result<?> selectVoById(String id); + + /** + * 鐐规娴佺▼ + * @param eamInspectionOrderRequest + * @return + */ + Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest); + } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java index 925a9f5..b26567c 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamInspectionOrderServiceImpl.java @@ -1,10 +1,40 @@ package org.jeecg.modules.eam.service.impl; +import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.shiro.SecurityUtils; +import org.flowable.engine.TaskService; +import org.flowable.task.api.Task; +import org.jeecg.common.api.vo.Result; +import org.jeecg.common.system.vo.LoginUser; +import org.jeecg.modules.eam.constant.InspectionStatus; +import org.jeecg.modules.eam.entity.EamEquipment; import org.jeecg.modules.eam.entity.EamInspectionOrder; +import org.jeecg.modules.eam.entity.EamInspectionOrderDetail; import org.jeecg.modules.eam.mapper.EamInspectionOrderMapper; +import org.jeecg.modules.eam.request.EamInspectionOrderRequest; +import org.jeecg.modules.eam.service.IEamEquipmentService; +import org.jeecg.modules.eam.service.IEamInspectionOrderDetailService; import org.jeecg.modules.eam.service.IEamInspectionOrderService; +import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; +import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; +import org.jeecg.modules.flowable.apithird.service.FlowCommonService; +import org.jeecg.modules.flowable.service.IFlowDefinitionService; +import org.jeecg.modules.flowable.service.IFlowTaskService; +import org.jeecg.modules.system.entity.SysUser; +import org.jeecg.modules.system.service.IMdcUserProductionService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** * @Description: 鐐规宸ュ崟 @@ -12,7 +42,317 @@ * @Date: 2025-04-02 * @Version: V1.0 */ -@Service -public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService { +@Service("IEamInspectionOrderService") +public class EamInspectionOrderServiceImpl extends ServiceImpl<EamInspectionOrderMapper, EamInspectionOrder> implements IEamInspectionOrderService, FlowCallBackServiceI { + @Autowired + private IEamInspectionOrderDetailService eamInspectionOrderDetailService; + @Resource + private FlowCommonService flowCommonService; + @Resource + private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowTaskService flowTaskService; + @Autowired + private IEamEquipmentService eamEquipmentService; + @Autowired + private FlowMyBusinessServiceImpl flowMyBusinessService; + @Autowired + private TaskService taskService; + @Autowired + private IEamEquipmentService iEamEquipmentService; + @Autowired + private IMdcUserProductionService mdcUserProductionService; + @Override + @Transactional(rollbackFor = Exception.class) + public boolean addInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) { + EamInspectionOrder eamInspectionOrder = new EamInspectionOrder(); + BeanUtils.copyProperties(eamInspectionOrderRequest,eamInspectionOrder); + //淇敼鐘舵�� + if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){ + eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode()); + }else { + eamInspectionOrder.setInspectionStatus(InspectionStatus.INIT.getCode()); + } + save(eamInspectionOrder); + //澶勭悊鏄庣粏鏁版嵁 + if(CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) { + eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> { + tableDetail.setOrderId(eamInspectionOrder.getId()); + tableDetail.setId(null); + }); + eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList()); + } + if (StrUtil.isNotBlank(eamInspectionOrderRequest.getOperator())){ + triggerProcess(eamInspectionOrder); + } + return true; + } + /** + * 瑙﹀彂娴佺▼ + * @param eamInspectionOrder + * @return + */ + public boolean triggerProcess(EamInspectionOrder eamInspectionOrder) { + EamEquipment equipment = eamEquipmentService.getById(eamInspectionOrder.getEquipmentId()); + if (equipment == null) { + return false; + }else { + eamInspectionOrder.setEquipmentCode(equipment.getEquipmentCode()); + } + System.out.println("璁惧鐐规锛�" + eamInspectionOrder.getId()); + flowCommonService.initActBusiness("宸ュ崟鍙凤細"+eamInspectionOrder.getOrderNum()+"璁惧缂栧彿"+eamInspectionOrder.getEquipmentCode()+"杩涜璁惧鐐规", + eamInspectionOrder.getId(), "IEamInspectionOrderService", "eam_inspection", null); + Map<String, Object> variables = new HashMap<>(); + variables.put("dataId", eamInspectionOrder.getId()); + if (StrUtil.isEmpty(eamInspectionOrder.getRemark())){ + variables.put("organization", "鏂板鐐规宸ュ崟榛樿鍚姩娴佺▼"); + variables.put("comment", "鏂板鐐规宸ュ崟榛樿鍚姩娴佺▼"); + }else { + variables.put("organization", eamInspectionOrder.getRemark()); + variables.put("comment", eamInspectionOrder.getRemark()); + } + variables.put("proofreading",true); + List<String> usernames=new ArrayList<>(); + usernames.add(eamInspectionOrder.getOperator()); + variables.put("NextAssignee", usernames); + Result result= flowDefinitionService.startProcessInstanceByKey("eam_inspection", variables); + return result.isSuccess(); + } + + + @Override + public boolean editInspectionOrder(EamInspectionOrderRequest eamInspectionOrderRequest) { + EamInspectionOrder eamInspectionOrder = new EamInspectionOrder(); + BeanUtils.copyProperties(eamInspectionOrderRequest, eamInspectionOrder); + updateById(eamInspectionOrder); + //澶勭悊鏄庣粏鏁版嵁 + if (CollectionUtil.isNotEmpty(eamInspectionOrderRequest.getTableDetailList())) { + eamInspectionOrderRequest.getTableDetailList().forEach(tableDetail -> { + tableDetail.setOrderId(eamInspectionOrder.getId()); + }); + //鍒犻櫎鏄庣粏 + eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId())); + eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList()); + } + return true; + } + + /** + * 棰嗗彇鐐规宸ュ崟 + * @param id + * @return + */ + @Override + public boolean takeInspectionOrder(String id){ + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + EamInspectionOrder eamInspectionOrder=this.getById(id); + if (eamInspectionOrder==null) { + return false; + }else { + eamInspectionOrder.setOperator(user.getUsername()); + //淇敼鐘舵�� + eamInspectionOrder.setInspectionStatus(InspectionStatus.IN_PROGRESS.getCode()); + this.triggerProcess(eamInspectionOrder); + this.updateById(eamInspectionOrder); + return true; + } + } + + /** + * 浣滃簾鐐规宸ュ崟 + * @param id + * @return + */ + @Override + public boolean cancelInspectionOrder(String id){ + EamInspectionOrder eamInspectionOrder = this.getById(id); + if (eamInspectionOrder == null) { + return false; + }else { + eamInspectionOrder.setInspectionStatus("5"); + return updateById(eamInspectionOrder); + } + } + + /** + * 鐐规娴佺▼ + * @param eamInspectionOrderRequest + * @return + */ + @Override + @Transactional + public Result<?> inspectionProcess(EamInspectionOrderRequest eamInspectionOrderRequest){ + try { + // 鍙傛暟鏍¢獙 + if (!StrUtil.isNotBlank(eamInspectionOrderRequest.getTaskId()) || !StrUtil.isNotBlank(eamInspectionOrderRequest.getDataId())) { + return Result.error("闈炴硶鍙傛暟"); + } + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + String userId = user.getId(); + eamInspectionOrderRequest.setAssignee(user.getUsername()); + if (!StrUtil.isNotBlank(userId)) { + return Result.error("璐﹀彿涓嶅瓨鍦�"); + } + + // 鏁版嵁鏌ヨ + EamInspectionOrder eamInspectionOrder = this.getById(eamInspectionOrderRequest.getDataId()); + if (eamInspectionOrder == null) { + return Result.error("鏈壘鍒板搴旀暟鎹�"); + } + + // 2. 鏌ヨ娴佺▼涓氬姟璁板綍锛堝鐞嗙┖缁撴灉锛� + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new QueryWrapper<FlowMyBusiness>() + .eq("process_instance_id", eamInspectionOrderRequest.getInstanceId()) + ); + if (businessList.isEmpty()) { + return Result.error("娴佺▼璁板綍涓嶅瓨鍦�"); + } + FlowMyBusiness flowMyBusiness = businessList.get(0); + + // 3. 鏍¢獙鐢ㄦ埛鏄惁涓哄�欓�夊鐞嗕汉 + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + if (todoUsers == null || !todoUsers.contains(user.getUsername())) { + return Result.error("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 4. 璁ら浠诲姟锛堝鐞嗗凡琚棰嗙殑鎯呭喌锛� + String taskId = flowMyBusiness.getTaskId(); + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return Result.error("浠诲姟涓嶅瓨鍦ㄦ垨宸插畬鎴�"); + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return Result.error("浠诲姟宸茶浠栦汉璁ら"); + } + taskService.claim(taskId, user.getUsername()); + Map<String, Object> values = new HashMap<>(); + if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) { + //鐐规浜虹偣妫�缁撴潫 + //鏌ヨ瀵瑰簲鐝粍闀�,浣滀负涓嬩竴鑺傜偣澶勭悊浜�,瀛樺湪澶氫釜澶勭悊浜� + String orgId=iEamEquipmentService.getById(eamInspectionOrder.getEquipmentId()).getOrgId(); + //绛涢�夊嚭鐝粍闀垮矖浣�,post涓篜CR0003 + List<SysUser> sysUserList= mdcUserProductionService.queryByPostAndProId("PCR0003",orgId); + List<String> usernameList; + if (sysUserList.isEmpty()){ + return Result.error("鏈壘鍒拌璁惧瀵瑰簲杞﹂棿鐨勭彮缁勯暱锛岃鑱旂郴绠$悊鍛樺鐞�"); + }else { + usernameList = sysUserList.stream().map(SysUser::getUsername).collect(Collectors.toList()); + } + // 璁剧疆娴佺▼鍙橀噺 + + values.put("dataId", eamInspectionOrder.getId()); + values.put("organization", "鐐规浜虹偣妫�缁撴潫"); + values.put("comment","鐐规浜虹偣妫�缁撴潫" ); + values.put("NextAssignee", usernameList); + eamInspectionOrderRequest.setComment("鐐规浜虹偣妫�缁撴潫"); + }else { + //鐝粍闀跨‘璁� + values.put("dataId", eamInspectionOrder.getId()); + values.put("organization", "鐝粍闀跨‘璁�"); + values.put("comment","鐝粍闀跨‘璁�" ); + eamInspectionOrderRequest.setComment("鐝粍闀跨‘璁�"); + } + eamInspectionOrderRequest.setValues(values); + // 瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(eamInspectionOrderRequest); + if (result.isSuccess()) { + // 鏇存柊鐘舵�� + if ((InspectionStatus.IN_PROGRESS.getCode()).equals(eamInspectionOrder.getInspectionStatus())) { + //鐐规瀹屾垚 + eamInspectionOrder.setInspectionStatus("3"); + eamInspectionOrder.setInspectionDate(new Date()); + eamInspectionOrderDetailService.remove(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId())); + eamInspectionOrderDetailService.saveBatch(eamInspectionOrderRequest.getTableDetailList()); + this.updateById(eamInspectionOrder); + } + } else if ((InspectionStatus.COMPLETED.getCode()).equals(eamInspectionOrder.getInspectionStatus())){ + // 鐝粍闀跨‘璁や换鍔� + eamInspectionOrder.setInspectionStatus("4"); + eamInspectionOrder.setConfirmUser(user.getUsername()); + eamInspectionOrder.setConfirmTime(new Date()); + this.updateById(eamInspectionOrder); + //澶勭悊寮傚父鏁版嵁杩涘叆缁翠慨鍗� + return result; + } + + return Result.OK("鎿嶄綔鎴愬姛"); + } catch (Exception e) { + return Result.error("鎿嶄綔澶辫触锛�" + e.getMessage()); + } + } + + /** + * 鎵归噺浣滃簾涓庨鍙� + * @param ids + * @param type + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public Result<?> batchCancelOrTakeInspectionOrder(String ids, String type){ + if (type == null) { + return Result.error("璇烽�夋嫨鎿嶄綔绫诲瀷"); + } + LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + List<String> list = Arrays.asList(ids.split(",")); + QueryWrapper<EamInspectionOrder> queryWrapper =new QueryWrapper<>(); + queryWrapper.in("id", list); + queryWrapper.eq("inspection_status", "1"); + List<EamInspectionOrder> eamInspectionOrderList =this.list(queryWrapper); + if (!eamInspectionOrderList.isEmpty()){ + eamInspectionOrderList.forEach(eamInspectionOrder -> { + eamInspectionOrder.setInspectionStatus(type); + if (type.equals("2")){ + eamInspectionOrder.setOperator(loginUser.getUsername()); + }else { + eamInspectionOrder.setOperator(null); + } + }); + this.updateBatchById(eamInspectionOrderList); + } + return Result.OK("鎿嶄綔鎴愬姛"); + } + + + @Override + public Result<?> selectVoById(String id){ + List<EamInspectionOrder> eamInspectionOrders=this.list(new QueryWrapper<EamInspectionOrder>().eq("id", id)); + List<EamInspectionOrderRequest> eamInspectionOrderRequestList=new ArrayList<>(); + eamInspectionOrders.forEach(eamInspectionOrder -> { + EamInspectionOrderRequest eamInspectionOrderRequest=new EamInspectionOrderRequest(); + BeanUtils.copyProperties(eamInspectionOrder,eamInspectionOrderRequest); + List<EamInspectionOrderDetail> eamInspectionOrderDetails=eamInspectionOrderDetailService + .list(new QueryWrapper<EamInspectionOrderDetail>().eq("order_id", eamInspectionOrder.getId())); + eamInspectionOrderRequest.setTableDetailList(eamInspectionOrderDetails); + eamInspectionOrderRequestList.add(eamInspectionOrderRequest); + }); + return Result.ok(eamInspectionOrderRequestList); + } + + @Override + public void afterFlowHandle(FlowMyBusiness business) { + business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 + business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getActStatus(); + } + + @Override + public Object getBusinessDataById(String dataId) { + return this.getById(dataId); + } + + @Override + public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { + return null; + } + + @Override + public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { + //涓氬姟鏄惁骞查娴佺▼锛屼笟鍔″共棰勶紝娴佺▼骞查锛屾寚瀹氫汉鍛樿繘琛屽鐞� + //鑾峰彇涓嬩竴姝ュ鐞嗕汉 + Object object=values.get("NextAssignee"); + return (List<String>) object; + } } -- Gitblit v1.9.3