Houjie
2025-05-23 c5daf9399f292e5b21deff9d5a8ac60fb4c377ab
库存预警/刀具刃磨、工具盘点、工具报损
已添加36个文件
已修改5个文件
2797 ■■■■■ 文件已修改
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java 316 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java 273 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java 159 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java 150 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java 154 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java 137 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java 87 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml 93 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundDetailMapper.xml 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml 91 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java 56 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java 168 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/BaseToolsController.java
@@ -493,5 +493,18 @@
             return Result.OK("");
         }
     }
     @GetMapping("/listWithLedgerAndConfig")
     public Result<IPage<StocktakingPoundVo>> listWithLedgerAndConfig(
             StocktakingPoundVo stocktakingPoundVo,
             @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
             @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
             HttpServletRequest req) {
         // ä½¿ç”¨ QueryGenerator æž„建 QueryWrapper
         QueryWrapper<StocktakingPoundVo> queryWrapper = QueryGenerator.initQueryWrapper(stocktakingPoundVo, req.getParameterMap());
         Page<StocktakingPoundVo> page = new Page<>(pageNo, pageSize);
         IPage<StocktakingPoundVo> resultPage = baseToolsService.pageWithLedgerAndConfig(page, queryWrapper);
         return Result.OK(resultPage);
     }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolSharpeningController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,92 @@
package org.jeecg.modules.tms.controller;
import java.util.List;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.tms.entity.ToolSharpening;
import org.jeecg.modules.tms.service.IToolsSharpeningService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
/**
 * @Description: åˆ€å…·åˆƒç£¨è®°å½• æŽ§åˆ¶å™¨
 * @Author: houjie
 * @Date:   2025-05-10
 */
