From 6abbc185787ecd35f82780a43b02ddfb91762031 Mon Sep 17 00:00:00 2001 From: jiang Date: Mon, 1 Dec 2025 17:23:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/DevChangeController.java | 72 ++++++++ .../devchange/mapper/DevChangeMapper.java | 22 +++ .../devchange/service/DevChangeService.java | 10 ++ .../service/DevChangeServiceImpl.java | 128 +++++++++++++- .../material/order/domain/OrderInfoDto.java | 2 + .../mapper/material/bookcar/BookCarMapper.xml | 11 +- .../material/devchange/DevChangeMapper.xml | 160 +++++++++++++++++- .../mapper/material/order/OrderInfoMapper.xml | 128 ++++++++++---- 8 files changed, 487 insertions(+), 46 deletions(-) diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/controller/DevChangeController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/controller/DevChangeController.java index 18f8cf4..92c0044 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/controller/DevChangeController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/controller/DevChangeController.java @@ -205,6 +205,25 @@ public class DevChangeController extends BaseController { } } + + /** + * 获取设备详情 + * + * @param dto + * @return + */ + @ApiOperation(value = "获取设备详情") + @GetMapping("/getOrderById") + public AjaxResult getOrderById(CsDeviceDetails dto) { + try { + CsDeviceVo devInfo = service.getOrderById(dto); + return AjaxResult.success(devInfo); + } catch (Exception e) { + logger.error("获取设备详情异常:{}", e.getMessage()); + return AjaxResult.error("查询失败,请联系管理员"); + } + } + /** * 获取申请一级列表 * @@ -250,6 +269,19 @@ public class DevChangeController extends BaseController { } + /** + * 审核出库 + * + * @param entity + * @return + */ + @ApiOperation(value = "审核出库") + @PostMapping("/orderOut") + public AjaxResult orderOut(@RequestBody CsDeviceDetails entity) { + return service.orderOut(entity); + } + + /** * 审核出库 * @@ -263,6 +295,33 @@ public class DevChangeController extends BaseController { } + /** + * 审核出库 + * + * @param entity + * @return + */ + @ApiOperation(value = "审核出库") + @PostMapping("/orderOutAll") + public AjaxResult orderOutAll(@RequestBody CsDeviceDetails entity) { + return service.orderOutAll(entity); + } + + + /** + * 审核出库 + * + * @param entity + * @return + */ + @ApiOperation(value = "审核出库") + @PostMapping("/orderOutCancel") + public AjaxResult orderOutCancel(@RequestBody CsDeviceDetails entity) { + return service.orderOutCancel(entity); + } + + + /** * 审核出库 * @@ -276,6 +335,18 @@ public class DevChangeController extends BaseController { } + /** + * 审核出库 + * + * @param entity + * @return + */ + @ApiOperation(value = "审核出库") + @PostMapping("/orderOutCancelAll") + public AjaxResult orderOutCancelAll(@RequestBody CsDeviceDetails entity) { + return service.orderOutCancelAll(entity); + } + /** * 审核出库 * @@ -288,6 +359,7 @@ public class DevChangeController extends BaseController { return service.outCancelAll(entity); } + @ApiOperation(value = "获取申请一级列表") @GetMapping("/getOutboundList") public TableDataInfo getOutboundList(CsDeviceInfo dto) { diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/mapper/DevChangeMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/mapper/DevChangeMapper.java index bb624d7..33ace23 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/mapper/DevChangeMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/mapper/DevChangeMapper.java @@ -272,4 +272,26 @@ public interface DevChangeMapper { List getDevDetailsInfoEquipment(CsDeviceDetails dto); List getDevChangeRList(CsDeviceChange vo); + + CsDeviceInfo getOrderById(CsDeviceDetails dto); + + List getOrderDetailsById(CsDeviceDetails dto); + + CsDeviceDetails getOrderDetailsMaDevInfo(CsDeviceDetails csDeviceDetails); + + CsDeviceDetails getOrderDetailsTypeToolInfo(CsDeviceDetails csDeviceDetails); + + void updateOrderZb(CsDeviceDetails entity); + + void updateOrderGj(CsDeviceDetails entity); + + Integer orderOut(CsDeviceDetails entity); + + Integer orderOutAll(CsDeviceDetails entity); + + Integer orderOutCancel(CsDeviceDetails entity); + + Integer orderOutCancelAll(CsDeviceDetails entity); + + List getOrderOutAllList(CsDeviceDetails entity); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeService.java index 922818a..7419d28 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeService.java @@ -154,4 +154,14 @@ public interface DevChangeService { AjaxResult outAll(CsDeviceDetails entity); List getDevChangeRList(CsDeviceChange csDeviceChange); + + CsDeviceVo getOrderById(CsDeviceDetails dto); + + AjaxResult orderOut(CsDeviceDetails entity); + + AjaxResult orderOutAll(CsDeviceDetails entity); + + AjaxResult orderOutCancel(CsDeviceDetails entity); + + AjaxResult orderOutCancelAll(CsDeviceDetails entity); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java index 5380165..d32df27 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/devchange/service/DevChangeServiceImpl.java @@ -556,6 +556,126 @@ public class DevChangeServiceImpl implements DevChangeService { return new ArrayList<>(); } + /** + * @param dto + * @return + */ + @Override + public CsDeviceVo getOrderById(CsDeviceDetails dto) { + CsDeviceVo csDeviceVo = new CsDeviceVo(); + // 根据id查询主任务表数据 + CsDeviceInfo devInfo = mapper.getOrderById(dto); + // 根据id查询设备详情表数据 + List devDetailsList = mapper.getOrderDetailsById(dto); + if (CollectionUtils.isNotEmpty(devDetailsList)) { + // 根据devType去查询装备或工具详情 + for (CsDeviceDetails csDeviceDetails : devDetailsList) { + CsDeviceDetails devDetails = new CsDeviceDetails(); + if (StringUtils.isNotBlank(csDeviceDetails.getDevType()) && "0".equals(csDeviceDetails.getDevType())) { + if ("/".equals(csDeviceDetails.getDevCode())) { + csDeviceDetails.setDevCode(null); + } + devDetails = mapper.getOrderDetailsMaDevInfo(csDeviceDetails); + } else if (StringUtils.isNotBlank(csDeviceDetails.getDevType()) && "1".equals(csDeviceDetails.getDevType())) { + if ("/".equals(csDeviceDetails.getDevCode())) { + csDeviceDetails.setDevCode(null); + } + devDetails = mapper.getOrderDetailsTypeToolInfo(csDeviceDetails); + } + if (devDetails != null) { + csDeviceDetails.setDevType(StringUtils.isNotBlank(devDetails.getDevType()) ? devDetails.getDevType() : ""); + csDeviceDetails.setCategory(StringUtils.isNotBlank(devDetails.getCategory()) ? devDetails.getCategory() : ""); + csDeviceDetails.setTypeName(StringUtils.isNotBlank(devDetails.getTypeName()) ? devDetails.getTypeName() : ""); + csDeviceDetails.setTypeModelName(StringUtils.isNotBlank(devDetails.getTypeModelName()) ? devDetails.getTypeModelName() : ""); + csDeviceDetails.setManageType(StringUtils.isNotBlank(devDetails.getManageType()) ? devDetails.getManageType() : ""); + csDeviceDetails.setDevCode(StringUtils.isNotBlank(devDetails.getDevCode()) ? devDetails.getDevCode() : ""); + csDeviceDetails.setStorageNum(devDetails.getStorageNum()); + // 用于编辑显示数据是否选中(前端根据typeId和id结合判断) + csDeviceDetails.setId(devDetails.getId()); + } + } + } + csDeviceVo.setDevInfo(devInfo); + csDeviceVo.setDevDetailsList(devDetailsList); + return csDeviceVo; + } + + /** + * @param entity + * @return + */ + @Override + public AjaxResult orderOut(CsDeviceDetails entity) { + try { + //装备 + if (entity.getDevType().equals("1")) { + mapper.updateOrderZb(entity); + } else { + mapper.updateOrderGj(entity); + } + Integer out = mapper.orderOut(entity); + return out > 0 ? AjaxResult.success("出库成功") : AjaxResult.error("出库失败"); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("出库失败"); + } + } + + /** + * @param entity + * @return + */ + @Override + public AjaxResult orderOutAll(CsDeviceDetails entity) { + try { + List outAllList = mapper.getOrderOutAllList(entity); + Integer out = mapper.orderOutAll(entity); + if (out > 0) { + outAllList.forEach(item -> { + if (item.getDevType().equals("0")) { + mapper.updateOrderZb(item); + } else { + mapper.updateOrderGj(item); + } + }); + } + return out > 0 ? AjaxResult.success("出库成功") : AjaxResult.error("出库失败"); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("出库失败"); + } + } + + /** + * @param entity + * @return + */ + @Override + public AjaxResult orderOutCancel(CsDeviceDetails entity) { + try { + Integer out = mapper.orderOutCancel(entity); + return out > 0 ? AjaxResult.success("出库成功") : AjaxResult.error("出库失败"); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("出库失败"); + } + } + + /** + * @param entity + * @return + */ + @Override + public AjaxResult orderOutCancelAll(CsDeviceDetails entity) { + try { + Integer out = mapper.orderOutCancelAll(entity); + return out > 0 ? AjaxResult.success("出库成功") : AjaxResult.error("出库失败"); + } catch (Exception e) { + log.error(e.getMessage()); + return AjaxResult.error("出库失败"); + } + } + /** * 获取待出库单子 * @@ -842,12 +962,12 @@ public class DevChangeServiceImpl implements DevChangeService { public List getDevDetails(CsDeviceChangeDetailsVo vo) { try { List list = mapper.getDevDetails(vo); - for(DevChangeVo devChangeVo : list){ - if(devChangeVo.getWorkingHours() == null){ + for (DevChangeVo devChangeVo : list) { + if (devChangeVo.getWorkingHours() == null) { devChangeVo.setWorkingHours(0); } - devChangeVo.setRemainingHours(devChangeVo.getMaxWorkingHours()-devChangeVo.getWorkingHours()); + devChangeVo.setRemainingHours(devChangeVo.getMaxWorkingHours() - devChangeVo.getWorkingHours()); } return list; } catch (Exception e) { @@ -857,7 +977,7 @@ public class DevChangeServiceImpl implements DevChangeService { } @Override - public List> getVoltageLevel(JjProjectVo vo) { + public List> getVoltageLevel(JjProjectVo vo) { try { return mapper.getVoltageLevel(vo); } catch (Exception e) { diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java index be0969c..48fb323 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderInfoDto.java @@ -200,4 +200,6 @@ public class OrderInfoDto { @ApiModelProperty(value = "区/县") private String proCounty; + private String taskStatus; + } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/bookcar/BookCarMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/bookcar/BookCarMapper.xml index a9d7af0..62da1e4 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/bookcar/BookCarMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/bookcar/BookCarMapper.xml @@ -33,11 +33,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" d.brand as brand, '0' AS devType, mt.type_name as typeName, - mt.manage_type as manageType, + d.manage_type as manageType, d.production_date as productionDate, d.working_hours as workingHours, - d.person as person, - d.person_phone as personPhone, + sd.leader as person, + sd.phone as personPhone, c.company_name as companyName, c.company_id as companyId, c.operate_address as operateAddress, @@ -46,6 +46,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" bcd.order_user as orderUser, bcd.address as address FROM ma_dev_info d + LEFT JOIN sys_dept sd ON sd.dept_id = d.on_company LEFT JOIN bm_company_info c ON d.on_company = c.company_id LEFT JOIN book_car_detail bcd ON d.ma_id = bcd.ma_id LEFT JOIN ma_type mt ON d.type_id = mt.type_id and mt.del_flag = '0' @@ -65,10 +66,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tt1.type_name as deviceName, tl.available_num as deviceCount, tl.type_id as typeId, - tl.`status` as maStatus, + if(tl.available_num = 0,2,1) as maStatus, ms.supplier_name as brand, - tt.type_name as typeName, '1' AS devType, + tt.type_name as typeName, tl.manage_mode as manageType, tl.production_date as productionDate, '' as workingHours, diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml index cec485c..57cc05c 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/devchange/DevChangeMapper.xml @@ -852,6 +852,122 @@ ORDER BY cds.create_time DESC + + + + + @@ -933,7 +1049,7 @@ where id = #{id} - + UPDATE cs_device_change_details SET is_finished = CASE WHEN (IFNULL(real_num, 0) + #{outNum}) = num THEN '1' @@ -981,6 +1097,48 @@ change_status = '2' WHERE ma_id = #{id} + + UPDATE ma_dev_info + set ma_status = '3', + change_status = '3' + WHERE ma_id = #{id} + + + UPDATE tool_ledger + set available_num = IFNULL(available_num, 0) - #{outNum}, + share_num = IFNULL(share_num, 0) + #{outNum}, + status ='1' + WHERE id = #{id} + + + UPDATE ma_order_details + SET is_finished = CASE + WHEN (IFNULL(real_num, 0) + #{outNum}) = num THEN '1' + WHEN (IFNULL(real_num, 0) + #{outNum}) > 0 AND + (IFNULL(real_num, 0) + #{outNum}) < num THEN '2' + ELSE '0' + END, + real_num = IFNULL(real_num, 0) + #{outNum} + WHERE id = #{detailsId} + -- 可选:防止超量出库(若业务不允许实际数量超过申请数量,添加此条件) + AND (IFNULL(real_num, 0) + #{outNum}) <= num + + + UPDATE ma_order_details + SET is_finished ='1', + real_num = num + WHERE order_id = #{id} + + + UPDATE ma_order_details + SET is_finished ='1' + WHERE id = #{detailsId} + + + UPDATE ma_order_details + SET is_finished ='1' + WHERE order_id = #{id} + update cs_device_change_details set del_flag = '1' where change_id = #{id} diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml index f4efb2a..ced76f4 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/order/OrderInfoMapper.xml @@ -157,7 +157,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" sd.dept_name as sellerName, moi.address, moi.order_id, - dept.dept_name as companyName + dept.dept_name as companyName, + CASE + -- 已完成:所有子表记录 is_finished = 1 + WHEN NOT EXISTS ( + SELECT 1 + FROM ma_order_details cdc1 + WHERE cdc1.order_id = moi.order_id + AND cdc1.is_finished <> '1' -- 不存在非1的记录 + ) THEN '3' + -- 待出库:所有子表记录 is_finished = 0 + WHEN NOT EXISTS ( + SELECT 1 + FROM ma_order_details cdc2 + WHERE cdc2.order_id = moi.order_id + AND cdc2.is_finished <> '0' -- 不存在非0的记录 + ) THEN '1' + -- 其余情况:出库中(包含 is_finished=2 或其他值) + ELSE '2' + END AS taskStatus FROM ma_order_details hh LEFT JOIN ma_order_info moi ON moi.order_id = hh.order_id @@ -209,41 +227,79 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"