刀具刃磨-刃磨刀具选择列表接口/ 工具报损-审批、提交   工具盘点-审批 ,提交
已添加4个文件
已修改19个文件
680 ■■■■■ 文件已修改
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/LossBoundFlowDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/dto/StocktakingBoundFlowDto.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ParaHolesToolsVo.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/SharpeeningVo.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolSharpeningVo.java 132 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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);
     }
}
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("添加成功!");
    }
    /**
     * ä¿®æ”¹
     */
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,
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("操作成功");
    }
    /**
     * ç¼–辑
     *
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 @@
    /** è´£ä»»äºº */
    @ApiModelProperty(value = "责任人")
    @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;
}
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;
}
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;
}
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;
}
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 = "存储位置(偏那个厂区的库)")
    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;
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;
}
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;
    /** è´£ä»»äºº */
    @ApiModelProperty(value = "责任人")
    @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;
}
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);
}
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);
}
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>
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>
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);
}
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);
}
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);
}
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);
}
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);
    }
}
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();//前端传进来的参数
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);
    }
}
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();
    }