Commit 793a26cf authored by Rensq's avatar Rensq

租赁库导入功能

parent 050dd83c
......@@ -35,9 +35,8 @@ public class AuthInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object obj) {
HttpServletResponse httpResponse = response;
String contentPath = request.getContextPath();
String token = RequestUtil.getToken(request);
log.info("接口:" + request.getRequestURI() + "携带的token为:" + token);
log.info("接口路径:" + request.getRequestURI() + ";token=" + token);
if (StringHelper.isNotBlank(token)) {
try {
JwtInfos jwtInfos = JwtHelper.parseJwtAuth0(token, "Token Issuer");
......
......@@ -94,6 +94,11 @@ public class DepositoryManageBaseController {
}
@ApiOperation(value = "数据导入", notes = "表头数据 大区、经营部、主库(归属单位)、实际存储库点、库点类型、省份、库点地址")
@PostMapping(value = "/dataImport")
public BaseResponse<String> dataImport(@RequestParam("file") MultipartFile file) {
return depositoryManageBaseService.dataImport(file);
}
}
......
......@@ -22,6 +22,9 @@ import java.util.Date;
@Accessors(chain = true)
@ApiModel(value = "HireDepositoryListVo对象", description = "租赁库详情对象")
public class HireDepositoryDetailVo {
/**
* 租赁库id
*/
@ApiModelProperty(value = "ID")
private String id;
......
......@@ -61,4 +61,5 @@ public interface DepositoryManageBaseService extends IService<DepositoryManageBa
*/
BaseResponse<String> historicalDataImport(MultipartFile file) throws IOException;
BaseResponse<String> dataImport(MultipartFile file);
}
......@@ -18,7 +18,10 @@ import com.testor.biz.file.model.dto.FileDTO;
import com.testor.biz.sys.org.model.domain.SysOrg;
import com.testor.common.constant.StatusEnum;
import com.testor.common.core.utils.StringUtils;
import com.testor.common.core.utils.uuid.IdUtils;
import com.testor.common.util.DateUtil;
import com.testor.common.util.ExcelUtils;
import com.testor.module.duty.util.PoiExcelUtils;
import com.testor.module.hire.dao.DepositoryManageBaseMapper;
import com.testor.module.hire.entity.*;
import com.testor.module.hire.entity.vo.*;
......@@ -37,6 +40,8 @@ import io.jsonwebtoken.lang.Collections;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
......@@ -46,6 +51,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
......@@ -345,7 +351,7 @@ public class DepositoryManageBaseServiceImpl extends ServiceImpl<DepositoryManag
sysOrg.setStatus("0");
sysOrg.setIsRent("1");
sysOrg.setTreeLevel(newTreeLevel);
sysOrg.setTreeSort(new BigDecimal("1"));
sysOrg.setTreeSort(new BigDecimal("99"));
sysOrg.setProvince(depositoryInfo.getDepositoryProvinceName());
sysOrg.setCity(depositoryInfo.getDepositoryCityName());
sysOrg.setCounty(depositoryInfo.getDepositoryCountyName());
......@@ -541,6 +547,108 @@ public class DepositoryManageBaseServiceImpl extends ServiceImpl<DepositoryManag
return baseResponse;
}
@Override
@Transactional(rollbackFor = Exception.class)
public BaseResponse<String> dataImport(MultipartFile file) {
BaseResponse<String> baseResponse = new BaseResponse<>();
List<HireDepositoryDetailVo> hireDepositoryDetailVos = new ArrayList<>();
try {
InputStream inputStream = file.getInputStream();
Workbook sheets = PoiExcelUtils.readFile(inputStream, Objects.requireNonNull(file.getOriginalFilename()));
Sheet sheet = sheets.getSheetAt(0);
//获取文件内数据
List<Map<Integer, Object>> dataList = PoiExcelUtils.getBody(sheet, 7, 3);
if (dataList == null || dataList.isEmpty()) {
baseResponse.setCode(BaseStatusEnum.UN_DATA.code());
baseResponse.setMsg("请填写数据");
return baseResponse;
}
StringBuffer errorMsg = new StringBuffer();
int rowIndex = 3;
for (Map<Integer, Object> map : dataList) {
rowIndex++;
//大区名称
String regionName = map.get(0).toString();
//经营部名称
String businessDeptName = map.get(1).toString();
//租赁库
String leaseOfGrainDepotsName = map.get(3).toString();
NewSysOrg businessDeptData = null;
//大区
List<NewSysOrg> regionOrgList = newSysOrgService.getOrgByOrgName(regionName);
boolean shouldBreak = false;
for (NewSysOrg regionOrg : regionOrgList) {
if (shouldBreak) {
break;
}
String regionOrgId = regionOrg.getOrgId();
//经营部
List<NewSysOrg> businessDeptList = newSysOrgService.getOrgByOrgName(businessDeptName);
for (NewSysOrg businessDept : businessDeptList) {
if (businessDept != null && businessDept.getParentId().equals(regionOrgId)) {
businessDeptData = businessDept;
shouldBreak = true;
break;
}
}
}
if (businessDeptData == null) {
errorMsg.append("第"+rowIndex+"行,经营部名称"+businessDeptName+"不存在;\n");
continue;
}
HireDepositoryDetailVo vo = new HireDepositoryDetailVo();
String orgName = "(租赁库)" + leaseOfGrainDepotsName;
NewSysOrg newSysOrg = newSysOrgService.lambdaQuery()
.eq(NewSysOrg::getOrgName, orgName)
.eq(SysOrg::getIsDept, "0")
.eq(NewSysOrg::getStatus, "0")
.last("limit 1")
.one();
if (newSysOrg == null) {
vo.setId(IdUtils.randomUUID());
}else {
errorMsg.append("第"+rowIndex+"行,租赁库:"+leaseOfGrainDepotsName+"已存在;\n");
continue;
}
DepositoryManageBase basInfo = new DepositoryManageBase();
basInfo.setLessorFullName(leaseOfGrainDepotsName);
basInfo.setLessorShortName(leaseOfGrainDepotsName);
basInfo.setLessorOrgId(businessDeptData.getOrgId());
basInfo.setLessorOrgName(businessDeptData.getOrgName());
vo.setBaseInfo(basInfo);
DepositoryInfo depositoryInfo = new DepositoryInfo();
depositoryInfo.setDepositoryProvinceName(map.get(5).toString());
depositoryInfo.setDepositoryAddress(map.get(6).toString());
depositoryInfo.setDepositoryAddress(map.get(6).toString());
vo.setDepositoryInfo(depositoryInfo);
DepositoryAccessInfo accessInfo = new DepositoryAccessInfo();
vo.setAccessInfo(accessInfo);
DepositoryFileInfo depositoryFileInfo = new DepositoryFileInfo();
vo.setFileInfo(depositoryFileInfo);
hireDepositoryDetailVos.add(vo);
}
if (errorMsg.length() > 0) {
baseResponse.setCode(BaseStatusEnum.UNKNOWN.code());
baseResponse.setMsg(errorMsg.toString());
return baseResponse;
}
hireDepositoryDetailVos.forEach(this::saveHireDepositoryInfo);
} catch (IOException e) {
throw new RuntimeException(e);
}
return baseResponse;
}
private HireDepositoryDetailVo convertImportToVo(HistoricalDepositoryImport depositoryImport) {
Date date = DateUtil.convertStrToDate(depositoryImport.getCreateDate(), DatePattern.NORM_DATETIME_PATTERN);
......
......@@ -99,4 +99,6 @@ public interface NewSysOrgService extends IService<NewSysOrg> {
* @return 0、不是北良公司 1、部 2、公司
*/
Integer getOrgTypeByOrgId(String orgId);
List<NewSysOrg> getOrgByOrgName(String orgName);
}
......@@ -239,4 +239,9 @@ public class NewSysOrgServiceImpl extends SuperServiceImpl<NewSysOrgDao, NewSysO
}
return 0;
}
@Override
public List<NewSysOrg> getOrgByOrgName(String orgName) {
return list(new QueryWrapper<NewSysOrg>().eq("org_name", orgName).eq("status", "0"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment