From 68848209fb33f4f2bd32ce60fd394531221d2773 Mon Sep 17 00:00:00 2001
From: jiaosong <jiaosong6760@dingtalk.com>
Date: 星期五, 25 八月 2023 18:16:56 +0800
Subject: [PATCH] # 企业端用户
---
server/src/main/java/doumeemes/service/business/impl/DeviceServiceImpl.java | 181 ++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 169 insertions(+), 12 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..849381b 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,9 @@
package doumeemes.service.business.impl;
+import com.baomidou.mybatisplus.extension.api.R;
+import doumeemes.biz.system.SystemDictBiz;
+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,14 +11,15 @@
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.dao.system.SystemDictDataMapper;
+import doumeemes.dao.system.model.SystemDictData;
import doumeemes.service.business.DeviceService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -26,10 +31,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 +56,22 @@
private DeviceExtService deviceExtService;
@Autowired
private UserDeviceMapper userDeviceMapper;
+
+ @Autowired
+ private DepartmentMapper departmentMapper;
+
+ @Autowired
+ private ProceduresMapper proceduresMapper;
+
+ @Autowired
+ private WarehouseLocationMapper warehouseLocationMapper;
+
+ @Autowired
+ private WarehouseMapper warehouseMapper;
+
+
+ @Autowired
+ private SystemDictDataMapper systemDictDataMapper;
@Override
public Integer create(Device device) {
@@ -98,7 +121,7 @@
@Override
public Device findOne(Device device) {
QueryWrapper<Device> wrapper = new QueryWrapper<>(device);
- return deviceMapper.selectOne(wrapper);
+ return deviceMapper.selectOne(wrapper.last("limit 1"));
}
@Override
@@ -106,7 +129,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());
@@ -206,11 +229,11 @@
}
}
- QueryDeviceExtDTO queryDeviceExtDTO=new QueryDeviceExtDTO();
+ Device queryDeviceExtDTO=new Device();
queryDeviceExtDTO.setDeleted(Constants.ZERO);
queryDeviceExtDTO.setCode(device.getCode());
queryDeviceExtDTO.setRootDepartId(user.getRootDepartment().getId());
- List<DeviceExtListVO> list= deviceExtService.getListByCondition(queryDeviceExtDTO);
+ List<Device> list= this.findList(queryDeviceExtDTO);
/* QueryDeviceExtDTO queryDeviceExtDTO1=new QueryDeviceExtDTO();
queryDeviceExtDTO1.setDeleted(Constants.ZERO);
@@ -240,7 +263,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 +279,140 @@
}
}
+ @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,s.getDepartName())
+ .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::getOrgId,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
+ ,s.getProduceWarehouseLocationName()).last("limit 1");
+
+ WarehouseLocation warehouseLocation = warehouseLocationMapper.selectOne(warehouseLocationQuery);
+
+ if (Objects.isNull(warehouseLocation)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"寰呯敓浜ц揣浣嶄笉瀛樺湪");
+ }
+
+ QueryWrapper<SystemDictData> systemDictDataQuery = new QueryWrapper<>();
+ systemDictDataQuery.lambda()
+ .eq(SystemDictData::getDictId,3)
+ .eq(SystemDictData::getCode,"娣峰悎");
+ SystemDictData systemDictData = systemDictDataMapper.selectOne(systemDictDataQuery);
+
+ warehouseLocationQuery.clear();
+ warehouseLocationQuery.lambda()
+ .eq(WarehouseLocation::getRootDepartId,department.getRootId())
+ .eq(WarehouseLocation::getSystemDicDataId,systemDictData.getId())
+ .eq(WarehouseLocation::getUnionName,s.getFinishWarehouseLocationName()).last("limit 1");
+
+ WarehouseLocation finishWarehouseLocations = warehouseLocationMapper.selectOne(warehouseLocationQuery);
+
+ if (Objects.isNull(finishWarehouseLocations)){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"宸插畬宸ヨ揣浣嶄笉鏄贩鍚堝睘鎬т笉瀛樺湪");
+ }
+
+ Map<String, WarehouseLocation> collect =new HashMap<>();
+ collect.put(warehouseLocation.getUnionName(),warehouseLocation);
+ collect.put(finishWarehouseLocations.getUnionName(),finishWarehouseLocations);
+
+ 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(user.getRootDepartment().getId());
+ device.setDepartId(user.getCurComDepartment().getId());
+ device.setProcedureId(procedures.getId());
+
+ device.setCode(StringUtils.isNotBlank(s.getDeviceCode()) ? s.getDeviceCode() : 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.setStationCode(s.getStationCode());
+ device.setProduceWarehouseLocationId(Optional.ofNullable(collect.get(s.getProduceWarehouseLocationName())).map(m->m.getId()).orElseThrow(null));
+ device.setFinishWarehouseLocationId(Optional.ofNullable(collect.get(s.getFinishWarehouseLocationName())).map(m->m.getId()).orElseThrow(null));
+ deviceMapper.insert(device);
+ if(StringUtils.isNotBlank(s.getUserIds())){
+
+ QueryWrapper<CompanyUser> companyUserQuery = new QueryWrapper<>();
+
+ companyUserQuery.lambda()
+ .eq(CompanyUser::getComDepartId,user.getComDepartment().getId())
+ .in(CompanyUser::getPhone,Arrays.asList(s.getUserIds().split("[.,;锛宂")));
+ List<CompanyUser> list1 = companyUserService.findList(companyUserQuery);
+ if (!CollectionUtils.isEmpty(list1)){
+ List<String> collect1 = list1.stream().map(c -> c.getId().toString()).collect(Collectors.toList());
+ this.dealDeviceUserId(Constants.ZERO,StringUtils.join(collect1,","),device.getId(),user);
+ }
+
+ }
+
+ });
+ }
+
public synchronized String getNextCode(Integer comId ){
String prefix = "S-" + DateUtil.getDate(new Date(),"yyyyMMdd") +"-";
--
Gitblit v1.9.3