|
@@ -17,6 +17,7 @@ import cn.ezhizao.project.business.company.domain.BizCompany;
|
|
import cn.ezhizao.project.business.company.service.IBizCompanyService;
|
|
import cn.ezhizao.project.business.company.service.IBizCompanyService;
|
|
import cn.ezhizao.project.business.order.domain.*;
|
|
import cn.ezhizao.project.business.order.domain.*;
|
|
import cn.ezhizao.project.business.order.domain.vo.InputVo;
|
|
import cn.ezhizao.project.business.order.domain.vo.InputVo;
|
|
|
|
+import cn.ezhizao.project.business.order.domain.vo.TimeVo;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailProcessService;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailProcessService;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailService;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputDetailService;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputService;
|
|
import cn.ezhizao.project.business.order.service.IBizArchiveInputService;
|
|
@@ -49,10 +50,11 @@ import javax.servlet.http.HttpServletResponse;
|
|
import java.io.BufferedInputStream;
|
|
import java.io.BufferedInputStream;
|
|
import java.io.OutputStream;
|
|
import java.io.OutputStream;
|
|
import java.lang.reflect.Field;
|
|
import java.lang.reflect.Field;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.HashMap;
|
|
|
|
-import java.util.List;
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
+import java.sql.Date;
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
+import java.time.LocalDate;
|
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@@ -115,6 +117,38 @@ public class BizArchiveInputController extends BaseController {
|
|
}
|
|
}
|
|
// List<BizArchiveInput> list = bizArchiveInputService.getList(bizArchiveInput);
|
|
// List<BizArchiveInput> list = bizArchiveInputService.getList(bizArchiveInput);
|
|
List<BizArchiveInput> list = bizArchiveInputService.getListByInput(bizArchiveInput);
|
|
List<BizArchiveInput> list = bizArchiveInputService.getListByInput(bizArchiveInput);
|
|
|
|
+ for (BizArchiveInput item : list) {
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ return getDataTable(list);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @PreAuthorize("@ss.hasPermi('business:archive:order:list')")
|
|
|
|
+ @GetMapping("/list2")
|
|
|
|
+ public TableDataInfo list2(InputVo bizArchiveInput) throws NoSuchFieldException, IllegalAccessException {
|
|
|
|
+ setTenantId(bizArchiveInput);
|
|
|
|
+ //分页
|
|
|
|
+ startPage();
|
|
|
|
+ //排序
|
|
|
|
+ startOrderBy();
|
|
|
|
+ //根据客户名称模糊查询去除两边空格
|
|
|
|
+ if (bizArchiveInput.getCompanyName() != null) {
|
|
|
|
+ if (!bizArchiveInput.getCompanyName().equals(""))
|
|
|
|
+ bizArchiveInput.setCompanyName(bizArchiveInput.getCompanyName().trim());
|
|
|
|
+ }
|
|
|
|
+// List<BizArchiveInput> list = bizArchiveInputService.getList(bizArchiveInput);
|
|
|
|
+ List<BizArchiveInput> list = bizArchiveInputService.getListByInput(bizArchiveInput);
|
|
|
|
+ for (BizArchiveInput item : list) {
|
|
|
|
+ Integer serviceType = item.getServiceType();
|
|
|
|
+ if (serviceType.equals(1)) {
|
|
|
|
+ List<BizArchiveInputDetail> details = archiveInputDetailService.list(new LambdaQueryWrapper<>(BizArchiveInputDetail.class).eq(BizArchiveInputDetail::getContractId, item.getId()));
|
|
|
|
+ for (BizArchiveInputDetail detail : details) {
|
|
|
|
+ detail.setTaskTypeName(taskTypeService.getById(detail.getTaskTypeId()).getName());
|
|
|
|
+ }
|
|
|
|
+ item.setRemark(details.stream().map(BizArchiveInputDetail::getTaskTypeName).collect(Collectors.joining(",")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
return getDataTable(list);
|
|
return getDataTable(list);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -278,12 +312,18 @@ public class BizArchiveInputController extends BaseController {
|
|
if (one != null) {
|
|
if (one != null) {
|
|
List<BizWorkOrderRecord> list = workOrderRecordService.list(new LambdaQueryWrapper<BizWorkOrderRecord>()
|
|
List<BizWorkOrderRecord> list = workOrderRecordService.list(new LambdaQueryWrapper<BizWorkOrderRecord>()
|
|
.eq(BizWorkOrderRecord::getWorkOrderId, one.getWorkOrderId()));
|
|
.eq(BizWorkOrderRecord::getWorkOrderId, one.getWorkOrderId()));
|
|
- if (CollectionUtils.isNotEmpty(list)){
|
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list)) {
|
|
detail.setDisabled(true);
|
|
detail.setDisabled(true);
|
|
- }else {
|
|
|
|
|
|
+ } else {
|
|
detail.setDisabled(false);
|
|
detail.setDisabled(false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if (bizArchiveInput.getServiceType() == 1) {
|
|
|
|
+ TimeVo time = getTime(detail.getContractId(), detail.getId(), detail.getTaskTypeId(), detail.getCompanyId());
|
|
|
|
+ if (time != null) {
|
|
|
|
+ detail.setTimeVo(time);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
List<BizArchiveInputDetailProcess> processes = archiveInputDetailProcessService.getList(conditionProcess);
|
|
List<BizArchiveInputDetailProcess> processes = archiveInputDetailProcessService.getList(conditionProcess);
|
|
@@ -311,6 +351,7 @@ public class BizArchiveInputController extends BaseController {
|
|
}
|
|
}
|
|
|
|
|
|
private boolean checkAlter(BizArchiveInput newBizArchiveInput, BizArchiveInput oldArchiveInput) {
|
|
private boolean checkAlter(BizArchiveInput newBizArchiveInput, BizArchiveInput oldArchiveInput) {
|
|
|
|
+ boolean result = true;
|
|
// 假设是单次任务判断删掉的任务是否已开始
|
|
// 假设是单次任务判断删掉的任务是否已开始
|
|
if (!newBizArchiveInput.getServiceType().equals(oldArchiveInput.getServiceType())) {
|
|
if (!newBizArchiveInput.getServiceType().equals(oldArchiveInput.getServiceType())) {
|
|
throw new ServiceException("变更任务和原任务类型不相符");
|
|
throw new ServiceException("变更任务和原任务类型不相符");
|
|
@@ -328,7 +369,7 @@ public class BizArchiveInputController extends BaseController {
|
|
BizArchiveInputDetail newItem = newBizArchiveInput.getDetails().stream().filter(v -> l.getId().equals(v.getId())).findFirst().orElse(new BizArchiveInputDetail());
|
|
BizArchiveInputDetail newItem = newBizArchiveInput.getDetails().stream().filter(v -> l.getId().equals(v.getId())).findFirst().orElse(new BizArchiveInputDetail());
|
|
delProcess.addAll(l.getProcesses().stream()
|
|
delProcess.addAll(l.getProcesses().stream()
|
|
.filter(v -> newItem.getProcesses().stream()
|
|
.filter(v -> newItem.getProcesses().stream()
|
|
- .noneMatch(e -> e.getId()!= null && e.getId().equals(v.getId()))).collect(Collectors.toList()));
|
|
|
|
|
|
+ .noneMatch(e -> e.getId() != null && e.getId().equals(v.getId()))).collect(Collectors.toList()));
|
|
if (newBizArchiveInput.getServiceType().equals(1)) {
|
|
if (newBizArchiveInput.getServiceType().equals(1)) {
|
|
boolean a = (newItem.getFreeNum() + newItem.getServiceNum()) != (l.getServiceNum() + l.getFreeNum());
|
|
boolean a = (newItem.getFreeNum() + newItem.getServiceNum()) != (l.getServiceNum() + l.getFreeNum());
|
|
boolean b = (newItem.getPrice().subtract(newItem.getDiscountAmount())).compareTo(l.getPrice().subtract(l.getDiscountAmount())) != 0;
|
|
boolean b = (newItem.getPrice().subtract(newItem.getDiscountAmount())).compareTo(l.getPrice().subtract(l.getDiscountAmount())) != 0;
|
|
@@ -355,12 +396,32 @@ public class BizArchiveInputController extends BaseController {
|
|
BizWorkOrderDetail one = bizWorkOrderDetailService.getOne(new LambdaQueryWrapper<BizWorkOrderDetail>()
|
|
BizWorkOrderDetail one = bizWorkOrderDetailService.getOne(new LambdaQueryWrapper<BizWorkOrderDetail>()
|
|
.eq(BizWorkOrderDetail::getContractDetailId, item.getId())
|
|
.eq(BizWorkOrderDetail::getContractDetailId, item.getId())
|
|
.eq(BizWorkOrderDetail::getIsStop, 0));
|
|
.eq(BizWorkOrderDetail::getIsStop, 0));
|
|
|
|
+
|
|
|
|
+
|
|
//通过明细查询workorderID 进而查询record表
|
|
//通过明细查询workorderID 进而查询record表
|
|
if (one != null) {
|
|
if (one != null) {
|
|
Long workOrderId = one.getWorkOrderId();
|
|
Long workOrderId = one.getWorkOrderId();
|
|
List<BizWorkOrderRecord> list = workOrderRecordService.list(new LambdaQueryWrapper<BizWorkOrderRecord>()
|
|
List<BizWorkOrderRecord> list = workOrderRecordService.list(new LambdaQueryWrapper<BizWorkOrderRecord>()
|
|
.eq(BizWorkOrderRecord::getWorkOrderId, workOrderId));
|
|
.eq(BizWorkOrderRecord::getWorkOrderId, workOrderId));
|
|
- if (CollectionUtils.isNotEmpty(list)) {
|
|
|
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
+ List<LocalDate> datesList = list.stream().map(x -> {
|
|
|
|
+ String formattedMonth = String.format("%02d", Integer.valueOf(x.getMonth()).intValue());
|
|
|
|
+ return LocalDate.parse(x.getYear() + "-" +formattedMonth+"-01", formatter);
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ //续签时当前时间段如果没有工单则可以修改
|
|
|
|
+ TimeVo time = getTime(item.getContractId(), item.getId(), item.getTaskTypeId(), newBizArchiveInput.getCompanyId());
|
|
|
|
+ if (time != null) {
|
|
|
|
+ String startM = format.format(time.getStartTime());
|
|
|
|
+ String endM = format.format(time.getEndTime());
|
|
|
|
+ LocalDate startDate = LocalDate.parse(startM, formatter);
|
|
|
|
+ LocalDate endDate = LocalDate.parse(endM, formatter);
|
|
|
|
+ result = isAnyDateInRange(datesList, startDate, endDate);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (CollectionUtils.isNotEmpty(list) && result) {
|
|
throw new ServiceException("存在已开始的任务,不能修改该合同明细");
|
|
throw new ServiceException("存在已开始的任务,不能修改该合同明细");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -384,6 +445,11 @@ public class BizArchiveInputController extends BaseController {
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ public static boolean isAnyDateInRange(List<LocalDate> dates, LocalDate startDate, LocalDate endDate) {
|
|
|
|
+ return dates.stream()
|
|
|
|
+ .anyMatch(date -> !date.isBefore(startDate) && !date.isAfter(endDate));
|
|
|
|
+ }
|
|
|
|
+
|
|
@Log(title = "合同导入", businessType = BusinessType.IMPORT)
|
|
@Log(title = "合同导入", businessType = BusinessType.IMPORT)
|
|
@PreAuthorize("@ss.hasPermi('business:archive:order:import')")
|
|
@PreAuthorize("@ss.hasPermi('business:archive:order:import')")
|
|
@PostMapping("/importLoop")
|
|
@PostMapping("/importLoop")
|
|
@@ -528,4 +594,66 @@ public class BizArchiveInputController extends BaseController {
|
|
return success();
|
|
return success();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ //获取当前合同工单起始结束区间
|
|
|
|
+ public TimeVo getTime(Long contractId, Long contractDetailId, Long typeId, Long companyId) {
|
|
|
|
+ //排序获取当前索引位置
|
|
|
|
+ BizWorkOrderDetail one = bizWorkOrderDetailService.getOne(
|
|
|
|
+ new LambdaQueryWrapper<BizWorkOrderDetail>()
|
|
|
|
+ .eq(BizWorkOrderDetail::getContractId, contractId)
|
|
|
|
+ .eq(BizWorkOrderDetail::getContractDetailId, contractDetailId)
|
|
|
|
+ .eq(BizWorkOrderDetail::getCompanyId, companyId)
|
|
|
|
+ .eq(BizWorkOrderDetail::getTaskTypeId, typeId).eq(BizWorkOrderDetail::getDeleted, 0));
|
|
|
|
+ if (one == null){
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ Long workOrderId = one.getWorkOrderId();
|
|
|
|
+
|
|
|
|
+ BizWorkOrder workOrder = workOrderService.getById(workOrderId);
|
|
|
|
+ if (workOrder == null) {
|
|
|
|
+ logger.error("获取工单失败");
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ List<BizWorkOrderDetail> list = bizWorkOrderDetailService.list(new LambdaQueryWrapper<BizWorkOrderDetail>()
|
|
|
|
+ .eq(BizWorkOrderDetail::getWorkOrderId, workOrderId)
|
|
|
|
+ .eq(BizWorkOrderDetail::getTaskTypeId, typeId)
|
|
|
|
+ .orderByAsc(BizWorkOrderDetail::getCreateTime));
|
|
|
|
+
|
|
|
|
+ List<Long> indexList = list.stream().map(m -> m.getContractDetailId()).collect(Collectors.toList());
|
|
|
|
+ //确定当前索引元素
|
|
|
|
+ int i = indexList.indexOf(contractDetailId);
|
|
|
|
+ if (i == -1) {
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+ //当前元素所有月份
|
|
|
|
+ BizWorkOrderDetail bizWorkOrderDetail = list.get(i);
|
|
|
|
+ int monthNum = bizWorkOrderDetail.getFreeNum() + bizWorkOrderDetail.getServiceNum();
|
|
|
|
+ //判断是不是第一个
|
|
|
|
+ if (i == 0) {
|
|
|
|
+ DateTime startMonth = DateTime.of(workOrder.getStartMonth());
|
|
|
|
+ Date endMonth = startMonth.offset(DateField.MONTH, monthNum - 1).toSqlDate();
|
|
|
|
+ return new TimeVo(workOrder.getStartMonth(), endMonth);
|
|
|
|
+ } else {
|
|
|
|
+ //中间的工单
|
|
|
|
+ //获取起始时间 并获取 i 之前所有月数 相加为起始时间
|
|
|
|
+ int totalNum = getMonthNum(i - 1, list);
|
|
|
|
+ DateTime month = DateTime.of(workOrder.getStartMonth());
|
|
|
|
+ Date startMonth = month.offset(DateField.MONTH, totalNum).toSqlDate();
|
|
|
|
+ DateTime startMonthTemp = DateTime.of(startMonth);
|
|
|
|
+ Date endMonth = startMonthTemp.offset(DateField.MONTH, monthNum - 1).toSqlDate();
|
|
|
|
+ return new TimeVo(startMonth, endMonth);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static int getMonthNum(int i, List<BizWorkOrderDetail> list) {
|
|
|
|
+ int total = 0;
|
|
|
|
+ while (i >= 0) {
|
|
|
|
+ BizWorkOrderDetail bizWorkOrderDetail = list.get(i);
|
|
|
|
+ total += bizWorkOrderDetail.getFreeNum() + bizWorkOrderDetail.getServiceNum();
|
|
|
|
+ i--;
|
|
|
|
+ }
|
|
|
|
+ return total;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|