|
|
@@ -287,6 +287,9 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
serviceProjectItem.setStatus(5);
|
|
|
serviceProjectItem.setPayTime(payTime);
|
|
|
|
|
|
+ serviceProjectItem.setEndTime(new Date());
|
|
|
+ serviceProjectItem.setTaskStatus(30);
|
|
|
+
|
|
|
ServiceProject targetServiceProject = serviceProjectMapper.selectById(serviceProjectItem.getPId());
|
|
|
//主表已收款项增加
|
|
|
targetServiceProject.setSettlmentAmount(targetServiceProject.getSettlmentAmount().add(serviceProjectItem.getAmount()));
|
|
|
@@ -297,6 +300,35 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
|
|
|
serviceProjectMapper.updateById(targetServiceProject);
|
|
|
|
|
|
+ //查询任务数量
|
|
|
+ LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper();
|
|
|
+ lambdaQueryWrapper.eq(ServiceProjectItem::getItemPid, serviceProjectItem.getItemPid())
|
|
|
+ .eq(ServiceProjectItem::getBranch, "Y")
|
|
|
+ .eq(ServiceProjectItem::getIsDeleted, 0);
|
|
|
+ List<ServiceProjectItem> serviceProjectItemList = serviceProjectItemMapper.selectList(lambdaQueryWrapper);
|
|
|
+ int count = 0;
|
|
|
+ //遍历任务,判断完成数量
|
|
|
+ for (ServiceProjectItem s : serviceProjectItemList) {
|
|
|
+ if (!serviceProjectItem.getId().equals(s.getId())) {
|
|
|
+ if (s.getTaskStatus().equals(30)) {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //判断总数量和已完成数量是否一致,如果一致则本条任务为最后一条完成任务需修改主营业务明细单据状态为完成 否则继续执行
|
|
|
+ if (serviceProjectItemList.size() == count) {
|
|
|
+ ServiceProjectItem serviceProjectItem1 = new ServiceProjectItem();
|
|
|
+ serviceProjectItem1.setUpdateTime(new Date());
|
|
|
+ serviceProjectItem1.setUpdateUser(SecureUtil.getUserId());
|
|
|
+ serviceProjectItem1.setId(serviceProjectItem.getItemPid());
|
|
|
+ serviceProjectItem.setPayTime(new Date());
|
|
|
+ serviceProjectItem.setEndTime(new Date());
|
|
|
+ serviceProjectItem1.setTaskStatus(30);
|
|
|
+ serviceProjectItemMapper.updateById(serviceProjectItem1);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
//撤回
|
|
|
else if (status == 6) {
|
|
|
@@ -430,6 +462,10 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
targetServiceProject.setUpdateTime(new Date());
|
|
|
targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
|
|
|
serviceProjectMapper.updateById(targetServiceProject);
|
|
|
+ ServiceProjectItem serviceProjectItem1 = new ServiceProjectItem();
|
|
|
+ serviceProjectItem1.setItemPid(serviceProjectItem.getId());
|
|
|
+ serviceProjectItem1.setStatus(5);
|
|
|
+ serviceProjectItemMapper.updateByItemPid(serviceProjectItem1);
|
|
|
} else if (status == 6) {
|
|
|
if (serviceProjectItem.getStatus() != 5) {
|
|
|
throw new SecurityException("操作失败:此明细暂未结算,禁止撤回");
|
|
|
@@ -482,8 +518,8 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
@Transactional
|
|
|
public int dispatch(ServiceProject serviceProject) {
|
|
|
List<ServiceProjectItem> itemList = serviceProject.getItemList();
|
|
|
- AtomicInteger status = new AtomicInteger(1);
|
|
|
itemList.forEach(ls -> {
|
|
|
+ AtomicInteger count = new AtomicInteger(0);
|
|
|
//修改任务明细单据状态
|
|
|
ServiceProjectItem up = new ServiceProjectItem();
|
|
|
up.setId(ls.getId());
|
|
|
@@ -498,8 +534,6 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
if (ObjectUtils.isNull(ls.getSecond())) {
|
|
|
ls.setSecond(1);
|
|
|
}
|
|
|
- //获取当前时间
|
|
|
- Date date = new Date();
|
|
|
//服务费
|
|
|
BigDecimal serviceCharge = ls.getServiceCharge().divide(new BigDecimal(ls.getSecond()));
|
|
|
//合计金额
|
|
|
@@ -514,93 +548,28 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
}
|
|
|
//通过频率次数循环生成任务
|
|
|
for (int i = 0; i < ls.getSecond(); i++) {
|
|
|
- //获取需求开始日期
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(ls.getBeginTime());
|
|
|
-
|
|
|
- //获取提醒日期
|
|
|
- Calendar reminderCalendar = Calendar.getInstance();
|
|
|
- Date reminderDate;
|
|
|
-
|
|
|
- //判断开始,提醒日期
|
|
|
- switch (ls.getFrequency()) {
|
|
|
- case "1"://年
|
|
|
- if (i > 0) {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i + 12);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i + 12);//设置月分
|
|
|
- } else {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- }
|
|
|
- case "2"://半年
|
|
|
- if (i > 0) {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i + 6);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i + 6);//设置月分
|
|
|
- } else {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- }
|
|
|
- case "3"://季度
|
|
|
- if (i > 0) {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i + 3);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i + 3);//设置月分
|
|
|
- } else {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- }
|
|
|
- case "4"://月
|
|
|
- if (i > 0) {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i + 1);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i + 1);//设置月分
|
|
|
- } else {
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- }
|
|
|
- case "5"://次
|
|
|
- //开始日期
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- //提醒日期
|
|
|
- reminderCalendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- default:
|
|
|
- status.set(0);
|
|
|
- break;
|
|
|
- }
|
|
|
-
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
- Date date1 = calendar.getTime();
|
|
|
|
|
|
- //判断提醒日期是否为空 空默认每月一日为提醒日期 否则 每月提醒日期为当前日
|
|
|
- if (ObjectUtils.isNotNull(ls.getReminderDay())) {
|
|
|
- reminderCalendar.setTime(ls.getReminderDay());
|
|
|
- reminderDate = reminderCalendar.getTime();
|
|
|
- } else {
|
|
|
- reminderCalendar.setTime(date);
|
|
|
- reminderCalendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
- reminderDate = reminderCalendar.getTime();
|
|
|
+ if (ObjectUtils.isNotNull(ls.getProjectItemDateList())){
|
|
|
+
|
|
|
+ ls.setBeginTime(ls.getProjectItemDateList().get(i).getBeginTime());
|
|
|
+ //获取提醒日期
|
|
|
+ Calendar reminderCalendar = Calendar.getInstance();
|
|
|
+ Date reminderDate;
|
|
|
+ //判断提醒日期是否为空 空默认每月一日为提醒日期 否则 每月提醒日期为当前日
|
|
|
+ if (ObjectUtils.isNotNull(ls.getProjectItemDateList().get(i).getReminderDay())) {
|
|
|
+ reminderCalendar.setTime(ls.getProjectItemDateList().get(i).getReminderDay());
|
|
|
+ reminderDate = reminderCalendar.getTime();
|
|
|
+ } else {
|
|
|
+ reminderCalendar.setTime(ls.getProjectItemDateList().get(i).getBeginTime());
|
|
|
+ reminderCalendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
+ reminderDate = reminderCalendar.getTime();
|
|
|
+ }
|
|
|
+ ls.setReminderDay(reminderDate);
|
|
|
}
|
|
|
|
|
|
ls.setServiceCharge(serviceCharge);
|
|
|
ls.setAmount(amount);
|
|
|
ls.setMatMoney(matMoney);
|
|
|
- ls.setBeginTime(date1);
|
|
|
- ls.setReminderDay(reminderDate);
|
|
|
ls.setTenantId(AuthUtil.getTenantId());
|
|
|
ls.setPId(ls.getPId());
|
|
|
ls.setCreateTime(new Date());
|
|
|
@@ -608,11 +577,15 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
ls.setCreateUserName(SecureUtil.getUser().getUserName());
|
|
|
ls.setStatus(4);
|
|
|
ls.setBranch("Y");
|
|
|
+ ls.setItemPid(up.getId());
|
|
|
ls.setId(null);
|
|
|
+
|
|
|
serviceProjectItemMapper.insert(ls);
|
|
|
+
|
|
|
+ count.getAndIncrement();
|
|
|
}
|
|
|
});
|
|
|
- return status.get();
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
public void checkMoney(Long serviceId, List<ServiceProjectItem> items) {
|