diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java index 07a036e8..b0bf339d 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/tyre/BaseTyreController.java @@ -35,14 +35,13 @@ import java.util.stream.Collectors; /** * 轮胎基础信息Controller - * + * * @author highway * @date 2025-12-16 */ @Controller @RequestMapping("/tyre/tyre") -public class BaseTyreController extends BaseController -{ +public class BaseTyreController extends BaseController { private String prefix = "tyre/tyre"; @Autowired @@ -63,17 +62,16 @@ public class BaseTyreController extends BaseController @Autowired private IBaseInventoryService baseInventoryService; + @RequiresPermissions("tyre:tyre:view") @GetMapping() - public String tyre() - { + public String tyre() { return prefix + "/tyre"; } @RequiresPermissions("tyre:tyre:stat") @GetMapping("/stat") - public String stat() - { + public String stat() { return prefix + "/stat"; } @@ -84,8 +82,7 @@ public class BaseTyreController extends BaseController @GetMapping("/detail/{tyreId}") - public String tyreDetil(@PathVariable("tyreId") Long tyreId, Model model) - { + public String tyreDetil(@PathVariable("tyreId") Long tyreId, Model model) { // 1. 根据 ID 查询轮胎数据 BaseTyre tyre = baseTyreService.selectBaseTyreById(tyreId); if (tyre == null) { @@ -111,13 +108,13 @@ public class BaseTyreController extends BaseController // 核心修改:根据 type 字段判断是入库还是出库 if (item.getType() != null && item.getType().equals("1")) { // 1 代表 出库 - timelineItem.setTitle("轮胎出库:"+item.getCreateBy()); + timelineItem.setTitle("轮胎出库:" + item.getCreateBy()); timelineItem.setIcon("fa-sign-out"); // 或者是 fa-truck (卡车图标) timelineItem.setColor("warning"); // 橙色/黄色,代表离开 timelineItem.setTime(item.getCreateTime()); } else { // 0 代表 入库 (默认情况) - timelineItem.setTitle("轮胎入库:"+item.getCreateBy()); + timelineItem.setTitle("轮胎入库:" + item.getCreateBy()); timelineItem.setIcon("fa-sign-in"); // 或者是 fa-inbox (盒子图标) timelineItem.setColor("primary"); // 蓝色,代表进入 timelineItem.setTime(item.getCreateTime()); @@ -139,7 +136,7 @@ public class BaseTyreController extends BaseController for (RecordTyreInstall item : installList) { TimelineItem timelineItem = new TimelineItem(); timelineItem.setId(item.getId()); - timelineItem.setTitle("轮胎安装:"+item.getCreateBy()); + timelineItem.setTitle("轮胎安装:" + item.getCreateBy()); timelineItem.setType("install"); timelineItem.setDetail("车辆:" + item.getCarNo() + " | 轮位:" + item.getWheelPostion()); timelineItem.setTime(item.getCreateTime()); @@ -157,7 +154,7 @@ public class BaseTyreController extends BaseController for (RecordCheck item : checkList) { TimelineItem timelineItem = new TimelineItem(); timelineItem.setId(item.getId()); - timelineItem.setTitle("轮胎检查"+item.getCreateBy()); + timelineItem.setTitle("轮胎检查" + item.getCreateBy()); timelineItem.setType("check"); // timelineItem.setDetail(buildCheckDetail(item)); timelineItem.setDetail("深度:" + "17.8mm"); @@ -178,18 +175,19 @@ public class BaseTyreController extends BaseController return prefix + "/tyreDetil"; } - /** + + /** * 查询轮胎基础信息列表 */ @RequiresPermissions("tyre:tyre:list") @PostMapping("/list") @ResponseBody - public TableDataInfo list(BaseTyre baseTyre) - { + public TableDataInfo list(BaseTyre baseTyre) { startPage(); List list = baseTyreService.selectBaseTyreList(baseTyre); return getDataTable(list); } + @PostMapping("/statList") @ResponseBody public TableDataInfo statList(SysDept sysDept) { @@ -199,30 +197,30 @@ public class BaseTyreController extends BaseController @PostMapping("/getCarBingTire") @ResponseBody - public List getCarBingTire(BaseTyre baseTyre) - { - return baseTyreService.getCarBingTireList(baseTyre); + public List getCarBingTire(BaseTyre baseTyre) { + return baseTyreService.getCarBingTireList(baseTyre); } + @RequiresPermissions("tyre:tyre:view") @GetMapping("/importTemplate") @ResponseBody - public AjaxResult importTemplate() - { + public AjaxResult importTemplate() { ExcelUtil util = new ExcelUtil(BaseTyreVo.class); return util.importTemplateExcel("轮胎数据导入模板"); } + @Log(title = "轮胎管理", businessType = BusinessType.IMPORT) @RequiresPermissions("tyre:tyre:import") @PostMapping("/importData") @ResponseBody - public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception - { + public AjaxResult importData(MultipartFile file, boolean updateSupport) throws Exception { ExcelUtil util = new ExcelUtil(BaseTyreVo.class); List baseTyreVoList = util.importExcel(file.getInputStream()); String operName = ShiroUtils.getSysUser().getLoginName(); String message = baseTyreService.importBaseTyre(baseTyreVoList, updateSupport, operName); return AjaxResult.success(message); } + /** * 导出轮胎基础信息列表 */ @@ -230,8 +228,7 @@ public class BaseTyreController extends BaseController @Log(title = "轮胎基础信息", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(BaseTyre baseTyre) - { + public AjaxResult export(BaseTyre baseTyre) { List list = baseTyreService.selectBaseTyreList(baseTyre); ExcelUtil util = new ExcelUtil(BaseTyre.class); return util.exportExcel(list, "tyre"); @@ -241,8 +238,7 @@ public class BaseTyreController extends BaseController * 新增轮胎基础信息 */ @GetMapping("/add") - public String add() - { + public String add() { return prefix + "/add"; } @@ -253,10 +249,8 @@ public class BaseTyreController extends BaseController // @Log(title = "轮胎基础信息", businessType = BusinessType.INSERT) @PostMapping("/add") @ResponseBody - public AjaxResult addSave(BaseTyre baseTyre) - { - if (UserConstants.USER_NAME_NOT_UNIQUE.equals(baseTyreService.checkTyreNoUnique(baseTyre.getTyreNo()))) - { + public AjaxResult addSave(BaseTyre baseTyre) { + if (UserConstants.USER_NAME_NOT_UNIQUE.equals(baseTyreService.checkTyreNoUnique(baseTyre.getTyreNo()))) { return error("新增轮胎'" + baseTyre.getTyreNo() + "'失败,该轮胎已存在"); } return toAjax(baseTyreService.insertBaseTyre(baseTyre)); @@ -266,8 +260,7 @@ public class BaseTyreController extends BaseController * 修改轮胎基础信息 */ @GetMapping("/edit/{tyreId}") - public String edit(@PathVariable("tyreId") Long tyreId, ModelMap mmap) - { + public String edit(@PathVariable("tyreId") Long tyreId, ModelMap mmap) { BaseTyre baseTyre = baseTyreService.selectBaseTyreById(tyreId); mmap.put("baseTyre", baseTyre); return prefix + "/edit"; @@ -280,8 +273,7 @@ public class BaseTyreController extends BaseController @Log(title = "轮胎基础信息", businessType = BusinessType.UPDATE) @PostMapping("/edit") @ResponseBody - public AjaxResult editSave(BaseTyre baseTyre) - { + public AjaxResult editSave(BaseTyre baseTyre) { return toAjax(baseTyreService.updateBaseTyre(baseTyre)); } @@ -290,83 +282,44 @@ public class BaseTyreController extends BaseController */ @RequiresPermissions("tyre:tyre:remove") @Log(title = "轮胎基础信息", businessType = BusinessType.DELETE) - @PostMapping( "/remove") + @PostMapping("/remove") @ResponseBody - public AjaxResult remove(String ids) - { + public AjaxResult remove(String ids) { return toAjax(baseTyreService.deleteBaseTyreByIds(ids)); } @PostMapping("/pdaQueryTyreInfo") @ResponseBody - public BaseTyre pdaQueryTyreInfo(BaseTyre baseTyre) - { + public BaseTyre pdaQueryTyreInfo(BaseTyre baseTyre) { BaseTyre info = baseTyreService.selectBaseTyreByEpc(baseTyre); return info; } @PostMapping("/setRfidBarcode") @ResponseBody - public AjaxResult setRfidBarcode(@Validated BaseTyre baseTyre) - { + public AjaxResult setRfidBarcode(@Validated BaseTyre baseTyre) { //BaseTyre info = baseTyreService.selectBaseTyreByEpc(baseTyre); return toAjax(baseTyreService.insertBaseTyreBd(baseTyre)); } - - - - - public static class TimelineItem { - private Long id; - private String title; - private String type; // 类型:warehousing, install, check - private String detail; - private Date time; - private String icon; // Font Awesome 图标名 - private String color; // 颜色:primary, success, warning, danger - - // Getters and Setters - public Long getId() { return id; } - public void setId(Long id) { this.id = id; } - public String getTitle() { return title; } - public void setTitle(String title) { this.title = title; } - public String getType() { return type; } - public void setType(String type) { this.type = type; } - public String getDetail() { return detail; } - public void setDetail(String detail) { this.detail = detail; } - public Date getTime() { return time; } - public void setTime(Date time) { this.time = time; } - public String getIcon() { return icon; } - public void setIcon(String icon) { this.icon = icon; } - public String getColor() { return color; } - public void setColor(String color) { this.color = color; } - } - - private String buildCheckDetail(RecordCheck item) - { + private String buildCheckDetail(RecordCheck item) { List detailParts = new ArrayList<>(); - if (StringUtils.isNotBlank(item.getPatternDepth())) - { + if (StringUtils.isNotBlank(item.getPatternDepth())) { detailParts.add("花纹深度:" + item.getPatternDepth() + "mm"); } - if (StringUtils.isNotBlank(item.getMileage())) - { + if (StringUtils.isNotBlank(item.getMileage())) { detailParts.add("车辆里程:" + item.getMileage()); } - if (StringUtils.isNotBlank(item.getResult())) - { + if (StringUtils.isNotBlank(item.getResult())) { detailParts.add("处理意见:" + item.getResult()); } - if (StringUtils.isNotBlank(item.getMaintenanceType())) - { + if (StringUtils.isNotBlank(item.getMaintenanceType())) { detailParts.add("保养类型:" + item.getMaintenanceType()); } return detailParts.isEmpty() ? "暂无检查明细" : String.join(" | ", detailParts); } - private String defaultValue(String value) - { + private String defaultValue(String value) { return StringUtils.isBlank(value) ? "-" : value; } @@ -378,8 +331,7 @@ public class BaseTyreController extends BaseController @GetMapping("/stat/detail") public String statDetail(@RequestParam("deptName") String deptName, @RequestParam("stockType") String stockType, - ModelMap mmap) - { + ModelMap mmap) { mmap.put("deptName", deptName); mmap.put("stockType", stockType); return prefix + "/statDetail"; @@ -392,16 +344,14 @@ public class BaseTyreController extends BaseController @RequiresPermissions("tyre:tyre:stat") @PostMapping("/stat/detail/list") @ResponseBody - public TableDataInfo statDetailList(BaseTyre baseTyre, @RequestParam("stockType") String stockType) - { + public TableDataInfo statDetailList(BaseTyre baseTyre, @RequestParam("stockType") String stockType) { startPage(); List list = tyreStatDetailService.selectStatDetailList(baseTyre, stockType); return getDataTable(list); } @GetMapping("/detail2") - public String tyreDetil2(BaseTyre baseTyre, Model model) - { + public String tyreDetil2(BaseTyre baseTyre, Model model) { if (baseTyre == null || (baseTyre.getTyreId() == null && StringUtils.isBlank(baseTyre.getKeyParam()))) { return "error/404"; } @@ -420,8 +370,7 @@ public class BaseTyreController extends BaseController */ @RequiresPermissions("tyre:tyre:receive") @GetMapping("/receive") - public String receive() - { + public String receive() { return prefix + "/receive"; } @@ -431,8 +380,7 @@ public class BaseTyreController extends BaseController @RequiresPermissions("tyre:tyre:receive") @PostMapping("/receive/preview") @ResponseBody - public AjaxResult receivePreview(@RequestParam("inboundCode") String inboundCode) - { + public AjaxResult receivePreview(@RequestParam("inboundCode") String inboundCode) { InboundBatchPreviewVo data = baseInventoryService.previewBatchByCode(inboundCode); return AjaxResult.success("批次预览成功", data); } @@ -444,11 +392,10 @@ public class BaseTyreController extends BaseController @Log(title = "轮胎收货", businessType = BusinessType.IMPORT) @PostMapping("/receive") @ResponseBody - public AjaxResult receiveSubmit(@RequestParam("inboundCode") String inboundCode) - { + public AjaxResult receiveSubmit(@RequestParam("inboundCode") String inboundCode) { int rows = baseInventoryService.batchInboundByCode(inboundCode, ShiroUtils.getLoginName()); return rows > 0 ? AjaxResult.success("收货完成,成功处理 " + rows + " 条", rows) - : AjaxResult.error("收货失败或无可入库轮胎"); + : AjaxResult.error("收货失败或无可入库轮胎"); } /** @@ -458,23 +405,88 @@ public class BaseTyreController extends BaseController @Log(title = "轮胎收货撤回", businessType = BusinessType.UPDATE) @PostMapping("/receive/rollback") @ResponseBody - public AjaxResult receiveRollback(@RequestParam("inboundCode") String inboundCode) - { + public AjaxResult receiveRollback(@RequestParam("inboundCode") String inboundCode) { int rows = baseInventoryService.rollbackBatchInboundByCode(inboundCode, ShiroUtils.getLoginName()); return rows > 0 ? AjaxResult.success("收货撤回完成,成功处理 " + rows + " 条", rows) - : AjaxResult.error("收货撤回失败或无可撤回轮胎"); + : AjaxResult.error("收货撤回失败或无可撤回轮胎"); } @PostMapping("/pdaQueryTyreTimeLine") @ResponseBody - public AjaxResult pdaQueryTyreTimeLine(BaseTyre baseTyre) - { + public AjaxResult pdaQueryTyreTimeLine(BaseTyre baseTyre) { try { - Map resultMap = baseTyreService.pdaQueryTyreTimeLine(baseTyre); - return success(resultMap); - }catch (Exception e){ + Map resultMap = baseTyreService.pdaQueryTyreTimeLine(baseTyre); + return success(resultMap); + } catch (Exception e) { e.printStackTrace(); return error(); } } + + public static class TimelineItem { + private Long id; + private String title; + private String type; // 类型:warehousing, install, check + private String detail; + private Date time; + private String icon; // Font Awesome 图标名 + private String color; // 颜色:primary, success, warning, danger + + // Getters and Setters + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getDetail() { + return detail; + } + + public void setDetail(String detail) { + this.detail = detail; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseTyre.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseTyre.java index 81cd195e..f4a59c9e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseTyre.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/BaseTyre.java @@ -79,7 +79,15 @@ public class BaseTyre extends BaseEntity @Excel(name = "所在轮位") private String wheelPostion; +private double sumMileage; + public double getSumMileage() { + return sumMileage; + } + + public void setSumMileage(double sumMileage) { + this.sumMileage = sumMileage; + } /** * 库存状态(字典 inventory_status)。 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseTyreMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseTyreMapper.java index 760ebca3..957dbad0 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseTyreMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/BaseTyreMapper.java @@ -94,4 +94,6 @@ public interface BaseTyreMapper BaseTyre selectBaseTyreByKeyParam(BaseTyre baseTyre); int updateBaseTyreByEpc(BaseTyre baseTyre); + + double selectSumMileageByRFID(@Param("tyreEpc") String tyreEpc); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java index 4e01403f..3019681c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/BaseTyreServiceImpl.java @@ -275,6 +275,9 @@ public class BaseTyreServiceImpl implements IBaseTyreService return map; }else { map.put("resultBase",resultBase); + double value = baseTyreMapper.selectSumMileageByRFID(resultBase.getTyreEpc()); + resultBase.setSumMileage(value); + //查询出入库数据 String tyreRfid = resultBase.getTyreEpc(); RecordWarehousing recordWarehousing = new RecordWarehousing(); @@ -286,6 +289,7 @@ public class BaseTyreServiceImpl implements IBaseTyreService recordTyreInstall.setTyreRfid(tyreRfid); List recordTyreInstallList = recordTyreInstallMapper.selectRecordTyreInstallList(recordTyreInstall); map.put("recordTyreInstallList",recordTyreInstallList); + //维修/保养 //查询轮胎详细表 BizOrderTireDetail bizOrderTireDetail = new BizOrderTireDetail(); @@ -299,9 +303,14 @@ public class BaseTyreServiceImpl implements IBaseTyreService .collect(Collectors.toList()); BizMaintenanceOrder bizMaintenanceOrder = bizMaintenanceOrderMapper.selectBizMaintenanceOrderByOrderId(biz.getOrderId()); bizMaintenanceOrder.setBizOrderTireDetailList(filteredList); + System.out.println(bizMaintenanceOrder.getLastMileage()); + if (bizMaintenanceOrder.getLastMileage() ==null || String.valueOf(bizMaintenanceOrder.getLastMileage() ).equals("null")) { + bizMaintenanceOrder.setLastMileage(BigDecimal.valueOf(0)); + } map.put("bizMaintenanceOrder",bizMaintenanceOrder); } } + return map; } } diff --git a/ruoyi-system/src/main/resources/mapper/tyre/BaseTyreMapper.xml b/ruoyi-system/src/main/resources/mapper/tyre/BaseTyreMapper.xml index d04c7e22..f170a134 100644 --- a/ruoyi-system/src/main/resources/mapper/tyre/BaseTyreMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/tyre/BaseTyreMapper.xml @@ -294,4 +294,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where inbound_code = #{inboundCode} + + +