From 0cb87e5f72febf26b3a17b4eb61e8d1b8c079279 Mon Sep 17 00:00:00 2001 From: Houjie <714924425@qq.com> Date: 星期一, 26 五月 2025 10:03:44 +0800 Subject: [PATCH] 刀具刃磨-刃磨刀具选择列表接口/ 工具报损-审批、提交 工具盘点-审批 ,提交 --- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java | 15 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java | 12 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java | 57 +++- lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml | 23 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java | 14 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java | 8 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java | 9 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java | 105 ++++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java | 33 ++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java | 21 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java | 1 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java | 17 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java | 12 + lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java | 37 +++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java | 12 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java | 5 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java | 132 +++++++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java | 4 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java | 10 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java | 100 ++++++++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java | 2 lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml | 37 +++ lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java | 14 + 23 files changed, 638 insertions(+), 42 deletions(-) diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java index 66165f8..6690650 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java @@ -507,4 +507,21 @@ IPage<StocktakingPoundVo> resultPage = baseToolsService.pageWithLedgerAndConfig(page, queryWrapper); return Result.OK(resultPage); } + + + + @GetMapping("/listWithSharpedAndConfig") + public Result<IPage<SharpeeningVo>> listWithSharpedAndConfig( + SharpeeningVo sharpeeningVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + + // 浣跨敤 QueryGenerator 鏋勫缓 QueryWrapper + QueryWrapper<SharpeeningVo> queryWrapper = QueryGenerator.initQueryWrapper(sharpeeningVo, req.getParameterMap()); + + Page<SharpeeningVo> page = new Page<>(pageNo, pageSize); + IPage<SharpeeningVo> resultPage = baseToolsService.pageWithSharpedAndConfig(page, queryWrapper); + return Result.OK(resultPage); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java index fde6ac2..67bed48 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java @@ -1,8 +1,15 @@ package org.jeecg.modules.tms.controller; import java.util.List; +import java.util.Map; + import org.jeecg.common.api.vo.Result; +import org.jeecg.common.aspect.annotation.AutoLog; +import org.jeecg.common.system.query.QueryGenerator; +import org.jeecg.modules.tms.entity.ToolLedger; import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; import org.jeecg.modules.tms.service.IToolsSharpeningService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -12,6 +19,8 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; + +import javax.servlet.http.HttpServletRequest; /** * @Description: 鍒�鍏峰垉纾ㄨ褰� 鎺у埗鍣� @@ -29,15 +38,29 @@ /** * 鍒嗛〉鏌ヨ */ - @GetMapping("/list") - @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ") - public Result<IPage<ToolSharpening>> queryPageList(ToolSharpening toolSharpening, - @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, - @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { - Page<ToolSharpening> page = new Page<>(pageNo, pageSize); - QueryWrapper<ToolSharpening> queryWrapper = new QueryWrapper<>(toolSharpening); - IPage<ToolSharpening> iPage = toolSharpeningService.page(page, queryWrapper); - return Result.OK(iPage); +// @GetMapping("/list") +// @ApiOperation(value = "鍒嗛〉鏌ヨ", notes = "鍒嗛〉鏌ヨ") +// public Result<IPage<ToolSharpening>> queryPageList(ToolSharpening toolSharpening, +// @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, +// @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { +// Page<ToolSharpening> page = new Page<>(pageNo, pageSize); +// QueryWrapper<ToolSharpening> queryWrapper = new QueryWrapper<>(toolSharpening); +// IPage<ToolSharpening> iPage = toolSharpeningService.page(page, queryWrapper); +// return Result.OK(iPage); +// } + + + @ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ") + @GetMapping(value = "/listToolSharpening") + public Result<IPage<ToolSharpeningVo>> listToolSharpening(ToolSharpeningVo toolSharpeningVo, + @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, + HttpServletRequest req) { + Map<String, String[]> parameterMap = req.getParameterMap(); + QueryWrapper<ToolSharpeningVo> queryWrapper = QueryGenerator.initQueryWrapper(toolSharpeningVo, parameterMap); + Page<ToolSharpeningVo> page = new Page<ToolSharpeningVo>(pageNo, pageSize); + IPage<ToolSharpeningVo> pageList = toolSharpeningService.queryPageList(page, parameterMap); + return Result.OK(pageList); } /** @@ -60,16 +83,14 @@ return Result.OK(entity); } - /** - * 鏂板 - */ - @PostMapping - @ApiOperation(value = "鏂板", notes = "鏂板") - public Result<ToolSharpening> add(@RequestBody ToolSharpening toolSharpening) { - toolSharpeningService.save(toolSharpening); - return Result.OK(toolSharpening); - } + @AutoLog(value = "tms_tool_sharpening-娣诲姞") + @ApiOperation(value="tms_tool_sharpening-娣诲姞", notes="tms_tool_sharpening-娣诲姞") + @PostMapping(value = "/add") + public Result<String> add(@RequestBody ToolSharpening toolSharpening) { + toolSharpeningService.save(toolSharpening); + return Result.OK("娣诲姞鎴愬姛锛�"); + } /** * 淇敼 */ diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java index 68f23ea..d610f05 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java @@ -17,6 +17,8 @@ import org.jeecg.modules.tms.entity.OutboundOrder; import org.jeecg.modules.tms.entity.ToolsLossBound; import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.OutBoundOrderFlowDto; import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; import org.jeecg.modules.tms.enums.OutBillStatus; import org.jeecg.modules.tms.service.IToolsLossBoundDetailService; @@ -157,13 +159,22 @@ return Result.OK("鎻愪氦鎴愬姛"); } + + + @AutoLog(value = "瀹℃壒娴佺▼") + @ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody LossBoundFlowDto lossBoundFlowDto) { + toolsLossBoundService.approvalProcess(lossBoundFlowDto); + return Result.OK("鎿嶄綔鎴愬姛"); + } /** * 鎵归噺鍒犻櫎 * @param ids * @return */ - @AutoLog(value = "鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎") - @ApiOperation(value="鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鍑哄簱鐢宠鍗曟槑缁�-鎵归噺鍒犻櫎") + @AutoLog(value = "鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎") + @ApiOperation(value="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎", notes="鎶ユ崯鍗曟槑缁�-鎵归噺鍒犻櫎") @DeleteMapping(value = "/deleteBatchLossboundDetail") public Result<String> deleteBatchLossboundDetail(@RequestParam(name="ids",required=true) String ids) { this.toolsLossBoundDetailService.removeByIds(Arrays.asList(ids.split(","))); @@ -295,13 +306,13 @@ } - /*--------------------------------瀛愯〃澶勭悊-鍑哄簱鐢宠鍗曟槑缁�-begin----------------------------------------------*/ + /** * 閫氳繃涓昏〃ID鏌ヨ * @return */ - //@AutoLog(value = "鍑哄簱鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ") - @ApiOperation(value="鍑烘姤鎹熺敵璇峰崟鏄庣粏-閫氳繃涓昏〃ID鏌ヨ", notes="鍑烘姤鎹熺敵璇峰崟鏄庣粏-閫氳繃涓昏〃ID鏌ヨ") + + @ApiOperation(value="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ", notes="鎶ユ崯鐢宠鍗曟槑缁�-閫氳繃涓昏〃ID鏌ヨ") @GetMapping(value = "/listlossboundDetailByMainId") public Result<IPage<ToolsLossBoundDetail>> listlossboundDetailByMainId(ToolsLossBoundDetail toolsLossBoundDetail, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java index a8da7df..ffef65a 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java @@ -18,6 +18,8 @@ import org.jeecg.modules.tms.entity.BaseTools; import org.jeecg.modules.tms.entity.ToolsStocktakingBound; import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; import org.jeecg.modules.tms.entity.vo.ToolsStocktakingVo; import org.jeecg.modules.tms.enums.OutBillStatus; import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper; @@ -146,7 +148,18 @@ return Result.OK("鎻愪氦鎴愬姛"); } - + /** + * 瀹℃壒娴佺▼ + * @param stocktakingBoundFlowDto + * @return + */ + @AutoLog(value = "瀹℃壒娴佺▼") + @ApiOperation(value = "鎶ユ崯鍗�-瀹℃壒娴佺▼", notes = "鎶ユ崯鍗�-瀹℃壒娴佺▼") + @PostMapping("/approval") + public Result<?> approval(@RequestBody StocktakingBoundFlowDto stocktakingBoundFlowDto) { + toolsStocktakingBoundService.approvalProcess(stocktakingBoundFlowDto); + return Result.OK("鎿嶄綔鎴愬姛"); + } /** * 缂栬緫 * diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java index f34ede7..35ef615 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java @@ -6,11 +6,14 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.springframework.format.annotation.DateTimeFormat; /** * @Description: tms_tool_sharpening @@ -40,6 +43,8 @@ private String toolId; /** 鍒冪(鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "鍒冪(鏃堕棿") private Date sharpeningTime; @@ -49,6 +54,7 @@ /** 璐d换浜� */ @ApiModelProperty(value = "璐d换浜�") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") private String responsiblePerson; /** 澶囨敞 */ @@ -64,6 +70,8 @@ private String createBy; /** 鍒涘缓鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") @ApiModelProperty(value = "鍒涘缓鏃堕棿") private Date createTime; @@ -72,6 +80,8 @@ private String updateBy; /** 鏇存柊鏃堕棿 */ - @ApiModelProperty(value = "鏇存柊鏃堕棿") - private Date updateTime; + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private java.util.Date updateTime; } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java index 076f61c..38e4313 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java @@ -88,6 +88,16 @@ @ApiModelProperty(value = "鐩樼偣鏃堕棿") private java.util.Date inventoryTime; + + /** + * 瀹℃牳鏃堕棿 + */ + @Excel(name = "approvalDate", width = 20, 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 java.util.Date approvalDate; + @TableField(exist = false) private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList; } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java new file mode 100644 index 0000000..65d2b09 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.tms.entity.dto; + +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; + +@Data +public class LossBoundFlowDto extends FlowTaskVo { + //瀹℃壒鐘舵�� + private String status; + //瀹℃壒鎰忚 + private String approvalOpinion; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java new file mode 100644 index 0000000..46ef4f6 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java @@ -0,0 +1,12 @@ +package org.jeecg.modules.tms.entity.dto; + +import lombok.Data; +import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; + +@Data +public class StocktakingBoundFlowDto extends FlowTaskVo { + //瀹℃壒鐘舵�� + private String status; + //瀹℃壒鎰忚 + private String approvalOpinion; +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java index b4b4eb7..59dbf3c 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java @@ -57,25 +57,25 @@ private String positionCode; @ApiModelProperty(value = "宸ュ叿绫诲瀷;1.閫氱敤 2.涓撶敤") - private java.lang.String applicationType; + private String applicationType; @ApiModelProperty(value = "鍘傚") - private java.lang.String supplierId; + private String supplierId; @ApiModelProperty(value = "浠撳簱鐪佷唤鍩庡競") - private java.lang.String provinceCity; + private String provinceCity; @ApiModelProperty(value = "瀛樺偍浣嶇疆锛堝亸閭d釜鍘傚尯鐨勫簱锛�") - private java.lang.String storageLocation; + private String storageLocation; @ApiModelProperty(value = "璁¢噺涓诲崟浣�") - private java.lang.String mainUnit; + private String mainUnit; @ApiModelProperty(value = "璁¢噺杈呭崟浣�") - private java.lang.String auxiliaryUnit; + private String auxiliaryUnit; @ApiModelProperty(value = "鏄惁鏈夎閲忚緟鍗曚綅;1,鏈夎緟鍔╁崟浣�2.鏃犺緟鍔╁崟浣�") - private java.lang.String auxiliaryUnitFlag; + private String auxiliaryUnitFlag; @ApiModelProperty(value = "鍗曚环") private java.math.BigDecimal price; diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java new file mode 100644 index 0000000..aa9d7d8 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java @@ -0,0 +1,37 @@ +package org.jeecg.modules.tms.entity.vo; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; + +@Data +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +public class SharpeeningVo { + private String id; + + @Dict(dictTable = "tms_tools_classify", dicText = "type_name", dicCode = "id") + private String classifyId; + + private String toolCode; + + private String foreignLanguageName; + private String standardLevel; + private String standardCode; + private String toolModel; + @Dict(dicCode = "tool_para_type") + private String paramaTableName; + private Integer totalCount; + @Dict(dicCode = "application_type") + private String applicationType; + private String chineseName; + private String supplierId; + private String storageLocation; + private String mainUnit; + private String toolId; + private String positionCode; + private String warehouseId; + private String provinceCity; + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java new file mode 100644 index 0000000..d9d14e5 --- /dev/null +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java @@ -0,0 +1,132 @@ +package org.jeecg.modules.tms.entity.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.jeecg.common.aspect.annotation.Dict; +import org.springframework.format.annotation.DateTimeFormat; + +import java.io.Serializable; +import java.util.Date; + +/** + * @Description: tms_tool_sharpening + * @Author: houjie + * @Date: 2025-05-10 + * @Version: V1.0 + */ +@Data +@TableName("tms_tool_sharpening") +@Accessors(chain = true) +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="ToolSharpening瀵硅薄", description="鍒�鍏峰垉纾ㄨ褰曞疄浣撶被") +public class ToolSharpeningVo implements Serializable { + private static final long serialVersionUID = 1L; + + /** 涓婚敭ID */ + @TableId(type = IdType.ASSIGN_ID) + @ApiModelProperty(value = "涓婚敭ID") + private String id; + + /** 宸ュ叿缂栫爜 */ + @ApiModelProperty(value = "宸ュ叿缂栫爜") + private String toolCode; + + /** 宸ュ叿缂栧彿 */ + @ApiModelProperty(value = "宸ュ叿缂栧彿") + private String toolId; + + /** 鍒冪(鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒冪(鏃堕棿") + private Date sharpeningTime; + + /** 鍒冪(缁撴灉鍙婂缓璁� */ + @ApiModelProperty(value = "鍒冪(缁撴灉鍙婂缓璁�") + private String sharpeningResult; + + /** 璐d换浜� */ + @ApiModelProperty(value = "璐d换浜�") + @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id") + private String responsiblePerson; + + /** 澶囨敞 */ + @ApiModelProperty(value = "澶囨敞") + private String remark; + + /** 绉熸埛鍙� */ + @ApiModelProperty(value = "绉熸埛鍙�") + private String tenantId; + + /** 鍒涘缓浜� */ + @ApiModelProperty(value = "鍒涘缓浜�") + private String createBy; + + /** 鍒涘缓鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private Date createTime; + + /** 鏇存柊浜� */ + @ApiModelProperty(value = "鏇存柊浜�") + private String updateBy; + + /** 鏇存柊鏃堕棿 */ + @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") + @ApiModelProperty(value = "鏇存柊鏃ユ湡") + private Date updateTime; + + @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id") + @ApiModelProperty(value = "宸ュ叿鍒嗙被") + private String classifyId; + + + @Dict(dicCode = "tool_para_type") + @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜") + private String paramaTableName; + + @ApiModelProperty(value = "宸ュ叿鍚嶇О") + private String typeName; + + + @Dict(dicCode = "application_type") + @ApiModelProperty(value = "宸ュ叿鍒嗙被缂栫爜") + private String applicationType; + + + @ApiModelProperty(value = "鍨嬪彿/瑙勫垯") + private String toolModel; + + @ApiModelProperty(value = "浠撳簱鍩庡競") + private String provinceCity; + + @ApiModelProperty(value = "涓枃鍚嶅瓧") + private String chineseName; + + @ApiModelProperty(value = "鍘傚") + private String supplierId; + + @ApiModelProperty(value = "瀛樺偍浣嶇疆") + private String positionCode; + + + @ApiModelProperty(value = "璁$畻涓诲崟浣�") + private String mainUnit; + + + @ApiModelProperty(value = "搴撳尯/搴撳彿") + private String warehouseId; + + + + +} diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java index f5bb4bf..da80ca3 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java @@ -36,4 +36,6 @@ @Param(Constants.WRAPPER) Wrapper<ParaBladeVo> queryWrapper); IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, @Param(Constants.WRAPPER) Wrapper<StocktakingPoundVo> wrapper); + + IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, @Param(Constants.WRAPPER) Wrapper<SharpeeningVo> wrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java index 458ed7e..5a951cc 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java @@ -1,7 +1,16 @@ package org.jeecg.modules.tms.mapper; +import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; +import org.jeecg.modules.tms.entity.OutboundDetail; +import org.jeecg.modules.tms.entity.OutboundOrder; import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.vo.OutboundDetailVo; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; /** * @Description: tms_tool_sharpening Mapper 鎺ュ彛 @@ -9,5 +18,6 @@ * @Date: 2025-05-10 */ public interface ToolsSharpeningMapper extends BaseMapper<ToolSharpening> { - // 鍙嚜瀹氫箟鏌ヨ鏂规硶 + IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, + @Param(Constants.WRAPPER) Wrapper<ToolSharpeningVo> queryWrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml index a8d4349..4d01ce4 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml @@ -436,4 +436,41 @@ ORDER BY t.create_time DESC </select> + + <select id="pageWithSharpedAndConfig" resultType="org.jeecg.modules.tms.entity.vo.SharpeeningVo"> + SELECT + t.id, + t.classify_id AS classifyId, + t.tool_code AS toolCode, + t.foreign_language_name AS foreignLanguageName, + t.standard_level AS standardLevel, + t.standard_code AS standardCode, + t.tool_model AS toolModel, + t.parama_table_name AS paramaTableName, + t.tool_id AS toolId, + t1.total_count AS totalCount, + t1.available_count AS availableCount, + t4.position_code AS positionCode, + t3.application_type AS applicationType, + t3.chinese_name AS chineseName, + t3.supplier_id AS supplierId, + t3.storage_location AS storageLocation, + t3.main_unit AS mainUnit, + t4.warehouse_id AS warehouseId, + t3.province_city AS provinceCity + + FROM tms_base_tools t + LEFT JOIN tms_tool_ledger t1 ON t1.tool_id = t.id + LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.id + LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.id + + <where> + <if test="ew.paramNameValuePairs.toolCode != null and ew.paramNameValuePairs.toolCode != ''"> + AND t.tool_code LIKE CONCAT('%', #{ew.paramNameValuePairs.toolCode}, '%') + </if> + </where> + + ORDER BY t.create_time DESC + </select> + </mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml index 481ae06..34e329a 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml @@ -1,5 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="org.jeecg.modules.tms.mapper.ToolsSharpeningMapper"> - + <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.vo.ToolSharpeningVo"> + SELECT + t.*, + t1.classify_id AS classifyId, + t1.parama_table_name AS paramaTableName, + t2.type_name AS typeName, + t3.application_type AS applicationType, + t3.tool_model AS toolModel, + t3.province_city AS provinceCity, + t3.chinese_name AS chineseName, + t3.supplier_id AS supplierId, + t3.storage_location AS storageLocation, + t3.main_unit AS mainUnit, + t4.position_code AS positionCode, + t4.warehouse_id AS warehouseId + FROM tms_tool_sharpening t + LEFT JOIN tms_base_tools t1 ON t1.id = t.tool_code + LEFT JOIN tms_tools_classify t2 ON t1.classify_id = t2.id + LEFT JOIN tms_tools_config_property t3 ON t3.tool_code = t.tool_id + LEFT JOIN tms_tool_ledger_detail t4 ON t4.tool_code = t.tool_id + ${ew.customSqlSegment} + </select> </mapper> \ No newline at end of file diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java index eeb5752..b01cbed 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java @@ -30,4 +30,5 @@ IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page, Map<String, String[]> parameterMap); IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper); + IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java index a197313..9964c40 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.tms.entity.ToolsLossBound; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; import java.io.Serializable; import java.util.Collection; @@ -46,4 +47,7 @@ * @return */ boolean submintOrder(String id); + + + void approvalProcess(LossBoundFlowDto lossBoundFlowDto); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java index d06399d..060d369 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java @@ -1,7 +1,13 @@ package org.jeecg.modules.tms.service; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.tms.entity.ToolSharpening; import com.baomidou.mybatisplus.extension.service.IService; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; + +import java.util.Map; /** * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 鎺ュ彛 @@ -9,5 +15,5 @@ * @Date: 2025-05-10 */ public interface IToolsSharpeningService extends IService<ToolSharpening> { - + IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap); } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java index 717c9b1..84f5c52 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.modules.tms.entity.ToolsStocktakingBound; import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; +import org.jeecg.modules.tms.entity.vo.StocktakingPoundVo; import java.io.Serializable; import java.util.Collection; @@ -53,4 +56,10 @@ */ boolean submintOrder(String id); + /** + * 瀹℃壒娴佺▼ + * @param stocktakingBoundFlowDto + */ + void approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto); + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java index 595cfcb..fdcb8d4 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java @@ -139,4 +139,9 @@ public IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper) { return baseMapper.pageWithLedgerAndConfig(page, queryWrapper); } + + @Override + public IPage<SharpeeningVo> pageWithSharpedAndConfig(Page<SharpeeningVo> page, QueryWrapper<SharpeeningVo> queryWrapper) { + return baseMapper.pageWithSharpedAndConfig(page, queryWrapper); + } } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java index b789be8..8e3ff5b 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java @@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -12,9 +13,13 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; @@ -22,7 +27,9 @@ import org.jeecg.modules.system.service.ISysBusinessCodeRuleService; import org.jeecg.modules.tms.entity.ToolsLossBound; import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.enums.OutBoundStatusEnum; import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper; import org.jeecg.modules.tms.mapper.ToolsLossBoundMapper; import org.jeecg.modules.tms.service.IToolsLossBoundDetailService; @@ -58,7 +65,10 @@ private IFlowTaskService flowTaskService; @Autowired private ISysBusinessCodeRuleService businessCodeRuleService; - + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; @Override public void delMain(String id) { @@ -77,9 +87,9 @@ @Override public void addTotal(ToolsLossBound toolsLossBound) { LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); - if (loginUser != null){ - toolsLossBound.setHandler(loginUser.getId()); - } + if (loginUser != null) { + toolsLossBound.setHandler(loginUser.getId()); + } toolsLossBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("LossBound")); toolsLossBound.setOrderStatus(OutBillStatus.DRAFT.getValue()); save(toolsLossBound); @@ -165,6 +175,93 @@ } @Override + public void approvalProcess(LossBoundFlowDto lossBoundFlowDto) { + if (StrUtil.isBlank(lossBoundFlowDto.getTaskId()) || StrUtil.isBlank(lossBoundFlowDto.getDataId())) { + throw new JeecgBootException("闈炴硶鍙傛暟锛�"); + } + + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�"); + } + + //鑾峰彇鎶ユ崯鍗曚俊鎭� + ToolsLossBound toolsLossBound = getById(lossBoundFlowDto.getDataId()); + if (toolsLossBound == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒"); + } + + //鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = getFlowMyBusiness(lossBoundFlowDto.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + + // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟 + if (!isUserAuthorized(flowMyBusiness, user)) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�"); + } + + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(lossBoundFlowDto, toolsLossBound, user); + + //瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(lossBoundFlowDto); + + //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� + if (result.isSuccess()) { + toolsLossBound.setOrderStatus(lossBoundFlowDto.getStatus()); + if (OutBillStatus.APPROVED.getValue().equals(lossBoundFlowDto.getStatus())) { + toolsLossBound.setOrderStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + } + toolsLossBound.setApprovalDate(new Date()); + toolsLossBound.setApprovalOpinion(lossBoundFlowDto.getApprovalOpinion()); + updateById(toolsLossBound); + } + } + + private void setupProcessVariables(LossBoundFlowDto lossBoundFlowDto, ToolsLossBound toolsLossBound, LoginUser user) { + if (OutBillStatus.SUBMITTED.getValue().equals(toolsLossBound.getOrderStatus()) && user.getUsername().equals(toolsLossBound.getReviewer())) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", toolsLossBound.getId()); + values.put("organization", lossBoundFlowDto.getApprovalOpinion()); + values.put("comment", lossBoundFlowDto.getApprovalOpinion()); + values.put("status", lossBoundFlowDto.getStatus()); + values.put("NextAssignee", Collections.singletonList(toolsLossBound.getReviewer())); + lossBoundFlowDto.setValues(values); + } + } + + private FlowMyBusiness getFlowMyBusiness(String instanceId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId)); + return businessList.isEmpty() ? null : businessList.get(0); + } + + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } + + @Override public void afterFlowHandle(FlowMyBusiness business) { business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java index 3831e2d..5a64898 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java @@ -1,10 +1,18 @@ package org.jeecg.modules.tms.service.impl; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.jeecg.modules.tms.entity.ToolSharpening; +import org.jeecg.modules.tms.entity.ToolsLossBoundDetail; +import org.jeecg.modules.tms.entity.vo.ToolSharpeningVo; import org.jeecg.modules.tms.mapper.ToolsSharpeningMapper; import org.jeecg.modules.tms.service.IToolsSharpeningService; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.Map; /** * @Description: 鍒�鍏峰垉纾ㄨ褰� Service 瀹炵幇绫� @@ -13,5 +21,28 @@ */ @Service public class ToolsSharpeningServiceImpl extends ServiceImpl<ToolsSharpeningMapper, ToolSharpening> implements IToolsSharpeningService { - // 濡傞渶鎵╁睍閫昏緫鍙湪姝ゆ坊鍔� + @Override + public IPage<ToolSharpeningVo> queryPageList(Page<ToolSharpeningVo> page, Map<String, String[]> parameterMap) { + QueryWrapper<ToolSharpeningVo> queryWrapper = Wrappers.query(); + String[] ids = parameterMap.get("id"); + if (ids != null && ids.length > 0) { + queryWrapper.like("t.id", ids[0]); + } + String[] toolIds = parameterMap.get("toolId"); + if (toolIds != null && toolIds.length > 0) { + queryWrapper.like("t.tool_id", toolIds[0]); + } + String[] startTimes = parameterMap.get("startTime"); + if (startTimes != null && startTimes.length > 0) { + queryWrapper.ge("t.create_time", startTimes[0]); + } + String[] endTimes = parameterMap.get("endTime"); + if (endTimes != null && endTimes.length > 0) { + queryWrapper.le("t.create_time", endTimes[0]); + } + queryWrapper.orderByDesc("t.create_time"); + return this.baseMapper.queryPageList(page, queryWrapper); + } + + } diff --git a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java index 1548e1d..d263f68 100644 --- a/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java +++ b/lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java @@ -2,13 +2,18 @@ import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; 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.exception.JeecgBootException; import org.jeecg.common.system.vo.LoginUser; import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; +import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; import org.jeecg.modules.flowable.apithird.service.FlowCommonService; import org.jeecg.modules.flowable.service.IFlowDefinitionService; @@ -16,9 +21,13 @@ import org.jeecg.modules.system.entity.SysUser; import org.jeecg.modules.system.service.ISysUserService; import org.jeecg.modules.tms.entity.BaseTools; +import org.jeecg.modules.tms.entity.ToolsLossBound; import org.jeecg.modules.tms.entity.ToolsStocktakingBound; import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail; +import org.jeecg.modules.tms.entity.dto.LossBoundFlowDto; +import org.jeecg.modules.tms.entity.dto.StocktakingBoundFlowDto; import org.jeecg.modules.tms.enums.OutBillStatus; +import org.jeecg.modules.tms.enums.OutBoundStatusEnum; import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper; import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper; import org.jeecg.modules.tms.service.IToolsStocktakingBoundService; @@ -53,6 +62,11 @@ private IFlowDefinitionService flowDefinitionService; @Autowired private IFlowTaskService flowTaskService; + @Autowired + private IFlowMyBusinessService flowMyBusinessService; + @Autowired + private TaskService taskService; + @Override @Transactional(rollbackFor = Exception.class) public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) { @@ -99,6 +113,7 @@ toolsStocktakingBoundMapper.deleteById(id); } } + @Override @Transactional(rollbackFor = Exception.class) public boolean submintOrder(String id) { @@ -140,13 +155,96 @@ } + @Override + public void approvalProcess(StocktakingBoundFlowDto stocktakingBoundFlowDto) { + if (StrUtil.isBlank(stocktakingBoundFlowDto.getTaskId()) || StrUtil.isBlank(stocktakingBoundFlowDto.getDataId())) { + throw new JeecgBootException("闈炴硶鍙傛暟锛�"); + } + // 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛 + LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); + if (user == null || StrUtil.isBlank(user.getId())) { + throw new JeecgBootException("璐﹀彿涓嶅瓨鍦�"); + } + //鑾峰彇鎶ユ崯鍗曚俊鎭� + ToolsStocktakingBound toolsStocktakingBound = getById(stocktakingBoundFlowDto.getDataId()); + if (toolsStocktakingBound == null) { + throw new JeecgBootException("鏈壘鍒板搴旂殑鍑哄簱鐢宠鍗曪紒"); + } + //鑾峰彇娴佺▼涓氬姟璁板綍 + FlowMyBusiness flowMyBusiness = getFlowMyBusiness(stocktakingBoundFlowDto.getInstanceId()); + if (flowMyBusiness == null) { + throw new JeecgBootException("娴佺▼璁板綍涓嶅瓨鍦�"); + } + + // 妫�鏌ョ敤鎴锋槸鍚︽湁鏉冮檺鎿嶄綔浠诲姟 + if (!isUserAuthorized(flowMyBusiness, user)) { + throw new JeecgBootException("鐢ㄦ埛鏃犳潈鎿嶄綔姝や换鍔�"); + } + + // 璁ら浠诲姟 + if (!claimTask(flowMyBusiness.getTaskId(), user)) { + throw new JeecgBootException("浠诲姟涓嶅瓨鍦ㄣ�佸凡瀹屾垚鎴栧凡琚粬浜鸿棰�"); + } + + //璁剧疆娴佺▼鍙橀噺 + setupProcessVariables(stocktakingBoundFlowDto, toolsStocktakingBound, user); + + //瀹屾垚娴佺▼浠诲姟 + Result result = flowTaskService.complete(stocktakingBoundFlowDto); + + //鏍规嵁浠诲姟瀹屾垚缁撴灉鏇存柊鐢宠鍗曠姸鎬� + if (result.isSuccess()) { + toolsStocktakingBound.setApprovalStatus(stocktakingBoundFlowDto.getStatus()); + if (OutBillStatus.APPROVED.getValue().equals(stocktakingBoundFlowDto.getStatus())) { + toolsStocktakingBound.setApprovalStatus(OutBoundStatusEnum.NOT_OUTBOUND.getValue()); + } + toolsStocktakingBound.setApprovalDate(new Date()); + toolsStocktakingBound.setApprovalOpinion(stocktakingBoundFlowDto.getApprovalOpinion()); + updateById(toolsStocktakingBound); + } + } + + private void setupProcessVariables(StocktakingBoundFlowDto stocktakingBoundFlowDto, ToolsStocktakingBound toolsStocktakingBound, LoginUser user) { + if (OutBillStatus.SUBMITTED.getValue().equals(toolsStocktakingBound.getApprovalStatus()) && user.getUsername().equals(toolsStocktakingBound.getReviewer())) { + Map<String, Object> values = new HashMap<>(); + values.put("dataId", toolsStocktakingBound.getId()); + values.put("organization", stocktakingBoundFlowDto.getApprovalOpinion()); + values.put("comment", stocktakingBoundFlowDto.getApprovalOpinion()); + values.put("status", stocktakingBoundFlowDto.getStatus()); + values.put("NextAssignee", Collections.singletonList(toolsStocktakingBound.getReviewer())); + stocktakingBoundFlowDto.setValues(values); + } + } + + private FlowMyBusiness getFlowMyBusiness(String instanceId) { + List<FlowMyBusiness> businessList = flowMyBusinessService.list( + new LambdaQueryWrapper<FlowMyBusiness>().eq(FlowMyBusiness::getProcessInstanceId, instanceId)); + return businessList.isEmpty() ? null : businessList.get(0); + } + + private boolean isUserAuthorized(FlowMyBusiness flowMyBusiness, LoginUser user) { + List<String> todoUsers = JSON.parseArray(flowMyBusiness.getTodoUsers(), String.class); + return todoUsers != null && todoUsers.contains(user.getUsername()); + } + + private boolean claimTask(String taskId, LoginUser user) { + Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); + if (task == null) { + return false; + } + if (task.getAssignee() != null && !task.getAssignee().equals(user.getUsername())) { + return false; + } + taskService.claim(taskId, user.getUsername()); + return true; + } @Override public void afterFlowHandle(FlowMyBusiness business) { business.getTaskNameId();//鎺ヤ笅鏉ュ鎵圭殑鑺傜偣 - business.getValues();//鍓嶇浼犺繘鏉ョ殑鍙傛暟 + business.getValues(); business.getActStatus(); } -- Gitblit v1.9.3