|
@@ -1,7 +1,9 @@
|
|
|
package cn.ezhizao.project.business.workOrder.controller;
|
|
|
|
|
|
import cn.ezhizao.common.exception.ServiceException;
|
|
|
+import cn.ezhizao.common.utils.DateUtils;
|
|
|
import cn.ezhizao.common.utils.poi.ExcelUtil;
|
|
|
+import cn.ezhizao.common.utils.uuid.SnowflakeIdWorker;
|
|
|
import cn.ezhizao.fegin.FilterRequest;
|
|
|
import cn.ezhizao.fegin.IFeignClient;
|
|
|
import cn.ezhizao.framework.aspectj.lang.annotation.Anonymous;
|
|
@@ -45,6 +47,7 @@ import java.sql.Date;
|
|
|
import java.text.SimpleDateFormat;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.Month;
|
|
|
+import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -74,7 +77,8 @@ public class WorkOrderCurrentController extends BaseController {
|
|
|
|
|
|
@Resource
|
|
|
private IFeignClient entrustFeignClient;
|
|
|
-
|
|
|
+ @Resource
|
|
|
+ SnowflakeIdWorker snowflakeIdWorker;
|
|
|
|
|
|
@Resource
|
|
|
private IBizEntrustExamineService entrustExamineService;
|
|
@@ -671,7 +675,9 @@ public class WorkOrderCurrentController extends BaseController {
|
|
|
newNextMonth.setType(1);
|
|
|
|
|
|
// 获取上月的委托
|
|
|
- List<BizEntrust> entrusts = bizEntrustService.query().eq("tenant_id", getTenantId()).eq("work_month", nextMonthDate.toSqlDate()).list();
|
|
|
+ List<BizEntrust> entrusts = bizEntrustService.query()
|
|
|
+ .eq("tenant_id", getTenantId()).
|
|
|
+ eq("work_month", nextMonthDate.toSqlDate()).list();
|
|
|
List<BizEntrust> entr = new ArrayList<>(entrusts);
|
|
|
//将到截至月的委托去掉
|
|
|
for (BizEntrust b : entr) {
|
|
@@ -710,54 +716,84 @@ public class WorkOrderCurrentController extends BaseController {
|
|
|
@Anonymous
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void transNextTask(@RequestBody List<Tenant> storeList) {
|
|
|
+
|
|
|
for (Tenant tenant : storeList) {
|
|
|
+ List<BizEntrust> bizEntrustList = null;
|
|
|
+ List<BizEntrust> entrusts = new ArrayList<>();
|
|
|
Long tenantId = tenant.getId();
|
|
|
// 将本月改为上一月,将下月改成本月,添加新月
|
|
|
- List<SysCurrentMonth> months = sysCurrentMonthService.query().eq("tenant_id", tenantId).ge("type", 0).list();
|
|
|
- SysCurrentMonth currentMonth = months.stream().filter(v -> v.getType().equals(0)).findFirst().orElse(new SysCurrentMonth());
|
|
|
+ List<SysCurrentMonth> months = sysCurrentMonthService.query()
|
|
|
+ .eq("tenant_id", tenantId)
|
|
|
+ .ge("type", 0).list();
|
|
|
+
|
|
|
+ // 当前月
|
|
|
+ SysCurrentMonth currentMonth = months.stream()
|
|
|
+ .filter(v -> v.getType().equals(0)).findFirst()
|
|
|
+ .orElse(new SysCurrentMonth());
|
|
|
if (currentMonth.getId() == null) {
|
|
|
// throw new ServiceException("未设定本月");
|
|
|
continue;
|
|
|
}
|
|
|
- SysCurrentMonth nextMonth = months.stream().filter(v -> v.getType().equals(1)).findFirst().orElse(new SysCurrentMonth());
|
|
|
- SysCurrentMonth newNextMonth = new SysCurrentMonth();
|
|
|
+
|
|
|
+ // 下个月
|
|
|
+ SysCurrentMonth nextMonth = months.stream()
|
|
|
+ .filter(v -> v.getType().equals(1))
|
|
|
+ .findFirst()
|
|
|
+ .orElse(new SysCurrentMonth());
|
|
|
currentMonth.setType(-1);
|
|
|
nextMonth.setType(0);
|
|
|
+
|
|
|
+ // 下下个月
|
|
|
+ SysCurrentMonth newNextMonth = new SysCurrentMonth();
|
|
|
DateTime nextMonthDate = DateTime.of(nextMonth.getYear() + nextMonth.getMonth() + "01", "yyyyMMdd");
|
|
|
newNextMonth.setMonth(nextMonthDate.offsetNew(DateField.MONTH, 1).toString("MM"));
|
|
|
newNextMonth.setYear(nextMonthDate.offsetNew(DateField.MONTH, 1).toString("yyyy"));
|
|
|
newNextMonth.setTenantId(tenantId);
|
|
|
newNextMonth.setType(1);
|
|
|
|
|
|
- // 获取上月的委托
|
|
|
- List<BizEntrust> entrusts = bizEntrustService.query().eq("tenant_id", tenantId).eq("work_month", nextMonthDate.toSqlDate()).list();
|
|
|
- List<BizEntrust> entr = new ArrayList<>(entrusts);
|
|
|
- //将到截至月的委托去掉
|
|
|
- for (BizEntrust b : entr) {
|
|
|
- List<BizWorkOrder> workOrder = bizWorkOrderService.query().eq("id", b.getWorkOrderId()).list();
|
|
|
-
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- // 设置年份
|
|
|
- calendar.set(Calendar.YEAR, Integer.parseInt(months.get(0).getYear()));
|
|
|
- // 设置月份为(注意:月份是从0开始的,所以要减1)
|
|
|
- calendar.set(Calendar.MONTH, Integer.parseInt(months.get(0).getMonth()) - 1);
|
|
|
- // 设置日期
|
|
|
- calendar.set(Calendar.DAY_OF_MONTH, 1);
|
|
|
- Date currentMonthDate = new java.sql.Date(calendar.getTime().getTime());
|
|
|
- if (!workOrder.isEmpty()) {
|
|
|
- if (workOrder.get(0).getIsStop() == 1 || (currentMonthDate == workOrder.get(0).getEndMonth())) {
|
|
|
- entrusts.removeIf(s -> s.getWorkOrderId().equals(b.getWorkOrderId()));
|
|
|
+ // 当前月时间
|
|
|
+ DateTime currentDateTime = DateTime.of(currentMonth.getYear() + currentMonth.getMonth() + "01", "yyyyMMdd");
|
|
|
+
|
|
|
+ // 下个月时间
|
|
|
+ DateTime nextMonthDateTime = DateTime.of(nextMonth.getYear() + nextMonth.getMonth() + "01", "yyyyMMdd");
|
|
|
+
|
|
|
+ // 生成月
|
|
|
+ DateTime generateDateTime = nextMonthDateTime.offsetNew(DateField.MONTH, 1);
|
|
|
+
|
|
|
+ //获取本账套下所有的下月工单
|
|
|
+ BizWorkOrder bizWorkOrder = new BizWorkOrder();
|
|
|
+ bizWorkOrder.setTenantId(tenantId);
|
|
|
+ bizWorkOrder.setIsStop(0);
|
|
|
+ bizWorkOrder.setType(1);
|
|
|
+ bizWorkOrder.setNoContract(0);
|
|
|
+ bizWorkOrder.setWorkDate(generateDateTime);
|
|
|
+ List<BizWorkOrder> workOrderList = bizWorkOrderService.getList(bizWorkOrder);
|
|
|
+ BizEntrust bizEntrust = null;
|
|
|
+ for(BizWorkOrder workOrder :workOrderList){
|
|
|
+ //判断待生成月份(newNextMonth)是否在委托表有数据
|
|
|
+ bizEntrustList = bizEntrustService.lambdaQuery()
|
|
|
+ .eq(BizEntrust::getWorkMonth, generateDateTime)
|
|
|
+ .eq(BizEntrust::getTenantId,tenantId)
|
|
|
+ .eq(BizEntrust::getWorkOrderId,workOrder.getId())
|
|
|
+ .list();
|
|
|
+ if (bizEntrustList.isEmpty()) {
|
|
|
+ //判断生成的当前时间(本月生成次月)段是否存在委托
|
|
|
+ bizEntrustList = bizEntrustService.lambdaQuery()
|
|
|
+ .eq(BizEntrust::getWorkOrderId,workOrder.getId())
|
|
|
+ .eq(BizEntrust::getWorkMonth, nextMonthDateTime)
|
|
|
+ .eq(BizEntrust::getTenantId,tenantId)
|
|
|
+ .list();
|
|
|
+ //如果存在委托那么取本月委托数据复制到下一个月
|
|
|
+ if(!bizEntrustList.isEmpty()){
|
|
|
+ bizEntrust = bizEntrustList.get(0);
|
|
|
+ bizEntrust.setId(snowflakeIdWorker.nextId());
|
|
|
+ System.out.println(bizEntrust.getId());
|
|
|
+ bizEntrust.setCurrentMonth(new Date(DateUtils.addMonths(bizEntrust.getCurrentMonth(), 1).getTime()));
|
|
|
+ bizEntrust.setWorkMonth(new Date(DateUtils.addMonths(bizEntrust.getWorkMonth(), 1).getTime()));
|
|
|
+ entrusts.add(bizEntrust);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- entrusts.forEach(l -> {
|
|
|
- DateTime currentWorkMonth = DateTime.of(l.getWorkMonth());
|
|
|
- DateTime currentMonthDate = DateTime.of(l.getCurrentMonth());
|
|
|
- l.setWorkMonth(currentWorkMonth.offsetNew(DateField.MONTH, 1).toSqlDate());
|
|
|
- l.setCurrentMonth(currentMonthDate.offsetNew(DateField.MONTH, 1).toSqlDate());
|
|
|
- l.setId(null);
|
|
|
- });
|
|
|
-
|
|
|
toAjax(
|
|
|
(currentMonth.getId() == null || sysCurrentMonthService.updateById(currentMonth)) &&
|
|
|
(nextMonth.getId() == null || sysCurrentMonthService.updateById(nextMonth)) &&
|