|
|
@@ -30,6 +30,7 @@ import java.math.BigDecimal;
|
|
|
import java.util.Calendar;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
+import java.util.concurrent.atomic.AtomicInteger;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
@@ -479,76 +480,88 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
|
|
|
@Override
|
|
|
public int dispatch(ServiceProject serviceProject) {
|
|
|
List<ServiceProjectItem> itemList = serviceProject.getItemList();
|
|
|
- Date date = new Date();
|
|
|
+ AtomicInteger status = new AtomicInteger(1);
|
|
|
itemList.forEach(ls -> {
|
|
|
+ //判断次数 如果为空赋值为1
|
|
|
if (ObjectUtils.isNotNull(ls.getFrequency())) {
|
|
|
+ //判断次数 如果为空赋值为1
|
|
|
if (ObjectUtils.isNull(ls.getSecond())) {
|
|
|
ls.setSecond(1);
|
|
|
}
|
|
|
switch (ls.getFrequency()) {
|
|
|
case "1"://年
|
|
|
- //服务费每月需缴纳
|
|
|
- BigDecimal serviceCharge = ls.getServiceCharge().divide(new BigDecimal(ls.getSecond() * 12));
|
|
|
- //合计金额每月需缴纳
|
|
|
- BigDecimal amount = ls.getAmount().divide(new BigDecimal(ls.getSecond() * 12));
|
|
|
- //成本每月需缴纳
|
|
|
- BigDecimal matMoney = ls.getMatMoney().divide(new BigDecimal(ls.getSecond() * 12));
|
|
|
- for (int i = 0; i < ls.getSecond() * 12; i++) {
|
|
|
- //获取需求开始日期
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(ls.getBeginTime());
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
- Date date1 = calendar.getTime();
|
|
|
-
|
|
|
- //获取提醒日期
|
|
|
- Calendar reminderCalendar = Calendar.getInstance();
|
|
|
- Date reminderDate;
|
|
|
- //判断提醒日期是否为空 空默认每月一日为提醒日期 否则 每月提醒日期为当前日
|
|
|
- if (ObjectUtils.isNotNull(ls.getReminderDay())) {
|
|
|
- reminderCalendar.setTime(ls.getReminderDay());
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- reminderDate = calendar.getTime();
|
|
|
- } else {
|
|
|
- calendar.setTime(date);
|
|
|
- calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
- calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
- reminderDate = calendar.getTime();
|
|
|
- }
|
|
|
-
|
|
|
- ls.setServiceCharge(serviceCharge);
|
|
|
- ls.setAmount(amount);
|
|
|
- ls.setMatMoney(matMoney);
|
|
|
- ls.setBeginTime(date1);
|
|
|
- ls.setReminderDay(reminderDate);
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ this.insertProjectItem(ls, ls.getSecond() * 12, serviceProject.getId());
|
|
|
case "2"://半年
|
|
|
- for (int i = 0; i < ls.getSecond() * 6; i++) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ this.insertProjectItem(ls, ls.getSecond() * 6, serviceProject.getId());
|
|
|
case "3"://季度
|
|
|
- for (int i = 0; i < ls.getSecond() * 3; i++) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ this.insertProjectItem(ls, ls.getSecond() * 3, serviceProject.getId());
|
|
|
case "4"://月
|
|
|
- for (int i = 0; i < ls.getSecond() * 1; i++) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
+ this.insertProjectItem(ls, ls.getSecond(), serviceProject.getId());
|
|
|
case "5"://次
|
|
|
- for (int i = 0; i < ls.getSecond(); i++) {
|
|
|
-
|
|
|
- }
|
|
|
+ this.insertProjectItem(ls, ls.getSecond(), serviceProject.getId());
|
|
|
+ default:
|
|
|
+ status.set(0);
|
|
|
+ break;
|
|
|
}
|
|
|
+ } else {
|
|
|
+ this.insertProjectItem(ls, 1, serviceProject.getId());
|
|
|
}
|
|
|
});
|
|
|
+ return status.get();
|
|
|
+ }
|
|
|
|
|
|
+ /**
|
|
|
+ * 派工生成单条或多条任务
|
|
|
+ * @param ls 任务集合
|
|
|
+ * @param number 生成条数
|
|
|
+ * @param projectId 父id
|
|
|
+ */
|
|
|
+ public void insertProjectItem(ServiceProjectItem ls, int number, Long projectId) {
|
|
|
+ //获取当前时间
|
|
|
+ Date date = new Date();
|
|
|
+ //服务费每月需缴纳
|
|
|
+ BigDecimal serviceCharge = ls.getServiceCharge().divide(new BigDecimal(number));
|
|
|
+ //合计金额每月需缴纳
|
|
|
+ BigDecimal amount = ls.getAmount().divide(new BigDecimal(number));
|
|
|
+ //成本每月需缴纳
|
|
|
+ BigDecimal matMoney = ls.getMatMoney().divide(new BigDecimal(number));
|
|
|
+ for (int i = 0; i < number; i++) {
|
|
|
+ //获取需求开始日期
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(ls.getBeginTime());
|
|
|
+ calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
+ Date date1 = calendar.getTime();
|
|
|
+
|
|
|
+ //获取提醒日期
|
|
|
+ Calendar reminderCalendar = Calendar.getInstance();
|
|
|
+ Date reminderDate;
|
|
|
+ //判断提醒日期是否为空 空默认每月一日为提醒日期 否则 每月提醒日期为当前日
|
|
|
+ if (ObjectUtils.isNotNull(ls.getReminderDay())) {
|
|
|
+ reminderCalendar.setTime(ls.getReminderDay());
|
|
|
+ calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
+ reminderDate = calendar.getTime();
|
|
|
+ } else {
|
|
|
+ calendar.setTime(date);
|
|
|
+ calendar.add(Calendar.MONTH, i);//设置月分
|
|
|
+ calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
|
|
|
+ reminderDate = calendar.getTime();
|
|
|
+ }
|
|
|
|
|
|
- return 0;
|
|
|
+ ls.setServiceCharge(serviceCharge);
|
|
|
+ ls.setAmount(amount);
|
|
|
+ ls.setMatMoney(matMoney);
|
|
|
+ ls.setBeginTime(date1);
|
|
|
+ ls.setReminderDay(reminderDate);
|
|
|
+ ls.setTenantId(AuthUtil.getTenantId());
|
|
|
+ ls.setPId(projectId);
|
|
|
+ ls.setCreateTime(new Date());
|
|
|
+ ls.setCreateUser(SecureUtil.getUserId());
|
|
|
+ ls.setCreateUserName(SecureUtil.getUser().getUserName());
|
|
|
+ ls.setTaskStatus(10);
|
|
|
+ ls.setBranch("Y");
|
|
|
+ serviceProjectItemMapper.insert(ls);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public void checkMoney(Long serviceId, List<ServiceProjectItem> items) {
|