From 2837bdd57f72e386bbf9a725e7b3a13e5eb9e930 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期一, 21 八月 2023 09:19:57 +0800
Subject: [PATCH] 修复bug

---
 server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java |  133 +++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 124 insertions(+), 9 deletions(-)

diff --git a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
index efb5075..b726c65 100644
--- a/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
+++ b/server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java
@@ -1,5 +1,8 @@
 package doumeemes.service.business.impl;
 
+import com.baomidou.mybatisplus.extension.api.R;
+import doumeemes.core.constants.ResponseStatus;
+import doumeemes.core.exception.BusinessException;
 import doumeemes.core.model.ApiResponse;
 import doumeemes.core.model.LoginUserInfo;
 import doumeemes.core.model.PageData;
@@ -7,12 +10,11 @@
 import doumeemes.core.utils.Constants;
 import doumeemes.core.utils.DateUtil;
 import doumeemes.core.utils.Utils;
+import doumeemes.core.utils.excel.EasyExcelUtil;
 import doumeemes.core.utils.redis.RedisUtil;
-import doumeemes.dao.business.DeviceMapper;
-import doumeemes.dao.business.UserDeviceMapper;
-import doumeemes.dao.business.model.CompanyUser;
-import doumeemes.dao.business.model.Device;
-import doumeemes.dao.business.model.UserDevice;
+import doumeemes.dao.business.*;
+import doumeemes.dao.business.model.*;
+import doumeemes.dao.ext.dto.DeviceImportDTO;
 import doumeemes.dao.ext.dto.QueryDeviceExtDTO;
 import doumeemes.dao.ext.vo.DeviceExtListVO;
 import doumeemes.service.business.DeviceService;
@@ -26,10 +28,12 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.web.multipart.MultipartFile;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 鐢熶骇璁惧淇℃伅琛⊿ervice瀹炵幇
@@ -49,6 +53,15 @@
     private DeviceExtService deviceExtService;
     @Autowired
     private UserDeviceMapper userDeviceMapper;
+
+    @Autowired
+    private DepartmentMapper departmentMapper;
+
+    @Autowired
+    private   ProceduresMapper proceduresMapper;
+
+    @Autowired
+    private WarehouseLocationMapper  warehouseLocationMapper;
 
     @Override
     public Integer create(Device device) {
@@ -106,7 +119,7 @@
         QueryWrapper<Device> wrapper = new QueryWrapper<>(device);
         return deviceMapper.selectList(wrapper);
     }
-  
+
     @Override
     public PageData<Device> findPage(PageWrap<Device> pageWrap) {
         IPage<Device> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -240,7 +253,7 @@
             userDeviceMapper.delete(new QueryWrapper<UserDevice>().eq("DEVICE_ID",deviceId));
         }
         if(StringUtils.isNotEmpty(userIds)){
-            String [] ids=userIds.split(",");
+            String [] ids=userIds.replace(" ","").split("[.,;锛宂");
             for (String id : ids) {
                 CompanyUser companyUser = companyUserService.findById(Integer.valueOf(id));
                 UserDevice userDevice = new UserDevice();
@@ -256,6 +269,108 @@
         }
     }
 
