|
@@ -15,15 +15,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.rongwei.bscommon.sys.dao.ZhcxPersistentManageDao;
|
|
|
-import com.rongwei.bscommon.sys.service.ZhcxDeptPeopleCountService;
|
|
|
-import com.rongwei.bscommon.sys.service.ZhcxPersistentManageService;
|
|
|
+import com.rongwei.bscommon.sys.service.*;
|
|
|
+import com.rongwei.bscommon.sys.utils.ZhcxCommon;
|
|
|
import com.rongwei.bsentity.domain.*;
|
|
|
import com.rongwei.bsentity.dto.PersistentDeptDto;
|
|
|
import com.rongwei.bsentity.dto.ZhcxPersistentManageDto;
|
|
|
import com.rongwei.bsentity.dto.ZhcxPersistentReportDto;
|
|
|
import com.rongwei.bsentity.vo.*;
|
|
|
+import com.rongwei.commonservice.serial.service.SysSerialNumberService;
|
|
|
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
|
|
|
import com.rongwei.rwadmincommon.system.domain.SysOrganizationDo;
|
|
|
+import com.rongwei.rwadmincommon.system.domain.SysUserDo;
|
|
|
+import com.rongwei.rwadmincommon.system.service.SysDictService;
|
|
|
import com.rongwei.rwadmincommon.system.service.SysOrganizationService;
|
|
|
+import com.rongwei.rwadmincommon.system.service.SysUserService;
|
|
|
+import com.rongwei.rwadmincommon.system.vo.SysOrganizationVo;
|
|
|
+import com.rongwei.rwadmincommon.system.vo.SysUserVo;
|
|
|
import com.rongwei.rwcommon.base.R;
|
|
|
import com.rongwei.rwcommon.base.exception.CustomException;
|
|
|
import com.rongwei.rwcommon.utils.SecurityUtil;
|
|
@@ -35,6 +42,7 @@ import com.rongwei.rwcommoncomponent.excel.utils.WordHelpUtils;
|
|
|
import com.rongwei.rwcommoncomponent.excel.vo.FormData;
|
|
|
import com.rongwei.rwcommoncomponent.file.service.SysFileItemService;
|
|
|
import com.rongwei.rwcommonentity.commonservers.domain.SysFileItemDo;
|
|
|
+import com.rongwei.rwcommonentity.commonservers.vo.SysSerialVo;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -43,17 +51,22 @@ import org.springframework.http.*;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.client.RestTemplate;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
import java.io.InputStream;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
import java.time.DayOfWeek;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.time.temporal.WeekFields;
|
|
|
import java.util.List;
|
|
|
import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
import java.util.stream.Stream;
|
|
|
|
|
@@ -67,6 +80,8 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
@Autowired
|
|
|
private ZhcxPersistentManageDao zhcxPersistentManageDao;
|
|
|
@Autowired
|
|
|
+ private ZhcxPersistentManageService service;
|
|
|
+ @Autowired
|
|
|
private SysFileItemService sysFileItemService;
|
|
|
@Autowired
|
|
|
private SysOrganizationService sysOrganizationService;
|
|
@@ -74,6 +89,24 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
private ZhcxDeptPeopleCountService zhcxDeptPeopleCountService;
|
|
|
@Autowired
|
|
|
private ExcelUtils excelUtils;
|
|
|
+ @Autowired
|
|
|
+ private SysDictService sysDictService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxCommon zhcxCommon;
|
|
|
+ @Autowired
|
|
|
+ private SysUserService userService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxQualityAwardService qualityAwardService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxPersistentBaseInfoService persistentBaseInfoService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxSubcontractorManageService subcontractorManageService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxAreaService zhcxAreaService;
|
|
|
+ @Autowired
|
|
|
+ private ZhcxProjectManageService projectManageService;
|
|
|
+ @Autowired
|
|
|
+ private SysSerialNumberService sysSerialNumberService;
|
|
|
|
|
|
@Value("${wz-provider.syncWzDataUrl}")
|
|
|
private String syncWzDataUrl;
|
|
@@ -90,6 +123,17 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
defaultSortMap.put("重装项目部", 6);
|
|
|
defaultSortMap.put("供应链管理部", 7);
|
|
|
}
|
|
|
+ private static final List<SimpleDateFormat> SIMPLE_DATE_FORMATS_LIST = new ArrayList<SimpleDateFormat>() {{
|
|
|
+ add(new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy年MM月dd日", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy.MM.dd", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy年MM月", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy/MM", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyyMM", Locale.ENGLISH));
|
|
|
+ add(new SimpleDateFormat("yyyy-MM", Locale.ENGLISH));
|
|
|
+ }};
|
|
|
|
|
|
@Override
|
|
|
public void wordExport(Map<String, Object> map, HttpServletResponse response) {
|
|
@@ -626,7 +670,7 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
throw new CustomException("导出报错,请联系管理员");
|
|
|
}
|
|
|
String type = (String) typeObj;
|
|
|
- int maxRow = 31;
|
|
|
+ //int maxRow = 31;
|
|
|
SysFileItemDo fileItemDo = null;
|
|
|
if ("油漆".equals(type)) {
|
|
|
//map.put("fill","油漆保护专项");
|
|
@@ -634,7 +678,7 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
}else if("焊接".equals(type)){
|
|
|
//map.put("fill","焊接通病治理");
|
|
|
fileItemDo = sysFileItemService.getById("c34b09e16d1c48c6a40f92d19f7a2397");
|
|
|
- maxRow = 26;
|
|
|
+ //maxRow = 26;
|
|
|
}
|
|
|
List<Map<String, Object>> result = zhcxPersistentManageDao.listGroupData(map);
|
|
|
Map<String, Map<String, Integer>> pivotData = new LinkedHashMap<>();
|
|
@@ -658,6 +702,7 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
Workbook wb = ExcelHelpUtils.getWorkbook(fileItemDo.getFullpath());
|
|
|
Worksheet sheet = wb.getWorksheets().get(0);
|
|
|
Cells cells = sheet.getCells();
|
|
|
+ int maxRow = cells.getMaxDataRow();
|
|
|
// 读取公司列映射(第 2 行)
|
|
|
Map<String, Integer> companyColMap = new HashMap<>();
|
|
|
int maxCol = 9;
|
|
@@ -672,6 +717,9 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
Map<String, Integer> typeRowMap = new HashMap<>();
|
|
|
for (int row = 2; row <= maxRow; row++) {
|
|
|
String issueType = cells.get(row, 0).getStringValue().trim();
|
|
|
+ if(!issueType.isEmpty() && issueType.contains("小计")){
|
|
|
+ break;
|
|
|
+ }
|
|
|
if (!issueType.isEmpty()) {
|
|
|
typeRowMap.put(issueType, row);
|
|
|
}
|
|
@@ -704,6 +752,330 @@ public class ZhcxPersistentManageServiceImpl extends ServiceImpl<ZhcxPersistentM
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public StringBuilder excelImport(Workbook book, HttpServletRequest request) {
|
|
|
+ StringBuilder errmsg = new StringBuilder();
|
|
|
+ try {
|
|
|
+ Map<String, ZhcxProjectManageDo> prjMap = new HashMap<>(4);
|
|
|
+ Worksheet worksheet = book.getWorksheets().get(0);
|
|
|
+ Cells cells = worksheet.getCells();
|
|
|
+ List<String> dictTypeList = Arrays.asList("persistent_fill", "persistent_type", "persistent_rectify_clu","persistent_process");
|
|
|
+ Map<String, List<SysDictDo>> dictTypeAndListMap = sysDictService.getDictsByTypes(dictTypeList);
|
|
|
+ List<SysDictDo> fillList = dictTypeAndListMap.get("persistent_fill");
|
|
|
+ List<SysDictDo> typeList = dictTypeAndListMap.get("persistent_type");
|
|
|
+ List<SysDictDo> rectifyCluList = dictTypeAndListMap.get("persistent_rectify_clu");
|
|
|
+ List<SysDictDo> processList = dictTypeAndListMap.get("persistent_process");
|
|
|
+ SysUserVo currentUser = zhcxCommon.getCurrentUser();
|
|
|
+ List<SysOrganizationVo> organizationDoList = currentUser.getOrganizationDoList();
|
|
|
+ LambdaQueryWrapper<SysUserDo> userWrapper = Wrappers.<SysUserDo>lambdaQuery()
|
|
|
+ .eq(SysUserDo::getTenantid, currentUser.getTenantid())
|
|
|
+ .eq(SysUserDo::getDeleted, "0");
|
|
|
+ List<SysUserDo> userList = userService.list(userWrapper);
|
|
|
+ Map<String, SysUserDo> userMap = userList.stream()
|
|
|
+ .filter(vo -> vo.getName() != null)
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ SysUserDo::getName,
|
|
|
+ Function.identity(),
|
|
|
+ (v1, v2) -> v1
|
|
|
+ ));
|
|
|
+ LambdaQueryWrapper<ZhcxQualityAwardBaseInfoDo> awardBaseWrapper = Wrappers.<ZhcxQualityAwardBaseInfoDo>lambdaQuery()
|
|
|
+ .eq(ZhcxQualityAwardBaseInfoDo::getStatus, "有效")
|
|
|
+ .eq(ZhcxQualityAwardBaseInfoDo::getTenantid, currentUser.getTenantid())
|
|
|
+ .eq(ZhcxQualityAwardBaseInfoDo::getDeleted, "0");
|
|
|
+ List<ZhcxQualityAwardBaseInfoDo> awardList = qualityAwardService.list(awardBaseWrapper);
|
|
|
+ List<String> awardIdList = awardList.stream()
|
|
|
+ .map(ZhcxQualityAwardBaseInfoDo::getId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ LambdaQueryWrapper<ZhcxPersistentBaseInfoDo> awardDetailWrapper = Wrappers.<ZhcxPersistentBaseInfoDo>lambdaQuery()
|
|
|
+ .in(ZhcxPersistentBaseInfoDo::getPid, awardIdList)
|
|
|
+ .eq(ZhcxPersistentBaseInfoDo::getStatus, "有效")
|
|
|
+ .eq(ZhcxPersistentBaseInfoDo::getDeleted, "0");
|
|
|
+ List<ZhcxPersistentBaseInfoDo> awardDetailList = persistentBaseInfoService.list(awardDetailWrapper);
|
|
|
+ LambdaQueryWrapper<ZhcxAreaDo> areaWrapper = Wrappers.<ZhcxAreaDo>lambdaQuery()
|
|
|
+ .eq(ZhcxAreaDo::getTenantid, currentUser.getTenantid())
|
|
|
+ .eq(ZhcxAreaDo::getDeleted, "0");
|
|
|
+ int weekNumber = this.getWeekNumber(LocalDate.now());
|
|
|
+ List<ZhcxAreaDo> areaList = zhcxAreaService.list(areaWrapper);
|
|
|
+ List<ZhcxPersistentManageDo> list = new ArrayList<>();
|
|
|
+ ZhcxPersistentManageDo zhcxPersistentManageDo;
|
|
|
+ for (int i = 0; i <= cells.getMaxDataRow(); i++) {
|
|
|
+ if (i < 1) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String fillStr = cells.get(i, 0).getStringValue();
|
|
|
+ String issueStr = cells.get(i, 1).getStringValue();
|
|
|
+ String processStr = cells.get(i, 2).getStringValue();
|
|
|
+ String checkerStr = cells.get(i, 3).getStringValue();
|
|
|
+ String typeStr = cells.get(i, 4).getStringValue();
|
|
|
+ String contentStr = cells.get(i, 5).getStringValue();
|
|
|
+ String awardStr = cells.get(i, 6).getStringValue();
|
|
|
+ String numStr = cells.get(i, 7).getStringValue();
|
|
|
+ String firstOrgName = cells.get(i, 8).getStringValue();
|
|
|
+ String secondOrgName = cells.get(i, 9).getStringValue();
|
|
|
+ String subcontractStr = cells.get(i, 10).getStringValue();
|
|
|
+ String checkDateStr = cells.get(i, 11).getStringValue();
|
|
|
+ String checkAddressStr = cells.get(i, 12).getStringValue();
|
|
|
+ String rectifyStatusStr = cells.get(i, 13).getStringValue();
|
|
|
+ String remarkStr = cells.get(i, 14).getStringValue();
|
|
|
+ String amountStr = cells.get(i, 15).getStringValue();
|
|
|
+ String projectCodeStr = cells.get(i, 16).getStringValue();
|
|
|
+ if(StringUtils.isBlank(fillStr) || StringUtils.isBlank(typeStr)
|
|
|
+ || StringUtils.isBlank(contentStr) || StringUtils.isBlank(awardStr)
|
|
|
+ || StringUtils.isBlank(numStr) || StringUtils.isBlank(firstOrgName)
|
|
|
+ || StringUtils.isBlank(secondOrgName) || StringUtils.isBlank(checkDateStr)
|
|
|
+ || StringUtils.isBlank(checkAddressStr) || StringUtils.isBlank(rectifyStatusStr)
|
|
|
+ || StringUtils.isBlank(amountStr) || StringUtils.isBlank(projectCodeStr)
|
|
|
+ || StringUtils.isBlank(checkerStr)){
|
|
|
+ errmsg.append("第").append(i+1).append("行有必填项未填写;<br>");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ zhcxPersistentManageDo = new ZhcxPersistentManageDo();
|
|
|
+ zhcxPersistentManageDo.setId(SecurityUtil.getUUID());
|
|
|
+ zhcxPersistentManageDo.setContent(contentStr);
|
|
|
+ zhcxPersistentManageDo.setPeriod("第"+weekNumber+"期");
|
|
|
+ SysOrganizationVo sysOrganizationVo = organizationDoList.stream().filter(item -> "10".equals(item.getOrgtype())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (sysOrganizationVo != null) {
|
|
|
+ zhcxPersistentManageDo.setBelongorgid(contentStr);
|
|
|
+ zhcxPersistentManageDo.setBelongorgname(contentStr);
|
|
|
+ }else{
|
|
|
+ errmsg.append("当前登录人没有检查部门");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ //SysDictDo parent = parentNameMap.get(fillStr);
|
|
|
+ SysDictDo fillDict = fillList.stream()
|
|
|
+ .filter(item -> fillStr.equals(item.getName())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (fillDict == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行报告类型在系统中不存在;<br>");
|
|
|
+ continue;
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setFill(fillStr);
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(issueStr)){
|
|
|
+ if ("构件油漆保护".equals(fillStr) || "焊接通病治理".equals(fillStr)) {
|
|
|
+ errmsg.append("第").append(i+1).append("行问题类型必填;<br>");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(issueStr) && fillDict != null){
|
|
|
+ //SysDictDo child = pidNameMap.get(parent.getId() + "#" + issueStr);
|
|
|
+ SysDictDo issueDict = fillList.stream()
|
|
|
+ .filter(item -> issueStr.equals(item.getName()) && fillDict.getId().equals(item.getPid())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (issueDict == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行问题类型不属于该报告类型;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setIssuetype(issueStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isBlank(processStr)){
|
|
|
+ if ("焊接通病治理".equals(fillStr)) {
|
|
|
+ errmsg.append("第").append(i+1).append("行问题发生工序必填;<br>");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(processStr) ){
|
|
|
+ SysDictDo processDict = processList.stream()
|
|
|
+ .filter(item -> processStr.equals(item.getName())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (processDict == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行问题发生工序不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setProcess(processStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(checkerStr)){
|
|
|
+ SysUserDo sysUserDo = userMap.get(checkerStr);
|
|
|
+ if (sysUserDo == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行检查人不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setCheckuserid(sysUserDo.getId());
|
|
|
+ zhcxPersistentManageDo.setCheckusername(sysUserDo.getName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ boolean result = typeList.stream().anyMatch(item -> typeStr.equals(item.getName()));
|
|
|
+ if(!result){
|
|
|
+ errmsg.append("第").append(i+1).append("行类型不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setType(typeStr);
|
|
|
+ }
|
|
|
+ ZhcxQualityAwardBaseInfoDo zhcxQualityAwardBaseInfoDo = awardList.stream()
|
|
|
+ .filter(item -> awardStr.equals(item.getAwardname())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if(zhcxQualityAwardBaseInfoDo == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行奖惩依据不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setQualityawardid(zhcxQualityAwardBaseInfoDo.getId());
|
|
|
+ zhcxPersistentManageDo.setQualityawardname(zhcxQualityAwardBaseInfoDo.getAwardname());
|
|
|
+ ZhcxPersistentBaseInfoDo zhcxPersistentBaseInfoDo = awardDetailList.stream()
|
|
|
+ .filter(item -> numStr.equals(item.getNumber()) && item.getPid().equals(zhcxQualityAwardBaseInfoDo.getId())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if(zhcxPersistentBaseInfoDo == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行依据编号不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setBaseinfoid(zhcxPersistentBaseInfoDo.getId());
|
|
|
+ zhcxPersistentManageDo.setBaseinfonum(zhcxPersistentBaseInfoDo.getNumber());
|
|
|
+ zhcxPersistentManageDo.setReferamount(zhcxPersistentBaseInfoDo.getAmount());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ LambdaQueryWrapper<SysOrganizationDo> firstOrgWrapper = Wrappers.<SysOrganizationDo>lambdaQuery()
|
|
|
+ .and(wrapper -> wrapper
|
|
|
+ .eq(SysOrganizationDo::getShortname, firstOrgName)
|
|
|
+ .or()
|
|
|
+ .eq(SysOrganizationDo::getFullname, firstOrgName)
|
|
|
+ )
|
|
|
+ .like(SysOrganizationDo::getFullpid,currentUser.getTenantid())
|
|
|
+ .eq(SysOrganizationDo::getDeleted, "0");
|
|
|
+ SysOrganizationDo one = sysOrganizationService.getOne(firstOrgWrapper);
|
|
|
+ if(one == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行一级部门不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setFirstorgid(one.getId());
|
|
|
+ zhcxPersistentManageDo.setFirstorgname(one.getFullname());
|
|
|
+ }
|
|
|
+ if (one != null) {
|
|
|
+ LambdaQueryWrapper<SysOrganizationDo> secondOrgWrapper = Wrappers.<SysOrganizationDo>lambdaQuery()
|
|
|
+ .and(wrapper -> wrapper
|
|
|
+ .eq(SysOrganizationDo::getShortname, secondOrgName)
|
|
|
+ .or()
|
|
|
+ .eq(SysOrganizationDo::getFullname, secondOrgName)
|
|
|
+ )
|
|
|
+ .eq(SysOrganizationDo::getPid, one.getId())
|
|
|
+ .eq(SysOrganizationDo::getDeleted, "0");
|
|
|
+ SysOrganizationDo two = sysOrganizationService.getOne(secondOrgWrapper);
|
|
|
+ if(two == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行二级部门不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setSecondorgid(two.getId());
|
|
|
+ zhcxPersistentManageDo.setSecondorgname(two.getFullname());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (StringUtils.isNotBlank(subcontractStr)) {
|
|
|
+ LambdaQueryWrapper<ZhcxSubcontractorManageDo> subcontractWrapper = Wrappers.<ZhcxSubcontractorManageDo>lambdaQuery()
|
|
|
+ .eq(ZhcxSubcontractorManageDo::getCompanyAbbreviation, subcontractStr)
|
|
|
+ .eq(ZhcxSubcontractorManageDo::getTenantid, currentUser.getTenantid())
|
|
|
+ .eq(ZhcxSubcontractorManageDo::getDeleted, "0");
|
|
|
+ ZhcxSubcontractorManageDo subcontractorManageDo = subcontractorManageService.getOne(subcontractWrapper);
|
|
|
+ if(subcontractorManageDo == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行分包商简称不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setSubcontractcode(subcontractorManageDo.getTotalFileNo());
|
|
|
+ zhcxPersistentManageDo.setSubcontractename(subcontractorManageDo.getCompanyAbbreviation());
|
|
|
+ zhcxPersistentManageDo.setSubcontractname(subcontractorManageDo.getCompanyName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(checkAddressStr)){
|
|
|
+ ZhcxAreaDo zhcxAreaDo = areaList.stream().
|
|
|
+ filter(item -> checkAddressStr.equals(item.getChecklocation())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (zhcxAreaDo == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行检查区域不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setCheckaddress(checkAddressStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(rectifyStatusStr)){
|
|
|
+ SysDictDo rectifyCluResult = rectifyCluList.stream().filter(item -> rectifyStatusStr.equals(item.getName())).findFirst()
|
|
|
+ .orElse(null);
|
|
|
+ if (rectifyCluResult == null) {
|
|
|
+ errmsg.append("第").append(i+1).append("行整改情况不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setRectifystatus(rectifyStatusStr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(StringUtils.isNotBlank(projectCodeStr)){
|
|
|
+ LambdaQueryWrapper<ZhcxProjectManageDo> projectWrapper = Wrappers.<ZhcxProjectManageDo>lambdaQuery()
|
|
|
+ .eq(ZhcxProjectManageDo::getProjectCode, projectCodeStr)
|
|
|
+ .eq(ZhcxProjectManageDo::getTenantid, currentUser.getTenantid())
|
|
|
+ .eq(ZhcxProjectManageDo::getDeleted, "0");
|
|
|
+ ZhcxProjectManageDo projectManageDo = projectManageService.getOne(projectWrapper);
|
|
|
+ if(projectManageDo == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行项目工号不存在系统;<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setProjectcode(projectCodeStr);
|
|
|
+ zhcxPersistentManageDo.setProjectename(projectManageDo.getProjectEname());
|
|
|
+ zhcxPersistentManageDo.setProjectid(projectManageDo.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (checkDateStr != null && !checkDateStr.isEmpty()) {
|
|
|
+ Date date = parseDate(checkDateStr, null);
|
|
|
+ if(date == null){
|
|
|
+ errmsg.append("第").append(i+1).append("行年月应为“YYYY-MM”格式!<br>");
|
|
|
+ }else{
|
|
|
+ zhcxPersistentManageDo.setCheckdate(date);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(amountStr != null && !amountStr.isEmpty()){
|
|
|
+ BigDecimal amount = new BigDecimal(amountStr.trim());
|
|
|
+ zhcxPersistentManageDo.setAmount(amount);
|
|
|
+ }
|
|
|
+ zhcxPersistentManageDo.setRemark(remarkStr);
|
|
|
+ zhcxPersistentManageDo.setTenantid(currentUser.getTenantid());
|
|
|
+ if (errmsg.length() > 0) {
|
|
|
+ return errmsg;
|
|
|
+ }
|
|
|
+ list.add(zhcxPersistentManageDo);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (list.size() > 0) {
|
|
|
+ SysSerialVo sysSerialVo = new SysSerialVo();
|
|
|
+ sysSerialVo.setIfautomaticreset("y");
|
|
|
+ sysSerialVo.setModulecode("ZHCX_PERSISTENT_MANAGE_CODE");
|
|
|
+ sysSerialVo.setResetrule("date:yyyyMM");
|
|
|
+ sysSerialVo.setRuleTemplateStr("WZ-@{date:yyyyMM}-@{serialNumber:#000}");
|
|
|
+
|
|
|
+ list.forEach(ev->{
|
|
|
+ String code = sysSerialNumberService.getCodeByTemplate(sysSerialVo);
|
|
|
+ ev.setCode(code);
|
|
|
+ });
|
|
|
+ service.saveBatch(list);
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return errmsg;
|
|
|
+ }
|
|
|
+
|
|
|
+ private int getWeekNumber(LocalDate date) {
|
|
|
+ // 把日期转成 UTC 逻辑中的 Date(按日处理即可,不需要时区影响)
|
|
|
+ LocalDate d = date;
|
|
|
+
|
|
|
+ // 获取是周几(0 表示周日)
|
|
|
+ int dayNum = d.getDayOfWeek().getValue() % 7; // Java 周日是 7,所以这里取 % 7,得到 0-6
|
|
|
+
|
|
|
+ // 找到本周的周日
|
|
|
+ d = d.minusDays(dayNum);
|
|
|
+
|
|
|
+ // 当年的第一天
|
|
|
+ LocalDate yearStart = LocalDate.of(d.getYear(), 1, 1);
|
|
|
+
|
|
|
+ // 计算天数差
|
|
|
+ long daysDifference = ChronoUnit.DAYS.between(yearStart, d);
|
|
|
+
|
|
|
+ // 如果跨年,属于下一年的第一周
|
|
|
+ if (d.getYear() < date.getYear()) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 计算周数
|
|
|
+ return (int) Math.ceil((daysDifference + 1) / 7.0);
|
|
|
+ }
|
|
|
+ private Date parseDate(String stringValue, Date date) {
|
|
|
+ for (SimpleDateFormat simpleDateFormat : SIMPLE_DATE_FORMATS_LIST) {
|
|
|
+ try {
|
|
|
+ date = simpleDateFormat.parse(stringValue);
|
|
|
+ break;
|
|
|
+ } catch (ParseException e) {
|
|
|
+ //log.error("格式化时间失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (date == null) {
|
|
|
+ log.error("格式化时间失败:{}"+stringValue);
|
|
|
+ }
|
|
|
+ return date;
|
|
|
+ }
|
|
|
+
|
|
|
private void buildHeader(Cells cells) {
|
|
|
cells.merge(0, 0, 2, 1);
|
|
|
cells.get(0, 0).setValue("月份");
|