@RestController
@RequestMapping("/tms/toolSharpening")
@Api(tags = "刀具刃磨记录管理")
public class ToolSharpeningController {
    @Autowired
    private IToolsSharpeningService toolSharpeningService;
    /**
     * åˆ†é¡µæŸ¥è¯¢
     */
    @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("/all")
    @ApiOperation(value = "查询所有数据", notes = "查询所有数据")
    public Result<List<ToolSharpening>> queryAll() {
        List<ToolSharpening> list = toolSharpeningService.list();
        return Result.OK(list);
    }
    /**
     * æ ¹æ®ID查询
     */
    @GetMapping("/{id}")
    @ApiOperation(value = "根据ID查询", notes = "根据ID查询")
    public Result<ToolSharpening> queryById(@PathVariable String id) {
        ToolSharpening entity = toolSharpeningService.getById(id);
        return Result.OK(entity);
    }
    /**
     * æ–°å¢ž
     */
    @PostMapping
    @ApiOperation(value = "新增", notes = "新增")
    public Result<ToolSharpening> add(@RequestBody ToolSharpening toolSharpening) {
        toolSharpeningService.save(toolSharpening);
        return Result.OK(toolSharpening);
    }
    /**
     * ä¿®æ”¹
     */
    @PutMapping
    @ApiOperation(value = "修改", notes = "修改")
    public Result<ToolSharpening> edit(@RequestBody ToolSharpening toolSharpening) {
        toolSharpeningService.updateById(toolSharpening);
        return Result.OK(toolSharpening);
    }
    /**
     * åˆ é™¤
     */
    @DeleteMapping("/{id}")
    @ApiOperation(value = "删除", notes = "删除")
    public Result<String> delete(@PathVariable String id) {
        toolSharpeningService.removeById(id);
        return Result.OK("删除成功");
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsLossBoundController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,316 @@
package org.jeecg.modules.tms.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
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.common.system.vo.LoginUser;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.tms.entity.OutboundDetail;
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.vo.OutboundDetailVo;
import org.jeecg.modules.tms.enums.OutBillStatus;
import org.jeecg.modules.tms.service.IToolsLossBoundDetailService;
import org.jeecg.modules.tms.service.IToolsLossBoundService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
 * @Description: æŸè€—单
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
@Slf4j
@Api(tags="损耗单")
@RestController
    @RequestMapping("/tms/toolsLossBound")
public class ToolsLossBoundController extends JeecgController<ToolsLossBound, IToolsLossBoundService> {
    @Autowired
    private IToolsLossBoundService toolsLossBoundService;
    @Autowired
    private IToolsLossBoundDetailService toolsLossBoundDetailService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param toolsLossBound
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    @AutoLog(value = "损耗单-分页列表查询")
    @ApiOperation(value="损耗单-分页列表查询", notes="损耗单-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(ToolsLossBound toolsLossBound,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<ToolsLossBound> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBound, req.getParameterMap());
        Page<ToolsLossBound> page = new Page<ToolsLossBound>(pageNo, pageSize);
        IPage<ToolsLossBound> pageList = toolsLossBoundService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * ç¼–辑
     *
     * @param toolsLossBound
     * @return
     */
    @AutoLog(value = "损耗单-编辑")
    @ApiOperation(value="损耗单-编辑", notes="损耗单-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<?> edit(@RequestBody ToolsLossBound toolsLossBound) {
        toolsLossBoundService.updateById(toolsLossBound);
        return Result.OK("编辑成功!");
    }
     /**
      *   æ·»åŠ 
      * @param toolsLossBound
      * @return
      */
     @AutoLog(value = "tms_loss_bound-添加")
     @ApiOperation(value="tms_loss_bound-添加", notes="tms_loss_bound-添加")
     @PostMapping(value = "/add")
     public Result<String> add(@RequestBody ToolsLossBound toolsLossBound) {
         toolsLossBoundService.save(toolsLossBound);
         return Result.OK("添加成功!");
     }
     @AutoLog(value = "tms_loss_bound-添加报损申请单主表及明细信息")
     @ApiOperation(value="tms_loss_bound-添加报损申请单主表及明细信息", notes="tms_loss_bound-添加报损申请单主表及明细信息")
     @PostMapping(value = "/addTotal")
     public Result<String> addTotal(@RequestBody ToolsLossBound toolsLossBound) {
         toolsLossBoundService.addTotal(toolsLossBound);
         return Result.OK("添加成功!");
     }
     @AutoLog(value = "tms_loss_bound-编辑报损单主表及明细信息")
     @ApiOperation(value="tms_loss_bound-编辑报损单主表及明细信息", notes="tms_loss_bound-编辑报损单主表及明细信息")
     @RequestMapping(value = "/editTotal", method = {RequestMethod.PUT,RequestMethod.POST})
     public Result<String> editTotal(@RequestBody ToolsLossBound toolsLossBound) {
         toolsLossBoundService.editTotal(toolsLossBound);
         return Result.OK("编辑成功!");
     }
    /**
     * é€šè¿‡id删除
     * @param id
     * @return
     */
    @AutoLog(value = "报损单明细-通过id删除")
    @ApiOperation(value="报损单明细-通过id删除", notes="报损单明细-通过id删除")
    @DeleteMapping(value = "/deleteLootboundDetail")
    public Result<String> deleteLootboundDetail(@RequestParam(name="id",required=true) String id) {
        toolsLossBoundService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "损耗单-通过id删除")
    @ApiOperation(value="损耗单-通过id删除", notes="损耗单-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<?> delete(@RequestParam(name="id",required=true) String id) {
        toolsLossBoundService.removeById(id);
        return Result.OK("删除成功!");
    }
    @AutoLog(value = "tms_loss_bound-提交报损单")
    @ApiOperation(value="tms_loss_bound-提交报损单", notes="tms_loss_bound-提交报损单")
    @GetMapping(value = "/submit")
    public Result<String> submit(@RequestParam(name="id") String id) {
        toolsLossBoundService.submintOrder(id);
        return Result.OK("提交成功");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     * @param ids
     * @return
     */
    @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(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "损耗单-批量删除")
    @ApiOperation(value="损耗单-批量删除", notes="损耗单-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.toolsLossBoundService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    @AutoLog(value = "损耗单-通过id查询")
    @ApiOperation(value="损耗单-通过id查询", notes="损耗单-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
        ToolsLossBound toolsLossBound = toolsLossBoundService.getById(id);
        return Result.OK(toolsLossBound);
    }
  /**
   * å¯¼å‡ºexcel
   *
   * @param request
   * @param toolsLossBound
   */
  @RequestMapping(value = "/exportXls")
  public ModelAndView exportXls(HttpServletRequest request, ToolsLossBound toolsLossBound) {
      return super.exportXls(request, toolsLossBound, ToolsLossBound.class, "损耗单");
  }
    /**
     * å¯¼å‡º
     * @return
     */
    @RequestMapping(value = "/exportLossboundDetail")
        public ModelAndView exportLossboundDetail(HttpServletRequest request, ToolsLossBoundDetail toolsLossBoundDetail) {
        // Step.1 ç»„装查询条件
        QueryWrapper<ToolsLossBoundDetail> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBoundDetail, request.getParameterMap());
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        // Step.2 èŽ·å–å¯¼å‡ºæ•°æ®
        List<ToolsLossBoundDetail> pageList = toolsLossBoundDetailService.list(queryWrapper);
        List<ToolsLossBoundDetail> exportList = null;
        // è¿‡æ»¤é€‰ä¸­æ•°æ®
        String selections = request.getParameter("selections");
        if (oConvertUtils.isNotEmpty(selections)) {
            List<String> selectionList = Arrays.asList(selections.split(","));
            exportList = pageList.stream().filter(item -> selectionList.contains(item.getId())).collect(Collectors.toList());
        } else {
            exportList = pageList;
        }
        // Step.3 AutoPoi å¯¼å‡ºExcel
        ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
        //此处设置的filename无效,前端会重更新设置一下
        mv.addObject(NormalExcelConstants.FILE_NAME, "报损单明细");
        mv.addObject(NormalExcelConstants.CLASS, OutboundDetail.class);
        mv.addObject(NormalExcelConstants.PARAMS, new ExportParams("报损单明细报表", "导出人:" + sysUser.getRealname(), "报损单明细"));
        mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
        return mv;
    }
    /**
     * å¯¼å…¥
     * @return
     */
    @RequestMapping(value = "/importLossboundDetail/{mainId}")
    public Result<?> importLossboundDetail(HttpServletRequest request, HttpServletResponse response, @PathVariable("mainId") String mainId) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            // èŽ·å–ä¸Šä¼ æ–‡ä»¶å¯¹è±¡
            MultipartFile file = entity.getValue();
            ImportParams params = new ImportParams();
            params.setTitleRows(2);
            params.setHeadRows(1);
            params.setNeedSave(true);
            try {
                List<ToolsLossBoundDetail> list = ExcelImportUtil.importExcel(file.getInputStream(), ToolsLossBoundDetail.class, params);
                for (ToolsLossBoundDetail temp : list) {
                    temp.setLossBoundId(mainId);
                }
                long start = System.currentTimeMillis();
                toolsLossBoundDetailService.saveBatch(list);
                log.info("消耗时间" + (System.currentTimeMillis() - start) + "毫秒");
                return Result.OK("文件导入成功!数据行数:" + list.size());
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error("文件导入失败:" + e.getMessage());
            } finally {
                try {
                    file.getInputStream().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return Result.error("文件导入失败!");
    }
  /**
   * é€šè¿‡excel导入数据
   *
   * @param request
   * @param response
   * @return
   */
  @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
  public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
      return super.importExcel(request, response, ToolsLossBound.class);
  }
    /*--------------------------------子表处理-出库申请单明细-begin----------------------------------------------*/
    /**
     * é€šè¿‡ä¸»è¡¨ID查询
     * @return
     */
    //@AutoLog(value = "出库申请单明细-通过主表ID查询")
    @ApiOperation(value="出报损申请单明细-通过主表ID查询", notes="出报损申请单明细-通过主表ID查询")
    @GetMapping(value = "/listlossboundDetailByMainId")
    public Result<IPage<ToolsLossBoundDetail>> listlossboundDetailByMainId(ToolsLossBoundDetail toolsLossBoundDetail,
                                                                       @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                                       @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                                       HttpServletRequest req) {
        Map<String, String[]> parameterMap = req.getParameterMap();
        QueryWrapper<ToolsLossBoundDetail> queryWrapper = QueryGenerator.initQueryWrapper(toolsLossBoundDetail, parameterMap);
        Page<ToolsLossBoundDetail> page = new Page<ToolsLossBoundDetail>(pageNo, pageSize);
        IPage<ToolsLossBoundDetail> pageList = toolsLossBoundDetailService.queryPageList(page, parameterMap);
        return Result.OK(pageList);
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStocktakingBoundController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,273 @@
package org.jeecg.modules.tms.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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.aspect.annotation.AutoLog;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
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.vo.ToolsStocktakingVo;
import org.jeecg.modules.tms.enums.OutBillStatus;
import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper;
import org.jeecg.modules.tms.service.IToolsStocktakingBoundDetailService;
import org.jeecg.modules.tms.service.IToolsStocktakingBoundService;
import org.jeecgframework.poi.excel.ExcelImportUtil;
import org.jeecgframework.poi.excel.entity.ImportParams;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: houjie
 * @Date: 2025-05-16
 * @Version: V1.0
 */
@Api(tags = "盘点单表")
@RestController
@RequestMapping("/tms/toolsStocktakingBound")
@Slf4j
public class ToolsStocktakingBoundController {
    @Autowired
    private IToolsStocktakingBoundService toolsStocktakingBoundService;
    @Autowired
    private IToolsStocktakingBoundDetailService toolsStocktakingBoundDetailService;
    @Autowired
    private ToolsStocktakingBoundMapper toolsStocktakingBoundMapper;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param toolsStocktakingBound
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "盘点单表-分页列表查询")
    @ApiOperation(value = "盘点单表-分页列表查询", notes = "盘点单表-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<ToolsStocktakingBound>> queryPageList(ToolsStocktakingBound toolsStocktakingBound,
                                                              @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                              @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                              HttpServletRequest req) {
        QueryWrapper<ToolsStocktakingBound> queryWrapper = QueryGenerator.initQueryWrapper(toolsStocktakingBound, req.getParameterMap());
        Page<ToolsStocktakingBound> page = new Page<ToolsStocktakingBound>(pageNo, pageSize);
        IPage<ToolsStocktakingBound> pageList = toolsStocktakingBoundService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     * æ·»åŠ 
     *
     * @param toolsStocktakingBound
     * @return
     */
    @AutoLog(value = "tms_stocktaking_bound-添加")
    @ApiOperation(value = "tms_stocktaking_bound-添加", notes = "tms_stocktaking_bound-添加")
    @PostMapping(value = "/add")
    @Transactional(rollbackFor = {Exception.class})
    public Result<String> add(@RequestBody ToolsStocktakingBound toolsStocktakingBound) {
        toolsStocktakingBound.setApprovalStatus(OutBillStatus.DRAFT.getValue());
        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
        if (sysUser != null) {
            toolsStocktakingBound.setHandler(sysUser.getId());
        }
        toolsStocktakingBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("stocktakingBound"));
        //校验物料在原材料周转库存不存在
        List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList = toolsStocktakingBound.getToolsStocktakingBoundDetailList();
        toolsStocktakingBoundService.save(toolsStocktakingBound);
        for (int i = 0; i < toolsStocktakingBoundDetailList.size(); i++) {
            ToolsStocktakingBoundDetail toolsStocktakingBoundDetail = toolsStocktakingBoundDetailList.get(i);
            toolsStocktakingBoundDetail.setAvailableQuantity(toolsStocktakingBoundDetail.getBookQuantity());
            toolsStocktakingBoundDetail.setPracticalQuantity(toolsStocktakingBoundDetail.getPracticalQuantity());
            toolsStocktakingBoundDetail.setSurplusDeficit(toolsStocktakingBoundDetail.getSurplusDeficit());
            toolsStocktakingBoundDetail.setStocktakingDate(toolsStocktakingBoundDetail.getStocktakingDate());
            toolsStocktakingBoundDetail.setRemark(toolsStocktakingBoundDetail.getRemark());
            toolsStocktakingBoundDetail.setToolId(toolsStocktakingBoundDetail.getToolId());
            toolsStocktakingBoundDetail.setToolCode(toolsStocktakingBoundDetail.getToolCode());
            toolsStocktakingBoundDetail.setStocktakingBoundId(toolsStocktakingBound.getId());
            toolsStocktakingBoundDetailService.save(toolsStocktakingBoundDetail);
        }
        return Result.OK();
    }
    @ApiOperation(value = "工具盘点明细-通过主表ID查询", notes = "工具盘点明细-通过主表ID查询")
    @GetMapping(value = "/listToolsStocktakingBoundControllerDetailsByMainId")
    public Result<IPage<ToolsStocktakingBoundDetail>> listToolsStocktakingBoundControllerDetailsByMainId(BaseTools baseTools,
                                                                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                                                                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
                                                                                                         HttpServletRequest req) {
        Map<String, String[]> parameterMap = req.getParameterMap();
        Page<ToolsStocktakingBoundDetail> page = new Page<ToolsStocktakingBoundDetail>(pageNo, pageSize);
        IPage<ToolsStocktakingBoundDetail> pageList = toolsStocktakingBoundDetailService.selectByMainId(page, parameterMap);
        return Result.OK(pageList);
    }
    @AutoLog(value = "tms_stocktaking_bound-提交盘点单")
    @ApiOperation(value = "tms_stocktaking_bound-提交盘点单", notes = "tms_stocktaking_bound-提交盘点单")
    @GetMapping(value = "/submit")
    public Result<String> submit(@RequestParam(name = "id") String id) {
        toolsStocktakingBoundService.submintOrder(id);
        return Result.OK("提交成功");
    }
    /**
     * ç¼–辑
     *
     * @param toolsStocktakingBound
     * @return
     */
    @AutoLog(value = "盘点单表-编辑")
    @ApiOperation(value = "盘点单表-编辑", notes = "盘点单表-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
    @Transactional(rollbackFor = {Exception.class})
    public Result<String> edit(@RequestBody ToolsStocktakingBound toolsStocktakingBound) {
        if (toolsStocktakingBound == null || StringUtils.isBlank(toolsStocktakingBound.getId())) {
            return Result.error("参数错误");
        }
        toolsStocktakingBoundDetailService.remove(new LambdaQueryWrapper<ToolsStocktakingBoundDetail>()
                .eq(ToolsStocktakingBoundDetail::getStocktakingBoundId, toolsStocktakingBound.getId()));
        ToolsStocktakingBound stocktakingBound = new ToolsStocktakingBound();
        BeanUtils.copyProperties(stocktakingBound, toolsStocktakingBound);
        toolsStocktakingBoundMapper.updateById(stocktakingBound);
        List<ToolsStocktakingBoundDetail> detailList = toolsStocktakingBound.getToolsStocktakingBoundDetailList();
        if (CollectionUtils.isEmpty(detailList)) {
            return Result.error("明细不能为空");
        }
        detailList.forEach(item -> item.setStocktakingBoundId(stocktakingBound.getId()));
        toolsStocktakingBoundDetailService.saveBatch(detailList);
        return Result.OK("编辑成功");
    }
    /**
     * é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "盘点单表-通过id删除")
    @ApiOperation(value = "盘点单表-通过id删除", notes = "盘点单表-通过id删除")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
        toolsStocktakingBoundService.delMain(id);
        return Result.OK("删除成功!");
    }
    /**
     * æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "盘点单表-批量删除")
    @ApiOperation(value = "盘点单表-批量删除", notes = "盘点单表-批量删除")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        this.toolsStocktakingBoundService.delBatchMain(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    //@AutoLog(value = "盘点单表-通过id查询")
    @ApiOperation(value = "盘点单表-通过id查询", notes = "盘点单表-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<ToolsStocktakingBound> queryById(@RequestParam(name = "id", required = true) String id) {
        ToolsStocktakingBound toolsStocktakingBound = toolsStocktakingBoundService.getById(id);
        if (toolsStocktakingBound == null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(toolsStocktakingBound);
    }
    /**
     * é€šè¿‡excel导入数据
     *
     * @param request
     * @param response
     * @return
     */
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
        Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
        for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
            // èŽ·å–ä¸Šä¼ æ–‡ä»¶å¯¹è±¡
            MultipartFile file = entity.getValue();
            ImportParams params = new ImportParams();
            params.setTitleRows(2);
            params.setHeadRows(1);
            params.setNeedSave(true);
            try {
                List<ToolsStocktakingVo> list = ExcelImportUtil.importExcel(file.getInputStream(), ToolsStocktakingVo.class, params);
                for (ToolsStocktakingVo page : list) {
                    ToolsStocktakingBound po = new ToolsStocktakingBound();
                    BeanUtils.copyProperties(page, po);
                    toolsStocktakingBoundService.saveMain(po, page.getToolsStocktakingBoundDetailList());
                }
                return Result.OK("文件导入成功!数据行数:" + list.size());
            } catch (Exception e) {
                log.error(e.getMessage(), e);
                return Result.error("文件导入失败:" + e.getMessage());
            } finally {
                try {
                    file.getInputStream().close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return Result.OK("文件导入失败!");
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/controller/ToolsStoreEarlyWarningController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,159 @@
package org.jeecg.modules.tms.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.api.vo.Result;
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.tms.entity.ToolsStoreEarlyWarning;
import org.jeecg.modules.tms.service.IToolsStoreEarlyWarningService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Arrays;
 /**
 * @Description: tools_store_early warning
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@Api(tags="tools_store_early warning")
@RestController
@RequestMapping("/tms/toolsStoreEarlyWarning")
@Slf4j
public class ToolsStoreEarlyWarningController extends JeecgController<ToolsStoreEarlyWarning, IToolsStoreEarlyWarningService> {
    @Autowired
    private IToolsStoreEarlyWarningService toolsStoreEarlyWarningService;
    /**
     * åˆ†é¡µåˆ—表查询
     *
     * @param tmsStoreEarlyWarning
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
    //@AutoLog(value = "tools_store_early warning-分页列表查询")
    @ApiOperation(value="tools_store_early warning-分页列表查询", notes="tools_store_early warning-分页列表查询")
    @GetMapping(value = "/list")
    public Result<IPage<ToolsStoreEarlyWarning>> queryPageList(ToolsStoreEarlyWarning tmsStoreEarlyWarning,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<ToolsStoreEarlyWarning> queryWrapper = QueryGenerator.initQueryWrapper(tmsStoreEarlyWarning, req.getParameterMap());
        Page<ToolsStoreEarlyWarning> page = new Page<ToolsStoreEarlyWarning>(pageNo, pageSize);
        IPage<ToolsStoreEarlyWarning> pageList = toolsStoreEarlyWarningService.page(page, queryWrapper);
        return Result.OK(pageList);
    }
    /**
     *   æ·»åŠ 
     *
     * @param toolsStoreEarlyWarning
     * @return
     */
    @AutoLog(value = "tools_store_early warning-添加")
    @ApiOperation(value="tools_store_early warning-添加", notes="tools_store_early warning-添加")
    @PostMapping(value = "/add")
    public Result<String> add(@RequestBody ToolsStoreEarlyWarning toolsStoreEarlyWarning) {
        toolsStoreEarlyWarningService.save(toolsStoreEarlyWarning);
        return Result.OK("添加成功!");
    }
    /**
     *  ç¼–辑
     *
     * @param tmsStoreEarlyWarning
     * @return
     */
    @AutoLog(value = "tools_store_early warning-编辑")
    @ApiOperation(value="tools_store_early warning-编辑", notes="tools_store_early warning-编辑")
    @RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
    public Result<String> edit(@RequestBody ToolsStoreEarlyWarning tmsStoreEarlyWarning) {
        toolsStoreEarlyWarningService.updateById(tmsStoreEarlyWarning);
        return Result.OK("编辑成功!");
    }
    /**
     *   é€šè¿‡id删除
     *
     * @param id
     * @return
     */
    @AutoLog(value = "tools_store_early warning-通过id删除")
    @ApiOperation(value="tools_store_early warning-通过id删除", notes="tools_store_early warning-通过id删除")
    //@RequiresPermissions("org.jeecg.modules:tms_tools_config_property:delete")
    @DeleteMapping(value = "/delete")
    public Result<String> delete(@RequestParam(name="id",required=true) String id) {
        toolsStoreEarlyWarningService.removeById(id);
        return Result.OK("删除成功!");
    }
    /**
     *  æ‰¹é‡åˆ é™¤
     *
     * @param ids
     * @return
     */
    @AutoLog(value = "tools_store_early warning-批量删除")
    @ApiOperation(value="tools_store_early warning-批量删除", notes="tools_store_early warning-批量删除")
    //@RequiresPermissions("org.jeecg.modules:tms_tools_config_property:deleteBatch")
    @DeleteMapping(value = "/deleteBatch")
    public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
        this.toolsStoreEarlyWarningService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.OK("批量删除成功!");
    }
    /**
     * é€šè¿‡id查询
     *
     * @param id
     * @return
     */
    //@AutoLog(value = "tools_store_early warning-通过id查询")
    @ApiOperation(value="tools_store_early warning-通过id查询", notes="tools_store_early warning-通过id查询")
    @GetMapping(value = "/queryById")
    public Result<ToolsStoreEarlyWarning> queryById(@RequestParam(name="id",required=true) String id) {
        ToolsStoreEarlyWarning tmsStoreEarlyWarning = toolsStoreEarlyWarningService.getById(id);
        if(tmsStoreEarlyWarning==null) {
            return Result.error("未找到对应数据");
        }
        return Result.OK(tmsStoreEarlyWarning);
    }
    /**
    * å¯¼å‡ºexcel
    *
    * @param request
    * @param tmsStoreEarlyWarning
    */
    //@RequiresPermissions("tools_tools_config_property:exportXls")
    @RequestMapping(value = "/exportXls")
    public ModelAndView exportXls(HttpServletRequest request, ToolsStoreEarlyWarning tmsStoreEarlyWarning) {
        return super.exportXls(request, tmsStoreEarlyWarning, ToolsStoreEarlyWarning.class, "tools_store_early warning");
    }
    /**
      * é€šè¿‡excel导入数据
    *
    * @param request
    * @param response
    * @return
    */
    //@RequiresPermissions("tools_tools_config_property:importExcel")
    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
        return super.importExcel(request, response, ToolsStoreEarlyWarning.class);
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolSharpening.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,77 @@
package org.jeecg.modules.tms.entity;
import java.io.Serializable;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * @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 ToolSharpening 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;
    /** åˆƒç£¨æ—¶é—´ */
    @ApiModelProperty(value = "刃磨时间")
    private Date sharpeningTime;
    /** åˆƒç£¨ç»“果及建议 */
    @ApiModelProperty(value = "刃磨结果及建议")
    private String sharpeningResult;
    /** è´£ä»»äºº */
    @ApiModelProperty(value = "责任人")
    private String responsiblePerson;
    /** å¤‡æ³¨ */
    @ApiModelProperty(value = "备注")
    private String remark;
    /** ç§Ÿæˆ·å· */
    @ApiModelProperty(value = "租户号")
    private String tenantId;
    /** åˆ›å»ºäºº */
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /** åˆ›å»ºæ—¶é—´ */
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    /** æ›´æ–°äºº */
    @ApiModelProperty(value = "更新人")
    private String updateBy;
    /** æ›´æ–°æ—¶é—´ */
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBound.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,150 @@
package org.jeecg.modules.tms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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 org.jeecg.common.aspect.annotation.Dict;
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;
/**
 * @Description: æŸè€—单
 * @Author: jeecg-boot
 * @Date: 2025-05-21
 * @Version: V1.0
 */
@ApiModel(value = "tms_loss_bound对象", description = "损耗单")
@Data
@TableName("tms_loss_bound")
public class ToolsLossBound implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * losser
     */
    @Excel(name = "报损人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    @ApiModelProperty(value = "losser")
    private String losser;
    /**
     * æŠ¥æŸå•号
     */
    @Excel(name = "orderCode", width = 15)
    @ApiModelProperty(value = "orderCode")
    private String orderCode;
    /**
     * ç»æ‰‹äºº
     */
    @Excel(name = "经手人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    @ApiModelProperty(value = "经手人")
    private String handler;
    /**
     * æŠ¥æŸæ—¶é—´
     */
    @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 lossTime;
    /**
     * å®¡æ ¸äºº
     */
    @Excel(name = "审核人", width = 15, dictTable = "sys_user", dicText = "realname", dicCode = "id")
    @ApiModelProperty(value = "reviewer")
    @Dict(dictTable = "sys_user", dicText = "realname", dicCode = "id")
    private String reviewer;
    /**
     * å®¡æ ¸æ—¶é—´
     */
    @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;
    /**
     * å®¡æ ¸çŠ¶æ€
     */
    @Excel(name = "orderStatus", width = 15)
    @ApiModelProperty(value = "orderStatus")
    @Dict(dicCode = "out_bill_status")
    private String orderStatus;
    /**
     * å®¡æ ¸æ„è§
     */
    @Excel(name = "approvalOpinion", width = 15)
    @ApiModelProperty(value = "approvalOpinion")
    private String approvalOpinion;
    /**
     * æŠ¥æŸåŽŸå› 
     */
    @Excel(name = "lossReason", width = 15)
    @ApiModelProperty(value = "lossReason")
    private String lossReason;
    /**
     * å¤‡æ³¨
     */
    @Excel(name = "remark", width = 15)
    @ApiModelProperty(value = "remark")
    private String remark;
    /**
     * ç§Ÿæˆ·å·
     */
    @Excel(name = "tenantId", width = 15)
    @ApiModelProperty(value = "tenantId")
    private String tenantId;
    /**创建人*/
    @Excel(name = "createdBy", width = 15)
    @ApiModelProperty(value = "创建人")
    private String createBy;
    /**
     * åˆ›å»ºäºº
     */
    @Excel(name = "createTime", 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 = "createTime")
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    @Excel(name = "updateBy", width = 15)
    @ApiModelProperty(value = "updateBy")
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @Excel(name = "updateTime", 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 = "updateTime")
    private Date updateTime;
    @TableField(exist = false)
    private List<ToolsLossBoundDetail> toolsLossBoundDetailList;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsLossBoundDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,154 @@
package org.jeecg.modules.tms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
/**
 * @Description: æŸè€—单明细
 * @Author: jeecg-boot
 * @Date: 2025-05-21
 * @Version: V1.0
 */
@ApiModel(value = "tms_loss_bound_detail对象", description = "损耗单明细")
@Data
@TableName("tms_loss_bound_detail")
public class ToolsLossBoundDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ä¸»é”®
     */
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**
     * å·¥å…·ç¼–码
     */
    @Excel(name = "toolCode", width = 15)
    @ApiModelProperty(value = "toolCode")
    private String toolCode;
    /**
     * å·¥å…·ç¼–号
     */
    @Excel(name = "toolId", width = 15)
    @ApiModelProperty(value = "toolId")
    private String toolId;
    /**
     * æŠ¥æŸåŽŸå› 
     */
    @Excel(name = "lossReason", width = 15)
    @ApiModelProperty(value = "lossReason")
    private String lossReason;
    /**
     * æŠ¥æŸæ•°é‡
     */
    @Excel(name = "lossNumber", width = 15)
    @ApiModelProperty(value = "lossNumber")
    private java.math.BigDecimal lossNumber;
    /**
     * å­˜å‚¨ä½ç½®ï¼ˆåº“位号)
     */
    @Excel(name = "goodsShelvesId", width = 15)
    @ApiModelProperty(value = "goodsShelvesId")
    private String goodsShelvesId;
    /**
     * å…¥åº“æ—¶é—´
     */
    @Excel(name = "inStoreDate", 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 = "inStoreDate")
    private Date inStoreDate;
    /**
     * ç§Ÿæˆ·å·
     */
    @Excel(name = "tenantId", width = 15)
    @ApiModelProperty(value = "tenantId")
    private String tenantId;
    /**
     * åˆ›å»ºäºº
     */
    @Excel(name = "createBy", width = 15)
    @ApiModelProperty(value = "createBy")
    private String createBy;
    /**
     * åˆ›å»ºæ—¶é—´
     */
    @Excel(name = "createTime", 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 = "createTime")
    private Date createTime;
    /**
     * æ›´æ–°äºº
     */
    @Excel(name = "updateBy", width = 15)
    @ApiModelProperty(value = "updateBy")
    private String updateBy;
    /**
     * æ›´æ–°æ—¶é—´
     */
    @Excel(name = "updateTime", 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 = "updateTime")
    private Date updateTime;
    /**
     * æŠ¥æŸå•号
     */
    @Excel(name = "lossBoundId", width = 15)
    @ApiModelProperty(value = "lossBoundId")
    private String lossBoundId;
    @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id")
    @TableField(exist = false)
    private String classifyId;
    @TableField(exist = false)
    private String paramaTableName;
    @TableField(exist = false)
    private String foreignLanguageName;
    @TableField(exist = false)
    private String chineseName;
    @TableField(exist = false)
    private String supplierId;
    @TableField(exist = false)
    private String storageLocation;
    @TableField(exist = false)
    private String toolMaterial;
    @TableField(exist = false)
    private String toolModel;
    /**
     * åº“位号
     */
    @TableField(exist = false)
    private String positionCode;
    @TableField(exist = false)
    @Dict(dicCode = "application_type")
    private String applicationType;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBound.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,93 @@
package org.jeecg.modules.tms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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 org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.List;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@ApiModel(value="tms_stocktaking_bound对象", description="盘点单表")
@Data
@TableName("tms_stocktaking_bound")
public class ToolsStocktakingBound implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @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 java.util.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 java.util.Date updateTime;
    /**盘点类型*/
    @Excel(name = "盘点类型", width = 15)
    @ApiModelProperty(value = "盘点类型")
    private Integer stocktakingType;
    /**盘点单号*/
    @Excel(name = "盘点单号", width = 15)
    @ApiModelProperty(value = "盘点单号")
    private String orderCode;
    /**经手人*/
    @Excel(name = "经手人", width = 15)
    @ApiModelProperty(value = "经手人")
    @Dict(dicCode = "sys_user, realname, id")
    private String handler;
    /**审核人*/
    @Excel(name = "审核人", width = 15)
    @ApiModelProperty(value = "审核人")
    @Dict(dicCode = "sys_user, realname, id")
    private String reviewer;
    /**盘点名称*/
    @Excel(name = "盘点名称", width = 15)
    @ApiModelProperty(value = "盘点名称")
    private String stocktakingName;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**审核状态*/
    @Excel(name = "审核状态", width = 15)
    @ApiModelProperty(value = "审核状态")
    @Dict(dicCode = "approval_status")
    private String approvalStatus;
    /**审核意见*/
    @Excel(name = "审核意见", width = 15)
    @ApiModelProperty(value = "审核意见")
    private String approvalOpinion;
    /**盘点时间*/
    @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 inventoryTime;
    @TableField(exist = false)
    private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStocktakingBoundDetail.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,137 @@
package org.jeecg.modules.tms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
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 org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
/**
 * @Description: ç›˜ç‚¹å•明细
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@ApiModel(value="tms_stocktaking_bound_detail对象", description="盘点单明细")
@Data
@TableName("tms_stocktaking_bound_detail")
public class ToolsStocktakingBoundDetail implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**盘点单id*/
    @ApiModelProperty(value = "盘点单id")
    private String stocktakingBoundId;
    /**创建人*/
    @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 java.util.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 java.util.Date updateTime;
    /**工具编码*/
    @Excel(name = "工具编码", width = 15)
    @ApiModelProperty(value = "工具编码")
    private String toolCode;
    /**工具编号*/
    @Excel(name = "工具编号", width = 15)
    @ApiModelProperty(value = "工具编号")
    private String toolId;
    /**库存号*/
    @ApiModelProperty(value = "库存号")
    private String goodsShelvesId;
    /**账号数量*/
    @Excel(name = "账面数量", width = 15)
    @ApiModelProperty(value = "账面数量")
    private java.math.BigDecimal bookQuantity;
    /**可用数量*/
    @Excel(name = "可用数量", width = 15)
    @ApiModelProperty(value = "可用数量")
    private java.math.BigDecimal availableQuantity;
    /**实盘数量*/
    @Excel(name = "实盘数量", width = 15)
    @ApiModelProperty(value = "实盘数量")
    private java.math.BigDecimal practicalQuantity;
    /**盘亏盘盈*/
    @Dict(dicCode = "surplusDeficit")
    @Excel(name = "盘亏盘盈", width = 15)
    @ApiModelProperty(value = "盘亏盘盈")
    private String surplusDeficit;
    /**盘库时间*/
    @Excel(name = "盘库时间", width = 20, format = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "盘库时间")
    private java.util.Date stocktakingDate;
    /**租户号*/
    @Excel(name = "租户号", width = 15)
    @ApiModelProperty(value = "租户号")
    private String tenantId;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**差异值*/
    @Excel(name = "差异值", width = 15)
    @ApiModelProperty(value = "差异值")
    private String differenceValue;
    @TableField(exist = false)
    private String paramaTableName;
    @TableField(exist = false)
    private String foreignLanguageName;
    @TableField(exist = false)
    private String chineseName;
    @TableField(exist = false)
    private String supplierId;
    @TableField(exist = false)
    private String storageLocation;
    @TableField(exist = false)
    private String toolMaterial;
    @TableField(exist = false)
    private String toolModel;
    /**
     * åº“位号
     */
    @TableField(exist = false)
    private String positionCode;
    @Dict(dictTable = "tms_tools_classify" , dicText = "type_name", dicCode = "id")
    @TableField(exist = false)
    private String classifyId;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/ToolsStoreEarlyWarning.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,109 @@
package org.jeecg.modules.tms.entity;
import java.io.Serializable;
import java.util.Date;
import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
import org.jeecgframework.poi.excel.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
 * @Description: tools_store_early warning
 * @Author: HOUJIE
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@Data
@TableName("tools_store_early warning")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="tms_tools_config_property对象", description="tools_store_early warning")
public class ToolsStoreEarlyWarning implements Serializable {
    private static final long serialVersionUID = 1L;
    /**主键*/
    @TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "主键")
    private String id;
    /**工具编号*/
    @Excel(name = "工具编号", width = 15)
    @ApiModelProperty(value = "工具编号")
    private String toolId;
    /**中文名称*/
    @Excel(name = "工具编码", width = 15)
    @ApiModelProperty(value = "工具编码")
    private String toolCode;
    /**厂家*/
    @Excel(name = "厂家", width = 15)
    @ApiModelProperty(value = "厂家")
    private String supplierId;
    /**材质*/
    @Excel(name = "材质", width = 15)
    @ApiModelProperty(value = "材质")
    private String toolMaterial;
    /**存储位置(偏那个厂区的库)*/
    @Excel(name = "存储位置(", width = 15)
    @ApiModelProperty(value = "存储位置")
    private String goodsShelvesId;
    /**总库存数量*/
    @Excel(name = "总库存数量", width = 15)
    @ApiModelProperty(value = "总库存数量")
    private BigDecimal totalCount;
    /**可用库存数量*/
    @Excel(name = "可用库存数量", width = 15)
    @ApiModelProperty(value = "可用库存数量")
    private BigDecimal availableQuantity;
    /**库存下限*/
    @Excel(name = "库存下限", width = 15)
    @ApiModelProperty(value = "库存下限")
    private BigDecimal lowerInventory;
    /**库存上限*/
    @Excel(name = "库存上限", width = 15)
    @ApiModelProperty(value = "库存上限")
    private String highestInventory;
    @Excel(name = "状态;1已处理;2.未处理", width = 15)
    @ApiModelProperty(value = "状态;1已处理;2.未处理")
    private String status;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**租户号*/
    @Excel(name = "租户号", width = 15)
    @ApiModelProperty(value = "租户号")
    private String tenantId;
    /**创建人*/
    @ApiModelProperty(value = "创建人")
    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;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/StocktakingPoundVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,35 @@
package org.jeecg.modules.tms.entity.vo;
import com.baomidou.mybatisplus.annotation.TableField;
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 StocktakingPoundVo {
    private String id;
    private String classifyId;
    private String toolCode;
    private String foreignLanguageName;
    private String standardLevel;
    private String standardCode;
    private String toolModel;
    private String paramaTableName;
    private Integer totalCount;
    private Integer availableCount;
    @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 toolMaterial;
    private String partMaterial;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/entity/vo/ToolsStocktakingVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,87 @@
package org.jeecg.modules.tms.entity.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.jeecgframework.poi.excel.annotation.ExcelCollection;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: jeecg-boot
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@Data
@ApiModel(value="tools_stocktaking_bound对象", description="盘点单表")
public class ToolsStocktakingVo {
    /**主键*/
    @ApiModelProperty(value = "主键")
    private String id;
    /**创建人*/
    @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;
    /**盘点类型*/
    @Excel(name = "盘点类型", width = 15)
    @ApiModelProperty(value = "盘点类型")
    private Integer stocktakingType;
    /**盘点单号*/
    @Excel(name = "盘点单号", width = 15)
    @ApiModelProperty(value = "盘点单号")
    private String orderCode;
    /**经手人*/
    @Excel(name = "经手人", width = 15)
    @ApiModelProperty(value = "经手人")
    private String handler;
    /**审核人*/
    @Excel(name = "审核人", width = 15)
    @ApiModelProperty(value = "审核人")
    private String reviewer;
    /**盘点名称*/
    @Excel(name = "盘点名称", width = 15)
    @ApiModelProperty(value = "盘点名称")
    private String stocktakingName;
    /**备注*/
    @Excel(name = "备注", width = 15)
    @ApiModelProperty(value = "备注")
    private String remark;
    /**审核状态*/
    @Excel(name = "审核状态", width = 15)
    @ApiModelProperty(value = "审核状态")
    private String approvalStatus;
    /**审核意见*/
    @Excel(name = "审核意见", width = 15)
    @ApiModelProperty(value = "审核意见")
    private String approvalOpinion;
    /**盘点时间*/
    @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 inventoryTime;
    @ExcelCollection(name="盘点单明细")
    @ApiModelProperty(value = "盘点单明细")
    private List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList;
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/BaseToolsMapper.java
@@ -35,4 +35,5 @@
    IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page,
                                               @Param(Constants.WRAPPER) Wrapper<ParaBladeVo> queryWrapper);
    IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, @Param(Constants.WRAPPER) Wrapper<StocktakingPoundVo> wrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
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.ToolsLossBound;
import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
import java.util.List;
/**
 * @Description: æŸè€—单明细
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
public interface ToolsLossBoundDetailMapper extends BaseMapper<ToolsLossBoundDetail> {
    /**
     * é€šè¿‡ä¸»è¡¨id删除子表数据
     *
     * @param mainId ä¸»è¡¨id
     * @return boolean
     */
    public boolean deleteByMainId(@Param("mainId") String mainId);
    /**
     * é€šè¿‡ä¸»è¡¨id查询子表数据
     *
     * @param mainId ä¸»è¡¨id
     * @return List<ToolsLossBoundDetail>
     */
    public List<ToolsLossBoundDetail> selectByMainId(@Param("mainId") String mainId);
    IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page,
                                        @Param(Constants.WRAPPER) Wrapper<ToolsLossBoundDetail> queryWrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsLossBoundMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,21 @@
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.ToolsLossBound;
/**
 * @Description: æŸè€—单
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
public interface ToolsLossBoundMapper extends BaseMapper<ToolsLossBound> {
    IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page,
                                       @Param(Constants.WRAPPER) Wrapper<ToolsLossBound> queryWrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsSharpeningMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.modules.tms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.tms.entity.ToolSharpening;
/**
 * @Description: tms_tool_sharpening Mapper æŽ¥å£
 * @Author: ä¾¯æ°
 * @Date:   2025-05-10
 */
public interface ToolsSharpeningMapper extends BaseMapper<ToolSharpening> {
    // å¯è‡ªå®šä¹‰æŸ¥è¯¢æ–¹æ³•
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundDetailMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,41 @@
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.ToolsClassify;
import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
import java.util.List;
public interface ToolsStocktakingBoundDetailMapper extends BaseMapper<ToolsStocktakingBoundDetail> {
    /**
     * é€šè¿‡ä¸»è¡¨id删除子表数据
     *
     * @param mainId ä¸»è¡¨id
     * @return boolean
     */
    public boolean deleteByMainId(@Param("mainId") String mainId);
    /**
     * é€šè¿‡ä¸»è¡¨id删除子表数据
     *
     * @param mainId ä¸»è¡¨id
     * @return boolean
     */
    public String getParamaTableNameByMainId(@Param("mainId") String mainId);
  /**
   * é€šè¿‡ä¸»è¡¨id查询子表数据
   *
   * @param
   * @return List<ToolsStocktakingBoundDetail>
   */
    IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page,
                                       @Param(Constants.WRAPPER) Wrapper<ToolsStocktakingBoundDetail> queryWrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStocktakingBoundMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.tms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.tms.entity.ToolsStocktakingBound;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: jeecg-boot
 * @Date:   2025-05-16
 * @Version: V1.0
 */
public interface ToolsStocktakingBoundMapper extends BaseMapper<ToolsStocktakingBound> {
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/ToolsStoreEarlyWarningMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.tms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning;
/**
 * @Description: tools_store_early warning
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
public interface ToolsStoreEarlyWarningMapper extends BaseMapper<ToolsStoreEarlyWarning> {
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/BaseToolsMapper.xml
@@ -343,4 +343,97 @@
                LEFT JOIN tms_tools_classify t3 ON t3.id = t.classify_id
            ${ew.customSqlSegment}
    </select>
    <select id="pageWithLedgerAndConfig" resultType="org.jeecg.modules.tms.entity.vo.StocktakingPoundVo">
        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,
        <!-- åŠ¨æ€å­—æ®µé€‰æ‹©ï¼Œä½¿ç”¨è¡¨åˆ«åï¼ˆéœ€ç¡®ä¿è¡¨å·²å…³è”ï¼‰ -->
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                c.tool_material AS toolMaterial,
                c.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                h.tool_material AS toolMaterial,
                h.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                th.tool_material AS toolMaterial,
                th.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                m.tool_material AS toolMaterial,
                m.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                tr.tool_material AS toolMaterial,
                tr.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                b.tool_material AS toolMaterial,
                b.part_material AS partMaterial
            </when>
            <!-- é»˜è®¤æƒ…况:paramaTableName ä¸ºç©ºæˆ–未传递时,关联 tms_para_common_tool è¡¨ -->
            <otherwise>
                c.tool_material AS toolMaterial,
                c.part_material AS partMaterial
            </otherwise>
        </choose>
        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
        <!-- åŠ¨æ€è¡¨å…³è”ï¼Œç¡®ä¿æ‰€æœ‰æƒ…å†µéƒ½æœ‰å¯¹åº”çš„ LEFT JOIN -->
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                LEFT JOIN tms_para_hole_tools h ON h.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                LEFT JOIN tms_para_threading_tool th ON th.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                LEFT JOIN tms_para_mill_tool m ON m.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                LEFT JOIN tms_para_turning_tools tr ON tr.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                LEFT JOIN tms_para_blade b ON b.tool_code = t.id
            </when>
            <!-- é»˜è®¤æƒ…况:添加 LEFT JOIN tms_para_common_tool c -->
            <otherwise>
                LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id
            </otherwise>
        </choose>
        <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/ToolsLossBoundDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
<?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.ToolsLossBoundDetailMapper">
    <delete id="deleteByMainId" parameterType="java.lang.String">
        DELETE
        FROM tms_loss_bound_detail
        WHERE loss_bound_id = #{mainId}
    </delete>
    <select id="selectByMainId" parameterType="java.lang.String"
            resultType="org.jeecg.modules.tms.entity.ToolsLossBoundDetail">
        SELECT *
        FROM tms_loss_bound_detail
        WHERE loss_bound_id = #{mainId}
    </select>
    <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolsLossBoundDetail">
        SELECT
        t1.*,
        t2.chinese_name chineseName,
        t2.tool_model toolModel,
        t2.classify_id  classifyId,
        t2.parama_table_name paramaTableName,
        t3.application_type applicationType,
        t3.supplier_id supplierId,
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                t4.tool_material toolMaterial,
                t4.part_material partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                t5.tool_material toolMaterial,
                t5.part_material partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                t6.tool_material toolMaterial,
                t6.part_material partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                t7.tool_material toolMaterial,
                t7.part_material partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                t8.tool_material toolMaterial,
                t8.part_material partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                t9.tool_material toolMaterial,
                t9.part_material partMaterial
            </when>
            <otherwise>
                t10.tool_material toolMaterial,
                t10.part_material partMaterial
            </otherwise>
        </choose>
        FROM tms_loss_bound_detail t1
        LEFT JOIN tms_base_tools t2 on t1.tool_id = t2.id
        LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                LEFT JOIN tms_para_common_tool t4 on t4.tool_code = t2.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                LEFT JOIN tms_para_hole_tools t5 on t5.tool_code = t2.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                LEFT JOIN tms_para_threading_tool t6 on t6.tool_code = t2.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                LEFT JOIN tms_para_mill_tool t7 on t7.tool_code = t2.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                LEFT JOIN tms_para_turning_tools t8 on t8.tool_code = t2.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                LEFT JOIN tms_para_blade t9 on t9.tool_code = t2.id
            </when>
            <otherwise>
                LEFT JOIN tms_para_common_tool t10 on t10.tool_code = t2.id
            </otherwise>
        </choose>
        ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsLossBoundMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,10 @@
<?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.ToolsLossBoundMapper">
    <select id="queryPageList" resultType="org.jeecg.modules.tms.entity.ToolsLossBound">
        SELECT
            t.*
        FROM tms_loss_bound t
            ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsSharpeningMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?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">
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundDetailMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,91 @@
<?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.ToolsStocktakingBoundDetailMapper">
    <delete id="deleteByMainId" parameterType="java.lang.String">
        DELETE
        FROM tools_stocktaking_bound_detail
        WHERE goods_shelves_id = #{mainId}
    </delete>
    <select id="getParamaTableNameByMainId" parameterType="string" resultType="string">
        SELECT t1.parama_table_name
        FROM tools_stocktaking_bound_detail t
                 LEFT JOIN tms_base_tools t1 ON t1.tool_id = t.id
        WHERE t.goods_shelves_id = #{mainId}
    </select>
    <select id="selectByMainId" resultType="org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail">
        SELECT
        t.*,
        t2.tool_code AS toolCode,  <!-- ä¿®æ­£ï¼šå°†t1改为t2 -->
        t2.parama_table_name paramaTableName,
        t2.classify_id AS classifyId,
        t3.storage_location AS storageLocation,
        t3.chinese_name AS chineseName,
        t2.tool_model AS toolModel,
        t3.supplier_id AS supplierId,
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                c.tool_material AS toolMaterial,
                c.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                h.tool_material AS toolMaterial,
                h.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                th.tool_material AS toolMaterial,
                th.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                m.tool_material AS toolMaterial,
                m.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                tr.tool_material AS toolMaterial,
                tr.part_material AS partMaterial
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                b.tool_material AS toolMaterial,
                b.part_material AS partMaterial
            </when>
            <!-- é»˜è®¤æƒ…况:paramaTableName ä¸ºç©ºæˆ–未传递时,关联 tms_para_common_tool è¡¨ -->
            <otherwise>
                c.tool_material AS toolMaterial,
                c.part_material AS partMaterial
            </otherwise>
        </choose>
        FROM tms_stocktaking_bound_detail t
        LEFT JOIN tms_base_tools t2 on t.tool_id = t2.id
        LEFT JOIN tms_tools_config_property t3 on t3.tool_code = t2.id
        <choose>
            <when test="ew.paramNameValuePairs.paramaTableName == '1'">
                LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '2'">
                LEFT JOIN tms_para_hole_tools h ON h.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '3'">
                LEFT JOIN tms_para_threading_tool th ON th.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '4'">
                LEFT JOIN tms_para_mill_tool m ON m.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '5'">
                LEFT JOIN tms_para_turning_tools tr ON tr.tool_code = t.id
            </when>
            <when test="ew.paramNameValuePairs.paramaTableName == '6'">
                LEFT JOIN tms_para_blade b ON b.tool_code = t.id
            </when>
            <!-- é»˜è®¤æƒ…况:添加 LEFT JOIN tms_para_common_tool c -->
            <otherwise>
                LEFT JOIN tms_para_common_tool c ON c.tool_code = t.id
            </otherwise>
        </choose>
            ${ew.customSqlSegment}
    </select>
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStocktakingBoundMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?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.ToolsStocktakingBoundMapper">
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/mapper/xml/ToolsStoreEarlyWarningMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,5 @@
<?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.ToolsStoreEarlyWarningMapper">
</mapper>
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IBaseToolsService.java
@@ -1,5 +1,6 @@
package org.jeecg.modules.tms.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.jeecg.modules.tms.entity.BaseTools;
@@ -28,4 +29,5 @@
    IPage<ParaTurningToolsVo> paraTurningToolsList(Page<ParaTurningToolsVo> page, Map<String, String[]> parameterMap);
    IPage<ParaBladeVo> paraBladeList(Page<ParaBladeVo> page, Map<String, String[]> parameterMap);
    IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package org.jeecg.modules.tms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tms.entity.OutboundDetail;
import org.jeecg.modules.tms.entity.ToolsLossBound;
import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
import java.util.Map;
/**
 * @Description: æŸè€—单明细
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
public interface IToolsLossBoundDetailService extends IService<ToolsLossBoundDetail> {
    IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page, Map<String, String[]> parameterMap);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsLossBoundService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,49 @@
package org.jeecg.modules.tms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tms.entity.ToolsLossBound;
import java.io.Serializable;
import java.util.Collection;
import java.util.Map;
/**
 * @Description: æŸè€—单明细
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
public interface IToolsLossBoundService extends IService<ToolsLossBound> {
    /**
     * åˆ é™¤ä¸€å¯¹å¤š
     *
     * @param id
     */
    public void delMain (String id);
    /**
     * æ‰¹é‡åˆ é™¤ä¸€å¯¹å¤š
     *
     * @param idList
     */
    public void delBatchMain (Collection<? extends Serializable> idList);
    void addTotal(ToolsLossBound toolsLossBound);
    IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page, Map<String, String[]> parameterMap);
    void editTotal(ToolsLossBound toolsLossBound);
    /**
     * æäº¤æŠ¥æŸå•
     * @param id
     * @return
     */
    boolean submintOrder(String id);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsSharpeningService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package org.jeecg.modules.tms.service;
import org.jeecg.modules.tms.entity.ToolSharpening;
import com.baomidou.mybatisplus.extension.service.IService;
/**
 * @Description: åˆ€å…·åˆƒç£¨è®°å½• Service æŽ¥å£
 * @Author: ä¾¯æ°
 * @Date:   2025-05-10
 */
public interface IToolsSharpeningService extends IService<ToolSharpening> {
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundDetailService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,31 @@
package org.jeecg.modules.tms.service;
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 com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
import java.util.List;
import java.util.Map;
/**
 * @Description: ç›˜ç‚¹å•明细
 * @Author: houjie
 * @Date: 2025-05-16
 * @Version: V1.0
 */
public interface IToolsStocktakingBoundDetailService extends IService<ToolsStocktakingBoundDetail> {
    /**
     * é€šè¿‡ä¸»è¡¨id查询子表数据
     *
     * @param
     * @return List<ToolsStocktakingBoundDetail>
     */
    public   IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page, Map<String, String[]> parameterMap);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStocktakingBoundService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,56 @@
package org.jeecg.modules.tms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tms.entity.ToolsStocktakingBound;
import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
import java.io.Serializable;
import java.util.Collection;
import java.util.List;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: houjie
 * @Date: 2025-05-16
 * @Version: V1.0
 */
public interface IToolsStocktakingBoundService extends IService<ToolsStocktakingBound> {
    /**
     * æ·»åŠ ä¸€å¯¹å¤š
     *
     * @param toolsStocktakingBound
     * @param toolsStocktakingBoundDetailList
     */
    public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList);
    /**
     * ä¿®æ”¹ä¸€å¯¹å¤š
     *
     * @param toolsStocktakingBound
     * @param toolsStocktakingBoundDetailList
     */
    public void updateMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList);
    /**
     * åˆ é™¤ä¸€å¯¹å¤š
     *
     * @param id
     */
    public void delMain(String id);
    /**
     * æ‰¹é‡åˆ é™¤ä¸€å¯¹å¤š
     *
     * @param idList
     */
    public void delBatchMain(Collection<? extends Serializable> idList);
    /**
     * æäº¤ç›˜ç‚¹å•
     * @param id
     * @return
     */
    boolean submintOrder(String id);
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/IToolsStoreEarlyWarningService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,14 @@
package org.jeecg.modules.tms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning;
/**
 * @Description: tools_store_early warning
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
public interface IToolsStoreEarlyWarningService extends IService<ToolsStoreEarlyWarning> {
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/BaseToolsServiceImpl.java
@@ -4,14 +4,12 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.tms.entity.BaseTools;
import org.jeecg.modules.tms.entity.ParaCommonTool;
import org.jeecg.modules.tms.entity.vo.*;
import org.jeecg.modules.tms.mapper.BaseToolsMapper;
import org.jeecg.modules.tms.service.IBaseToolsService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Map;
@@ -137,4 +135,8 @@
        queryWrapper.orderByDesc("t.create_time");
        return this.baseMapper.paraBladeList(page, queryWrapper);
    }
    @Override
    public IPage<StocktakingPoundVo> pageWithLedgerAndConfig(Page<StocktakingPoundVo> page, QueryWrapper<StocktakingPoundVo> queryWrapper) {
        return baseMapper.pageWithLedgerAndConfig(page, queryWrapper);
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,38 @@
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.OutboundDetail;
import org.jeecg.modules.tms.entity.ToolsLossBound;
import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
import org.jeecg.modules.tms.entity.vo.OutboundDetailVo;
import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper;
import org.jeecg.modules.tms.service.IToolsLossBoundDetailService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import java.util.Map;
/**
 * @Description: æŸè€—单明细
 * @Author: jeecg-boot
 * @Date:   2025-05-21
 * @Version: V1.0
 */
@Service
public class ToolsLossBoundDetailServiceImpl extends ServiceImpl<ToolsLossBoundDetailMapper, ToolsLossBoundDetail> implements IToolsLossBoundDetailService {
    @Override
    public IPage<ToolsLossBoundDetail> queryPageList(Page<ToolsLossBoundDetail> page, Map<String, String[]> parameterMap) {
        QueryWrapper<ToolsLossBoundDetail> queryWrapper = Wrappers.query();
        String[] outStorehouseIds = parameterMap.get("lossBoundId");
        if (outStorehouseIds != null && outStorehouseIds.length > 0) {
            queryWrapper.eq("t1.loss_bound_id", outStorehouseIds[0]);
        }
        return this.baseMapper.queryPageList(page, queryWrapper);
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsLossBoundServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,189 @@
package org.jeecg.modules.tms.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
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.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
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.service.ISysBusinessCodeRuleService;
import org.jeecg.modules.tms.entity.ToolsLossBound;
import org.jeecg.modules.tms.entity.ToolsLossBoundDetail;
import org.jeecg.modules.tms.enums.OutBillStatus;
import org.jeecg.modules.tms.mapper.ToolsLossBoundDetailMapper;
import org.jeecg.modules.tms.mapper.ToolsLossBoundMapper;
import org.jeecg.modules.tms.service.IToolsLossBoundDetailService;
import org.jeecg.modules.tms.service.IToolsLossBoundService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.*;
/**
 * @Description: æŸè€—单
 * @Author: jeecg-boot
 * @Date: 2025-05-21
 * @Version: V1.0
 */
@Service("IToolsLossBoundService")
public class ToolsLossBoundServiceImpl extends ServiceImpl<ToolsLossBoundMapper, ToolsLossBound> implements IToolsLossBoundService, FlowCallBackServiceI {
    @Autowired
    private ToolsLossBoundMapper baseMapper;
    @Autowired
    private ToolsLossBoundDetailMapper baseDetailMapper;
    @Autowired
    private IToolsLossBoundDetailService toolsLossBoundDetailService;
    @Resource
    private FlowCommonService flowCommonService;
    @Resource
    private IFlowDefinitionService flowDefinitionService;
    @Autowired
    private IFlowTaskService flowTaskService;
    @Autowired
    private ISysBusinessCodeRuleService businessCodeRuleService;
    @Override
    public void delMain(String id) {
        baseDetailMapper.deleteByMainId(id);
        baseMapper.deleteById(id);
    }
    @Override
    public void delBatchMain(Collection<? extends Serializable> idList) {
        for (Serializable id : idList) {
            baseDetailMapper.deleteByMainId(id.toString());
            baseMapper.deleteById(id);
        }
    }
    @Override
    public void addTotal(ToolsLossBound toolsLossBound) {
        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         if (loginUser != null){
             toolsLossBound.setHandler(loginUser.getId());
         }
        toolsLossBound.setOrderCode(businessCodeRuleService.generateBusinessCodeSeq("LossBound"));
        toolsLossBound.setOrderStatus(OutBillStatus.DRAFT.getValue());
        save(toolsLossBound);
        List<ToolsLossBoundDetail> detailList = toolsLossBound.getToolsLossBoundDetailList();
        List<ToolsLossBoundDetail> newDetailList = new ArrayList<>();
        if (CollectionUtils.isNotEmpty(detailList)) {
            detailList.forEach(item -> {
                item.setLossBoundId(toolsLossBound.getId());
                newDetailList.add(item);
            });
            toolsLossBoundDetailService.saveBatch(newDetailList);
        }
    }
    @Override
    public IPage<ToolsLossBound> queryPageList(Page<ToolsLossBound> page, Map<String, String[]> parameterMap) {
        QueryWrapper<ToolsLossBound> queryWrapper = Wrappers.query();
        String[] orderCode = parameterMap.get("orderCode");
        if (orderCode != null && orderCode.length > 0) {
            queryWrapper.like("t.order_code", orderCode[0]);
        }
        String[] statuses = parameterMap.get("orderStatus");
        if (statuses != null && statuses.length > 0) {
            queryWrapper.eq("t.order_status", statuses[0]);
        }
        return this.baseMapper.queryPageList(page, queryWrapper);
    }
    @Override
    public void editTotal(ToolsLossBound toolsLossBound) {
        //删除所有明细
        toolsLossBoundDetailService.remove(new LambdaQueryWrapper<ToolsLossBoundDetail>()
                .eq(ToolsLossBoundDetail::getLossBoundId, toolsLossBound.getId()));
        ToolsLossBound toolsLossBound1 = BeanUtil.copyProperties(toolsLossBound, ToolsLossBound.class);
        this.baseMapper.updateById(toolsLossBound1);
        List<ToolsLossBoundDetail> detailList = CollectionUtil.newArrayList();
        toolsLossBound.getToolsLossBoundDetailList().forEach(item -> {
            item.setLossBoundId(toolsLossBound1.getId());
            detailList.add(item);
        });
        toolsLossBoundDetailService.saveBatch(detailList);
    }
    @Override
    public boolean submintOrder(String id) {
        ToolsLossBound toolsLossBound = this.getById(id);
        if (toolsLossBound == null) {
            return false;
        } else {
            toolsLossBound.setReviewer(toolsLossBound.getReviewer());
            flowCommonService.initActBusiness("报损单号:" + toolsLossBound.getOrderCode() + ";报损人: " + toolsLossBound.getLosser() + ";进行报损",
                    toolsLossBound.getId(), "IToolsStocktakingBoundService", "tools_Loss_Approval", null);
            Map<String, Object> variables = new HashMap<>();
            variables.put("dataId", toolsLossBound.getId());
            if (StrUtil.isEmpty(toolsLossBound.getReviewer())) {
                variables.put("organization", "新增工具报损单默认启动流程");
                variables.put("comment", "新增工具报损单默认启动流程");
            } else {
                variables.put("organization", toolsLossBound.getLossReason());
                variables.put("comment", toolsLossBound.getLossReason());
            }
            variables.put("proofreading", true);
            List<String> usernames = new ArrayList<>();
            usernames.add(toolsLossBound.getReviewer());
            variables.put("NextAssignee", usernames);
            Result result = flowDefinitionService.startProcessInstanceByKey("tools_Loss_Approval", variables);
            if (result != null) {
                toolsLossBound.setLossTime(new Date());
                toolsLossBound.setOrderStatus(OutBillStatus.SUBMITTED.getValue());
                //保存工单
                baseMapper.updateById(toolsLossBound);
                return result.isSuccess();
            }
            return true;
        }
    }
    @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;
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsSharpeningServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,17 @@
package org.jeecg.modules.tms.service.impl;
import org.jeecg.modules.tms.entity.ToolSharpening;
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;
/**
 * @Description: åˆ€å…·åˆƒç£¨è®°å½• Service å®žçŽ°ç±»
 * @Author: yourName
 * @Date:   2025-05-10
 */
@Service
public class ToolsSharpeningServiceImpl extends ServiceImpl<ToolsSharpeningMapper, ToolSharpening> implements IToolsSharpeningService {
    // å¦‚需扩展逻辑可在此添加
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundDetailServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
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 com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.tms.entity.ToolsStocktakingBoundDetail;
import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper;
import org.jeecg.modules.tms.service.IToolsStocktakingBoundDetailService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * @Description: ç›˜ç‚¹å•明细
 * @Author: houjie
 * @Date: 2025-05-16
 * @Version: V1.0
 */
@Service
public class ToolsStocktakingBoundDetailServiceImpl extends ServiceImpl<ToolsStocktakingBoundDetailMapper, ToolsStocktakingBoundDetail> implements IToolsStocktakingBoundDetailService {
    @Autowired
    private ToolsStocktakingBoundDetailMapper toolsStocktakingBoundDetailMapper;
    public IPage<ToolsStocktakingBoundDetail> selectByMainId(Page<ToolsStocktakingBoundDetail> page, Map<String, String[]> parameterMap) {
        QueryWrapper<ToolsStocktakingBoundDetail> queryWrapper = Wrappers.query();
        String[] stocktakingBoundIds = parameterMap.get("stocktakingBoundId");
        if (stocktakingBoundIds != null && stocktakingBoundIds.length > 0) {
            queryWrapper.eq("t.stocktaking_bound_id", stocktakingBoundIds[0]);
        }
        return toolsStocktakingBoundDetailMapper.selectByMainId(page, queryWrapper);
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStocktakingBoundServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,168 @@
package org.jeecg.modules.tms.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.shiro.SecurityUtils;
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.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.ISysUserService;
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.enums.OutBillStatus;
import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundDetailMapper;
import org.jeecg.modules.tms.mapper.ToolsStocktakingBoundMapper;
import org.jeecg.modules.tms.service.IToolsStocktakingBoundService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.*;
/**
 * @Description: ç›˜ç‚¹å•表
 * @Author: jeecg-boot
 * @Date: 2025-05-16
 * @Version: V1.0
 */
@Service("IToolsStocktakingBoundService")
public class ToolsStocktakingBoundServiceImpl extends ServiceImpl<ToolsStocktakingBoundMapper, ToolsStocktakingBound> implements IToolsStocktakingBoundService, FlowCallBackServiceI {
    @Autowired
    private ISysUserService systemUserService;
    @Autowired
    private ToolsStocktakingBoundMapper toolsStocktakingBoundMapper;
    @Autowired
    private ToolsStocktakingBoundDetailMapper toolsStocktakingBoundDetailMapper;
    @Resource
    private FlowCommonService flowCommonService;
    @Resource
    private IFlowDefinitionService flowDefinitionService;
    @Autowired
    private IFlowTaskService flowTaskService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) {
        toolsStocktakingBoundMapper.insert(toolsStocktakingBound);
        if (toolsStocktakingBoundDetailList != null && toolsStocktakingBoundDetailList.size() > 0) {
            for (ToolsStocktakingBoundDetail entity : toolsStocktakingBoundDetailList) {
                //外键设置
                entity.setGoodsShelvesId(toolsStocktakingBound.getId());
                toolsStocktakingBoundDetailMapper.insert(entity);
            }
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateMain(ToolsStocktakingBound toolsStocktakingBound, List<ToolsStocktakingBoundDetail> toolsStocktakingBoundDetailList) {
        toolsStocktakingBoundMapper.updateById(toolsStocktakingBound);
        //1.先删除子表数据
        toolsStocktakingBoundDetailMapper.deleteByMainId(toolsStocktakingBound.getId());
        //2.子表数据重新插入
        if (toolsStocktakingBoundDetailList != null && toolsStocktakingBoundDetailList.size() > 0) {
            for (ToolsStocktakingBoundDetail entity : toolsStocktakingBoundDetailList) {
                //外键设置
                entity.setGoodsShelvesId(toolsStocktakingBound.getId());
                toolsStocktakingBoundDetailMapper.insert(entity);
            }
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delMain(String id) {
        toolsStocktakingBoundDetailMapper.deleteByMainId(id);
        toolsStocktakingBoundMapper.deleteById(id);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delBatchMain(Collection<? extends Serializable> idList) {
        for (Serializable id : idList) {
            toolsStocktakingBoundDetailMapper.deleteByMainId(id.toString());
            toolsStocktakingBoundMapper.deleteById(id);
        }
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean submintOrder(String id) {
        ToolsStocktakingBound toolsStocktakingBound = this.getById(id);
        if (toolsStocktakingBound == null) {
            return false;
        } else {
            toolsStocktakingBound.setReviewer(toolsStocktakingBound.getReviewer());
            //修改状态
//            toolsStocktakingBound.setApprovalStatus(OutBillStatus.SUBMITTED.getValue());
            flowCommonService.initActBusiness("盘点单号:" + toolsStocktakingBound.getOrderCode() + ";盘点名称: " + toolsStocktakingBound.getStocktakingName() + ";进行盘点",
                    toolsStocktakingBound.getId(), "IToolsStocktakingBoundService", "tools_stocktaking_bound", null);
            Map<String, Object> variables = new HashMap<>();
            variables.put("dataId", toolsStocktakingBound.getId());
            if (StrUtil.isEmpty(toolsStocktakingBound.getReviewer())) {
                variables.put("organization", "新增工具盘点单默认启动流程");
                variables.put("comment", "新增工具盘点单默认启动流程");
            } else {
                variables.put("organization", toolsStocktakingBound.getRemark());
                variables.put("comment", toolsStocktakingBound.getRemark());
            }
            variables.put("proofreading", true);
            List<String> usernames = new ArrayList<>();
            usernames.add(toolsStocktakingBound.getReviewer());
            variables.put("NextAssignee", usernames);
            Result result = flowDefinitionService.startProcessInstanceByKey("tools_stocktaking_bound", variables);
            if (result != null) {
                toolsStocktakingBound.setInventoryTime(new Date());
                toolsStocktakingBound.setApprovalStatus(OutBillStatus.SUBMITTED.getValue());
                //保存工单
                toolsStocktakingBoundMapper.updateById(toolsStocktakingBound);
                return result.isSuccess();
            }
            return true;
        }
    }
    @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;
    }
}
lxzn-module-tms/src/main/java/org/jeecg/modules/tms/service/impl/ToolsStoreEarlyWarningServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,18 @@
package org.jeecg.modules.tms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.modules.tms.entity.ToolsStoreEarlyWarning;
import org.jeecg.modules.tms.mapper.ToolsStoreEarlyWarningMapper;
import org.jeecg.modules.tms.service.IToolsStoreEarlyWarningService;
import org.springframework.stereotype.Service;
/**
 * @Description: tools_store_early warning
 * @Author: houjie
 * @Date:   2025-05-16
 * @Version: V1.0
 */
@Service
public class ToolsStoreEarlyWarningServiceImpl extends ServiceImpl<ToolsStoreEarlyWarningMapper, ToolsStoreEarlyWarning> implements IToolsStoreEarlyWarningService {
}