+    @Transactional(rollbackFor = {Exception.class, BusinessException.class})
+    @Override
+    public void importPlans(MultipartFile file) {
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(!Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "瀵逛笉璧凤紝鎮ㄦ棤鏉冮檺杩涜璇ユ搷浣滐紒");
+        }
+        //瑙f瀽excel
+        List<DeviceImportDTO> plansList = EasyExcelUtil.importExcel(file, 1, 1, DeviceImportDTO.class);
+        if(plansList == null || plansList.size()==0){
+            throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "瀵煎叆鏁版嵁鍐呭鏈夎锛�");
+        }
+        List<String> departName = new ArrayList<>();
+        List<String> procedureName = new ArrayList<>();
+        plansList.forEach(s->{
+
+            if (StringUtils.isBlank(s.getDeviceName())
+                    || s.getDeviceName().length() > 50
+                    || StringUtils.isBlank(s.getDepartName())
+                    || StringUtils.isBlank(s.getProcedureName())
+                    || StringUtils.isBlank(s.getProduceWarehouseLocationName())
+                    || StringUtils.isBlank(s.getFinishWarehouseLocationName())){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵煎叆鏁版嵁鍐呭鏈夎");
+            }
+            departName.add(s.getDepartName());
+            procedureName.add(s.getProcedureName());
+        });
+
+
+
+        plansList.forEach(s->{
+
+            QueryWrapper<Department> wrapper = new QueryWrapper<>();
+            wrapper.lambda()
+                    .eq(Department::getRootId,user.getRootDepartment().getId())
+                    .eq(Department::getName,departName)
+                    .last("limit 1");
+            Department department = departmentMapper.selectOne(wrapper);
+            if(Objects.isNull(department)){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸ュ巶鍚嶇О涓嶅瓨鍦�");
+            }
+
+            QueryWrapper<Procedures> proceduresQuery = new QueryWrapper<>();
+            proceduresQuery.lambda()
+                    .eq(Procedures::getRootDepartId,user.getRootDepartment().getId())
+                    .eq(Procedures::getDepartId,department.getId())
+                    .eq(Procedures::getName,s.getProcedureName());
+            Procedures procedures = proceduresMapper.selectOne(proceduresQuery);
+            if(Objects.isNull(procedures)){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸ュ簭鍚嶇О宸插瓨鍦�");
+            }
+            QueryDeviceExtDTO queryDeviceExtDTO=new QueryDeviceExtDTO();
+            queryDeviceExtDTO.setDeleted(Constants.ZERO);
+            queryDeviceExtDTO.setCode(s.getDeviceCode());
+            queryDeviceExtDTO.setRootDepartId(user.getRootDepartment().getId());
+            List<DeviceExtListVO> list= deviceExtService.getListByCondition(queryDeviceExtDTO);
+            if(list.size() > 0){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璁惧缂栫爜涓嶅瓨鍦�");
+            }
+
+            QueryWrapper<WarehouseLocation> warehouseLocationQuery = new QueryWrapper<>();
+            warehouseLocationQuery.lambda()
+                                    .eq(WarehouseLocation::getRootDepartId,department.getRootId())
+                                    .eq(WarehouseLocation::getUnionName
+                                            ,Arrays.asList(s.getFinishWarehouseLocationName(),s.getProduceWarehouseLocationName()));
+            if(Objects.equals(list.size(),2)){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"搴撲綅淇℃伅宸插瓨鍦�");
+            }
+            List<WarehouseLocation> warehouseLocations = warehouseLocationMapper.selectList(warehouseLocationQuery);
+
+            Map<String, WarehouseLocation> collect = warehouseLocations.stream().collect(Collectors.toMap(w -> w.getUnionName(), w -> w));
+
+            Device device = new Device();
+            device.setDeleted(Constants.ZERO);
+            device.setCreateUser(user.getId());
+            device.setCreateTime(new Date());
+            device.setUpdateUser(user.getId());
+            device.setUpdateTime(new Date());
+//            device.setRemark();
+            device.setRootDepartId(department.getRootId());
+            device.setDepartId(procedures.getId());
+            device.setProcedureId(procedures.getId());
+
+            device.setCode(StringUtils.isNotBlank(device.getCode()) ? device.getCode() : this.getNextCode(user.getCompany().getId()));
+            device.setType(StringUtils.isNotBlank(device.getCode()) ? device.getCode().trim().equals("璁惧") ? 1 : 0 : 1);
+            device.setName(s.getDeviceName());
+            device.setModel(s.getModel());
+            device.setStatus(Constants.ZERO);
+//            device.setSupplier();
+            device.setStationCode(s.getStationCode());
+//            device.setGroupId();
+//            device.setSerialNum();
+            device.setProduceWarehouseLocationId(collect.get(s.getProduceWarehouseLocationName()).getId());
+            device.setFinishWarehouseLocationId(collect.get(s.getFinishWarehouseLocationName()).getId());
+            deviceMapper.insert(device);
+            if(StringUtils.isNotBlank(s.getUserIds())){
+                this.dealDeviceUserId(Constants.ZERO,device.getUserIds().trim(),device.getId(),user);
+            }
+
+        });
+    }
+
 
     public synchronized String  getNextCode(Integer comId ){
         String prefix =  "S-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-";

--
Gitblit v1.9.3