From e54a03e1c3fefef7ec84df6168ff5cf26e53f8cb Mon Sep 17 00:00:00 2001 From: Fancy <Fancy.fx@outlook.com> Date: 星期四, 09 一月 2025 15:47:07 +0800 Subject: [PATCH] station and user disable check Stationlogin first --- pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java | 119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 110 insertions(+), 9 deletions(-) diff --git a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java index bcf3c05..202121f 100644 --- a/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java +++ b/pms-parent/pms-web-platform/src/main/java/com/dy/pmsPlatform/station/StationSv.java @@ -1,14 +1,25 @@ package com.dy.pmsPlatform.station; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.alibaba.excel.util.StringUtils; import com.dy.common.webUtil.QueryResultVo; +import com.dy.pmsGlobal.daoPlt.PltProductionLineMapper; import com.dy.pmsGlobal.daoPlt.PltStationMapper; +import com.dy.pmsGlobal.daoSta.StaAssemblyWorkLastMapper; +import com.dy.pmsGlobal.pojoPlt.PltProductionLine; import com.dy.pmsGlobal.pojoPlt.PltStation; +import com.dy.pmsGlobal.pojoSta.StaAssemblyWorkLast; +import com.dy.pmsGlobal.util.QrCodeConstant; +import com.dy.pmsGlobal.util.QrCodeUtil; import lombok.extern.slf4j.Slf4j; import org.apache.dubbo.common.utils.PojoUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DuplicateKeyException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -17,19 +28,61 @@ public class StationSv { private PltStationMapper dao; + private PltProductionLineMapper lineDao; + private StaAssemblyWorkLastMapper assemblyWorkLastDao; +// private static final String stationPrefix = "103" ; + private static final String DEFAULT_CODE = "0001"; + private static final String CODE_FORMAT = "%04d"; @Autowired public void setDao(PltStationMapper dao) { this.dao = dao; } + @Autowired + public void setLineDao(PltProductionLineMapper lineDao) { + this.lineDao = lineDao; + } + @Autowired + public void setAssemblyWorkLastDao(StaAssemblyWorkLastMapper assemblyWorkLastDao) { + this.assemblyWorkLastDao = assemblyWorkLastDao; + } @Transactional - public int save(PltStation station) throws Exception { - if(dao.selectByCodeId(station.id,station.code)>0){ - throw new Exception("宸ョ珯缂栧彿宸插瓨鍦�"); + public int save(PltStation station) throws RuntimeException { + + if(dao.selectByName(station.getName()).size() > 0){ + throw new RuntimeException("宸ョ珯鍚嶇О("+station.getName()+")宸插瓨鍦�,鍚嶇О涓嶅厑璁搁噸澶嶆坊鍔�,璇峰彉鏇�"); } - int count = dao.insertSelective(station); + int count = 0; + int flag=0; + do { + station.code = getNextCode(); + try { + count = dao.insertSelective(station); + return count; + } catch (DuplicateKeyException e) { + // 濡傛灉鍑虹幇鍞竴绾︽潫杩濆弽寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode骞堕噸璇� + log.warn("鎻掑叆宸ョ珯鏃堕亣鍒板敮涓�绾︽潫寮傚父锛屽皾璇曡幏鍙栨柊鐨刢ode", e); + } + flag++; + } while (flag<5); + return count; + } + + private String getNextCode(){ + log.info("鑾峰彇宸ョ珯缂栧彿"); + String maxCode = dao.selectMaxCode(); + if (StringUtils.isBlank(maxCode)) { + return DEFAULT_CODE; + } else { + int nextCode = Integer.parseInt(maxCode) + 1; + // 妫�鏌ユ孩鍑� + if (nextCode > 9999) { + throw new RuntimeException("宸ョ珯缂栧彿婧㈠嚭"); + } + return String.format(CODE_FORMAT, nextCode); + } } /** @@ -39,15 +92,25 @@ */ @Transactional public int delete(Long id) { + checkStationLogin(id); return this.dao.deleteLogicById(id); } - - @Transactional - public int update(PltStation station) throws Exception { - if(dao.selectByCodeId(station.id,station.code)>0){ - throw new Exception("宸ョ珯缂栧彿宸插瓨鍦�"); + public int update(PltStation station) throws RuntimeException { +// if(dao.selectByCodeId(station.id,station.code)>0){ +// throw new RuntimeException("宸ョ珯缂栧彿宸插瓨鍦�"); +// } + boolean flag = false; + List<PltStation> stations = dao.selectByName(station.getName()); + for (int i = 0; i < stations.size(); i++) { + if(!stations.get(i).getId().equals(station.getId())){ + flag = true; + break; + } + } + if(flag){ + throw new RuntimeException("宸ョ珯鍚嶇О("+station.getName()+")宸插瓨鍦�,鍚嶇О涓嶅厑璁搁噸澶嶆坊鍔�,璇峰彉鏇�"); } int count = dao.updateByPrimaryKeySelective(station); return count; @@ -73,14 +136,52 @@ //鏌ヨ绗﹀悎鏉′欢鐨勮褰� rsVo.obj = this.dao.selectSome(params) ; + rsVo.obj.parallelStream().forEach(item->{ + item.qrCode = QrCodeUtil.genQrCodeString(QrCodeConstant.TypeStation+item.id); + }); return rsVo ; } + @Transactional public int disabled(Long id, Boolean disabled) { + if(!disabled){ + PltStation station1 = dao.selectByPrimaryKey(id); + PltProductionLine line = lineDao.selectByPrimaryKey(station1.lineId); + if(line.disabled){ + throw new RuntimeException("璇ュ伐绔欐墍灞炵敓浜х嚎宸茬鐢�,璇峰厛鍚敤璇ョ敓浜х嚎"); + } + } + checkStationLogin(id); PltStation station = new PltStation(); station.setId(id); station.setDisabled(disabled); return dao.updateByPrimaryKeySelective(station); } + + public List<PltStation> selectAll() { + return dao.selectAll(); + } + + public JSONArray selectAllIdAndName() { + List<PltStation> list = dao.selectAll(); + JSONArray child = new JSONArray(); + list.forEach(item->{ + child.add(new JSONObject().set("id", String.valueOf(item.getId())).set("name", item.getName())); + }); + return child; + } + public void checkStationLogin(Long id){ + //濡傛灉鏈夊伐绔欑櫥褰曚俊鎭�,鍒欐彁绀哄厛鍒拌Е灞忕鐧诲綍椤甸潰logout + Map<String, Object> params = new HashMap<>(); + params.put("stationId", id); + List<StaAssemblyWorkLast> workLasts = assemblyWorkLastDao.selectSome(params); + if (workLasts.size() > 0) { + String stationStr = "("; + for (StaAssemblyWorkLast workLast:workLasts) { + stationStr += workLast.getStationName() +","; + } + throw new RuntimeException("璇�"+ stationStr +")宸ョ珯瀛樺湪鐧诲綍淇℃伅,璇峰厛鍒拌Е灞忕鐧诲綍椤甸潰logout,鎴栬仈绯荤鐞嗗憳鍒犻櫎"); + } + } } -- Gitblit v1.8.0