From bab490d2da009c1a23b352b3b964e0c2dd06a0b3 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期四, 12 六月 2025 17:32:42 +0800 Subject: [PATCH] 移动端功能优化 --- eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java | 200 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 182 insertions(+), 18 deletions(-) diff --git a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java index 8fa2a81..d37a7ba 100644 --- a/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java +++ b/eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/service/impl/EimsRepairResServiceImpl.java @@ -3,8 +3,11 @@ import cn.hutool.core.convert.Convert; import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.SneakyThrows; import org.dromara.common.core.constant.DictConstants; +import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.service.RepairResService; +import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.SpringUtils; import org.dromara.common.core.utils.StringUtils; @@ -14,27 +17,23 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import lombok.RequiredArgsConstructor; -import org.dromara.eims.domain.EimsEqu; -import org.dromara.eims.domain.EimsFixture; -import org.dromara.eims.domain.EimsRepairReq; -import org.dromara.eims.domain.vo.EimsRepairReqVo; -import org.dromara.eims.mapper.EimsRepairReqMapper; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.eims.domain.*; +import org.dromara.eims.domain.bo.EimsSpareInoutBo; +import org.dromara.eims.domain.vo.*; +import org.dromara.eims.mapper.*; +import org.dromara.eims.service.IEimsSpareInoutService; import org.dromara.eims.utils.DataFilterUtil; import org.dromara.system.domain.SysDept; import org.dromara.system.domain.vo.SysDeptVo; import org.dromara.system.mapper.SysDeptMapper; +import org.redisson.misc.LogHelper; import org.springframework.stereotype.Service; import org.dromara.eims.domain.bo.EimsRepairResBo; -import org.dromara.eims.domain.vo.EimsRepairResVo; -import org.dromara.eims.domain.EimsRepairRes; -import org.dromara.eims.mapper.EimsRepairResMapper; import org.dromara.eims.service.IEimsRepairResService; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Collection; +import java.util.*; /** * 缁翠慨宸ュ崟Service涓氬姟灞傚鐞� @@ -49,6 +48,10 @@ private final EimsRepairResMapper baseMapper; private final EimsRepairReqMapper reqMapper; private final SysDeptMapper deptMapper; + private final EimsRepairRecordMapper recordMapper; + private final EimsEquMapper equMapper; + private final EimsFixtureMapper fixtureMapper; + private final IEimsSpareInoutService spareInoutService; /** * 鏌ヨ缁翠慨宸ュ崟 @@ -58,7 +61,49 @@ */ @Override public EimsRepairResVo queryById(Long id) { - return baseMapper.selectVoById(id); + EimsRepairResVo resVo = baseMapper.selectVoById(id); + Long reqId = resVo.getReqId(); + if(reqId!=null){ + EimsRepairReqVo reqVo = reqMapper.selectVoById(reqId); + resVo.setReqType(reqVo.getReqType()); + resVo.setReqCode(reqVo.getCode()); + resVo.setReqDesc(reqVo.getReqDesc()); + + if(reqVo.getEquId()!=null){ + EimsEquVo equVo = equMapper.selectVoById(reqVo.getEquId()); + if(equVo!=null){ + resVo.setAssetNo(equVo.getAssetNo()); + resVo.setEquName(equVo.getEquName()); + } + + } + if(reqVo.getFixtureId()!=null){ + EimsFixtureVo fixtureVo = fixtureMapper.selectVoById(reqVo.getFixtureId()); + if(fixtureVo!=null){ + resVo.setFixtureName(fixtureVo.getFixtureName()); + resVo.setAssetNo(fixtureVo.getAssetNo()); + } + } + + resVo.setSpareParts(querySpareParts(resVo.getResCode())); + + } + return resVo; + } + + + public List<EimsSpareVo> querySpareParts(String code) { + // 鏌ヨ鍏宠仈鐨勫浠讹紝鍏崇郴濡備笅锛氬浠跺嚭鍏ュ簱鍗曠殑associatedOrder 鍏宠仈浼犲叆鐨刢ode,澶囦欢鍑哄叆搴撴槑缁嗛�氳繃鍑哄叆搴撳崟鐨刬d鍏宠仈锛屽浠跺悕绉伴�氳繃鍑哄叆搴撴槑缁嗕腑鐨剆pareId鍏宠仈 + + EimsSpareInoutBo bo = new EimsSpareInoutBo(); + bo.setAssociatedOrder(code); + List<EimsSpareInoutVo> list = spareInoutService.queryList(bo); + if (!list.isEmpty()) { + // 鏌ヨ澶囦欢鏄庣粏鍜屽悕绉� + EimsSpareInoutVo eimsSpareInoutVo = spareInoutService.queryById(list.get(0).getId()); + return eimsSpareInoutVo.getSpareList(); + } + return List.of(); } /** @@ -98,6 +143,8 @@ EimsRepairRes::getStartTime, params.get("beginStartTime"), params.get("endStartTime")); lqw.between(params.get("beginEndTime") != null && params.get("endEndTime") != null, EimsRepairRes::getEndTime, params.get("beginEndTime"), params.get("endEndTime")); + // 鎸夊垱寤烘椂闂村�掑簭 + lqw.orderByDesc(EimsRepairRes::getCreateTime); return lqw; } @@ -109,7 +156,7 @@ */ @Transactional(rollbackFor = Exception.class) @Override - public Boolean insertByBo(EimsRepairResBo bo) { + public synchronized Boolean insertByBo(EimsRepairResBo bo) { EimsRepairRes add = MapstructUtils.convert(bo, EimsRepairRes.class); validEntityBeforeSave(add); boolean flag = baseMapper.insert(add) > 0; @@ -118,11 +165,57 @@ // 鏂板缁翠慨宸ュ崟鐨勬椂鍊欐洿鏂版姤淇崟鏁版嵁 EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); reqVo.setRepairId(add.getId()); - reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU); + reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.YIJIEDAN); EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); reqMapper.updateById(req); + + //灏嗘柊澧炴姤淇崟鏃剁淮淇褰曠殑缁翠慨宸ュ崟id鏇存柊 + LambdaQueryWrapper<EimsRepairRecord> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(EimsRepairRecord::getReqId, add.getReqId()); + EimsRepairRecord one = recordMapper.selectOne(queryWrapper); + if(one!=null){ + one.setResId(add.getId()); + recordMapper.updateById(one); + } + + + //鐢熸垚缁翠慨璁板綍 + EimsRepairRecord record = new EimsRepairRecord(); + record.setReqId(add.getReqId()); + record.setResId(add.getId()); + record.setHandleTime(new Date()); + //鎺ュ崟鐘舵�� + record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.YIJIEDAN); + record.setOperaUser(add.getCreateBy()); + record.setOperaResult("鐢熸垚缁翠慨宸ュ崟"); + //鏂板鏃剁敓鎴愯褰� + recordMapper.insert(record); + + } return flag; + } + + @SneakyThrows + @Transactional(rollbackFor = Exception.class) + @Override + public Boolean insertBatchByBo(EimsRepairResBo bo){ + String batchReqIds = bo.getBatchReqIds(); + boolean result = StringUtils.isNotEmpty(batchReqIds); + for (String reqId : batchReqIds.split(",")) { + EimsRepairReqVo reqVo = reqMapper.selectVoById(reqId); + EimsRepairResBo insert = new EimsRepairResBo(); + insert.setReqId(reqVo.getId()); + insert.setReqUser(reqVo.getReqUser()); + insert.setReqDept(reqVo.getReqDept()); + insert.setResCode(reqVo.getCode().replace("BXD","WXD")); + insert.setResUser(bo.getResUser()); + insert.setResDept(bo.getResDept()); + insert.setStatus(DictConstants.REPAIR_RES_STATUS_DETAIL.YIJIEDAN); + Boolean b = insertByBo(insert); + if(!b)throw new Exception(""); + } + return result; } /** @@ -134,19 +227,75 @@ @Transactional(rollbackFor = Exception.class) @Override public Boolean updateByBo(EimsRepairResBo bo) { + LoginUser loginUser = LoginHelper.getLoginUser(); EimsRepairRes update = MapstructUtils.convert(bo, EimsRepairRes.class); EimsRepairResVo resVo = baseMapper.selectVoById(bo.getId()); String status = resVo.getStatus(); - //棣栨鏇存柊闇�瑕佸悓姝ユ洿鏂版姤淇崟鐘舵�� + //缁翠慨宸ュ崟寮�濮嬬淮淇紝鍚屾鏇存柊鎶ヤ慨鍗� 浠ュ強 缁翠慨璁板綍 + if (bo.getStatus().equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU) && + status.equals(DictConstants.REPAIR_RES_STATUS_DETAIL.YIJIEDAN)) { + //1.璁剧疆寮�濮嬬淮淇椂闂� + + //2.鏇存柊鎶ヤ慨鍗曚负缁翠慨鐘舵�� + EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); + reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WEIXIU); + EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); + reqMapper.updateById(req); + + //3.鐢熸垚缁翠慨璁板綍 + EimsRepairRecord record = new EimsRepairRecord(); + record.setResId(bo.getId()); + record.setReqId(bo.getReqId()); + record.setHandleTime(new Date()); + record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.WEIXIU); + assert loginUser != null; + record.setOperaUser(loginUser.getUserId()); + record.setOperaResult("寮�濮嬬淮淇�"); + recordMapper.insert(record); + } + + + //缁翠慨宸ュ崟瀹屾垚锛屽悓姝ユ洿鏂版姤淇崟 浠ュ強 缁翠慨璁板綍 if (bo.getStatus().equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WANCHENG) && status.equals(DictConstants.REPAIR_RES_STATUS_DETAIL.WEIXIU)) { + //1.璁剧疆缁撴潫缁翠慨鏃堕棿 + + //2.鏇存柊鎶ヤ慨鍗曚负瀹屾垚鐘舵�� EimsRepairReqVo reqVo = reqMapper.selectVoById(bo.getReqId()); reqVo.setStatus(DictConstants.REPAIR_REQ_STATUS_DETAIL.WANCHENG); EimsRepairReq req = MapstructUtils.convert(reqVo, EimsRepairReq.class); reqMapper.updateById(req); + + //3.鐢熸垚缁翠慨璁板綍 + EimsRepairRecord record = new EimsRepairRecord(); + record.setResId(bo.getId()); + record.setReqId(bo.getReqId()); + record.setHandleTime(new Date()); + record.setOpera(DictConstants.REPAIR_RECORD_HANDLE_DETAIL.WANCHENG); + assert loginUser != null; + record.setOperaUser(loginUser.getUserId()); + record.setOperaResult("瀹屾垚缁翠慨宸ュ崟"); + recordMapper.insert(record); } validEntityBeforeSave(update); + // 鍒ゆ柇澶囦欢鍒楄〃鏄惁涓虹┖锛屼笉涓虹┖鍒欐柊澧炰竴涓浠跺嚭搴撳崟锛屽悓鏃跺鍔犲嚭搴撴槑缁� + if (bo.getSpareParts() != null && bo.getSpareParts().size() > 0) { + EimsSpareInoutBo spareInoutBo = new EimsSpareInoutBo(); + // 鏍规嵁鏃ユ湡鐢熸垚鍗曞彿锛屾牸寮忎负CK+鏃ユ湡+娴佹按鍙� + spareInoutBo.setOrderCode("CK"+ DateUtils.dateTimeNow("yyyyMMddHHmmss")); + spareInoutBo.setOrderTime(new Date()); + spareInoutBo.setType(DictConstants.SPARE_INOUT_TYPE_DETAIL.CK); + spareInoutBo.setPartnerName(loginUser.getNickname()); + spareInoutBo.setSpareList(bo.getSpareParts()); + spareInoutBo.setChargeUser(loginUser.getUserId()); + spareInoutBo.setChargeDept(loginUser.getDeptId()); + spareInoutBo.setAssociatedOrder(bo.getResCode()); + // 淇濆瓨杩涙暟鎹簱 + Boolean b = spareInoutService.insertByBo(spareInoutBo); + + + } return baseMapper.updateById(update) > 0; } @@ -174,6 +323,7 @@ @Override public TableDataInfo<EimsRepairResVo> queryPageListCustom(EimsRepairResBo bo, PageQuery pageQuery) { + DataFilterUtil.getInstance().filterRepairRes(bo); Page<EimsRepairResVo> page = baseMapper.selectRepairResList(pageQuery.build(), buildWrapper(bo)); return TableDataInfo.build(page); } @@ -184,11 +334,25 @@ qw.like(StringUtils.isNotBlank(bo.getResCode()), "res.res_code", bo.getResCode()); qw.like(StringUtils.isNotBlank(bo.getReqCode()), "req.code", bo.getReqCode()); qw.eq(bo.getResUser() != null, "res.res_user", bo.getResUser()); + qw.eq(bo.getReqType() != null, "req.req_type", bo.getReqType()); + qw.eq(bo.getReqUser() != null, "res.req_user", bo.getReqUser()); + qw.eq(bo.getAssetNo() != null, "equ.asset_no", bo.getAssetNo()); + qw.eq(bo.getEquId() != null, "req.equ_id", bo.getEquId()); - List<Long> allDescendantIds = getAllDescendantIds(bo.getResDept()); - qw.in(bo.getResDept() != null, "res.res_dept", allDescendantIds); + qw.between(params.get("beginReqTime") != null && params.get("endReqTime") != null, + "req.req_time", params.get("beginReqTime"), params.get("endReqTime")); + + List<Long> resDeptIds = getAllDescendantIds(bo.getResDept()); + qw.in(bo.getResDept() != null, "res.res_dept", resDeptIds); + + List<Long> reqDeptIds = getAllDescendantIds(bo.getReqDept()); + qw.in(bo.getReqDept() != null, "res.req_dept", reqDeptIds); + qw.eq(StringUtils.isNotBlank(bo.getStatus()), "res.status", bo.getStatus()); + String s = params.get("status") == null ? "" : params.get("status").toString(); + String[] status = s.split(","); + qw.in(params.get("status") != null, "res.status", status); qw.orderByDesc("res.create_time"); return qw; } -- Gitblit v1.9.3