Переглянути джерело

2022年8月16日12点30分

纪新园 3 роки тому
батько
коміт
5812cd1ffe

+ 5 - 0
blade-service-api/blade-project-api/src/main/java/org/springblade/project/entity/ServiceProjectItem.java

@@ -195,6 +195,11 @@ public class ServiceProjectItem extends TenantEntity implements Serializable {
 	private Long itemPid;
 
 	/**
+	 * 业务编号
+	 */
+	private String sysNo;
+
+	/**
 	 *时间数组
 	 */
 	@TableField(exist = false)

+ 7 - 0
blade-service/blade-project/pom.xml

@@ -17,6 +17,13 @@
     <packaging>jar</packaging>
 
     <dependencies>
+
+        <!--Job-->
+        <dependency>
+            <groupId>com.xuxueli</groupId>
+            <artifactId>xxl-job-core</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-core-boot</artifactId>

+ 19 - 4
blade-service/blade-project/src/main/java/org/springblade/project/controller/ProjectController.java

@@ -799,7 +799,8 @@ public class ProjectController {
 							 @RequestParam(name = "beginStartTime", required = false) String beginStartTime,
 							 @RequestParam(name = "beginEndTime", required = false) String beginEndTime,
 							 @RequestParam(name = "projectType", required = false) Integer projectType,
-							 @RequestParam(name = "branch", required = false) String branch
+							 @RequestParam(name = "branch", required = false) String branch,
+							 @RequestParam(name = "sysNo", required = false) String sysNo
 	) {
 		List<String> listStatus = Arrays.asList(status.split(","));
 
@@ -813,7 +814,8 @@ public class ProjectController {
 			.ge(StringUtils.isNotBlank(beginStartTime), ServiceProjectItem::getBeginTime, beginStartTime)
 			.le(StringUtils.isNotBlank(beginEndTime), ServiceProjectItem::getBeginTime, beginEndTime)
 			.ge(StringUtils.isNotBlank(actualDateStart), ServiceProjectItem::getActualDate, actualDateStart)
-			.le(StringUtils.isNotBlank(actualDateEnd), ServiceProjectItem::getActualDate, actualDateEnd);
+			.le(StringUtils.isNotBlank(actualDateEnd), ServiceProjectItem::getActualDate, actualDateEnd)
+			.like(StringUtils.isNotBlank(sysNo), ServiceProjectItem::getSysNo, sysNo);
 
 
 		LambdaQueryWrapper<ServiceProject> lambdaQueryWrapper = new LambdaQueryWrapper<>();
@@ -916,8 +918,8 @@ public class ProjectController {
 		// 承做人
 		if (StringUtils.isNotBlank(userName)) {
 			List<User> userList = userClient.userInfoByName(userName, AuthUtil.getTenantId());
-			if (ObjectUtils.isNotNull(userList)){
-				itemLambdaQueryWrapper.eq(ObjectUtils.isNotNull(userList),ServiceProjectItem::getUserid, userList.get(0).getId());
+			if (ObjectUtils.isNotNull(userList)) {
+				itemLambdaQueryWrapper.eq(ObjectUtils.isNotNull(userList), ServiceProjectItem::getUserid, userList.get(0).getId());
 			}
 		}
 
@@ -957,5 +959,18 @@ public class ProjectController {
 		return R.data(iPage);
 	}
 
+	@PostMapping("/updateProjectItem")
+	public R updateProjectItem(@RequestBody ServiceProjectItem serviceProjectItem) {
+		if (ObjectUtils.isNotNull(serviceProjectItem.getId())){
+			R.fail("请选择修改条件");
+		}
+		serviceProjectItem.setTenantId(AuthUtil.getTenantId());
+		serviceProjectItem.setUpdateUser(AuthUtil.getUserId());
+		serviceProjectItem.setUpdateTime(new Date());
+		serviceProjectItem.setUpdateUserName(AuthUtil.getUser().getUserName());
+		serviceProjectItemService.updateById(serviceProjectItem);
+		return R.data(serviceProjectItem.getId());
+	}
+
 
 }

+ 85 - 0
blade-service/blade-project/src/main/java/org/springblade/project/handler/LocateJobHandler.java

@@ -0,0 +1,85 @@
+package org.springblade.project.handler;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import lombok.AllArgsConstructor;
+import org.springblade.client.entity.Message;
+import org.springblade.client.feign.IMessageClient;
+import org.springblade.core.secure.utils.AuthUtil;
+import org.springblade.project.entity.ServiceProjectItem;
+import org.springblade.project.service.ServiceProjectItemService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.concurrent.*;
+
+@Component
+@AllArgsConstructor
+public class LocateJobHandler {
+
+	@Autowired
+	private ServiceProjectItemService serviceProjectItemService;
+
+	private final IMessageClient iMessageClient;
+
+	@XxlJob("taskCompleteJobHandler")
+	public ReturnT<String> locateJobHandler(String param) throws Exception {
+		// 创建线程池
+		ExecutorService pool = new ThreadPoolExecutor(5, 200, 0L,
+			TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1024),
+			Executors.defaultThreadFactory(),
+			new ThreadPoolExecutor.AbortPolicy());
+
+		try {
+			JSONObject json = JSON.parseObject(param, JSONObject.class);
+
+			String tenantId = json.getString("tenantId");
+			LambdaQueryWrapper<ServiceProjectItem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+			lambdaQueryWrapper
+				.eq(ServiceProjectItem::getTaskStatus, 10)
+				.eq(ServiceProjectItem::getBranch, "Y")
+				.eq(ServiceProjectItem::getTenantId, tenantId)
+				.eq(ServiceProjectItem::getIsDeleted, 0);
+			List<ServiceProjectItem> serviceProjectItemList = serviceProjectItemService.list(lambdaQueryWrapper);
+
+			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+			Date date = new Date();
+			String current = sdf.format(date);
+			for (ServiceProjectItem serviceProjectItem : serviceProjectItemList) {
+				if (ObjectUtils.isNotNull(serviceProjectItem.getReminderDay())) {
+					String reminderDay = sdf.format(serviceProjectItem.getReminderDay());
+					if (current.equals(reminderDay)) {
+						Message message = new Message();
+						message.setUserId(AuthUtil.getUserId());
+						message.setUserName(AuthUtil.getUser().getUserName());
+						message.setToUserId(serviceProjectItem.getUserid());
+						message.setToUserName(serviceProjectItem.getUserName());
+						message.setMessageType(1);
+						message.setMessageBody("您在" + serviceProjectItem.getBeginTime() + "有需要处理的任务。任务编号:" + serviceProjectItem.getSysNo() + "");
+						message.setIsRead(0);
+						message.setTenantId(serviceProjectItem.getTenantId());
+						message.setCreateTime(new Date());
+						message.setCreateUser(AuthUtil.getUserId());
+						message.setIsDeleted(0);
+						iMessageClient.save(message);
+					}
+				}
+			}
+			return ReturnT.SUCCESS;
+		} catch (Exception e) {
+			XxlJobLogger.log(e);
+			return ReturnT.FAIL;
+		} finally {
+			pool.shutdown();
+		}
+	}
+
+}

+ 11 - 7
blade-service/blade-project/src/main/java/org/springblade/project/service/impl/ServiceProjectServiceImpl.java

@@ -56,9 +56,9 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 		List<ServiceProjectFiles> filesList = serviceProject.getFilesList();
 		//新增操作,不用考虑子项问题,子项必然是新增
 		if (serviceProject.getId() == null) {
-			serviceProject.setDebitAmount(serviceProject.getDebitAmount() == null?new BigDecimal(0):serviceProject.getDebitAmount());
-			serviceProject.setSettlmentAmount(serviceProject.getSettlmentAmount() == null?new BigDecimal(0):serviceProject.getSettlmentAmount());
-			serviceProject.setBalanceAmount(serviceProject.getBalanceAmount() == null?new BigDecimal(0):serviceProject.getBalanceAmount());
+			serviceProject.setDebitAmount(serviceProject.getDebitAmount() == null ? new BigDecimal(0) : serviceProject.getDebitAmount());
+			serviceProject.setSettlmentAmount(serviceProject.getSettlmentAmount() == null ? new BigDecimal(0) : serviceProject.getSettlmentAmount());
+			serviceProject.setBalanceAmount(serviceProject.getBalanceAmount() == null ? new BigDecimal(0) : serviceProject.getBalanceAmount());
 			BigDecimal debitAmount = serviceProject.getDebitAmount();//合同总金额
 			BigDecimal settlmentAmount = serviceProject.getSettlmentAmount();//已收金额
 			BigDecimal balanceAmount = serviceProject.getBalanceAmount();//未收金额
@@ -347,6 +347,10 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			targetServiceProject.setUpdateUserName(SecureUtil.getUser().getUserName());
 			serviceProjectMapper.updateById(targetServiceProject);
 		} else {
+			serviceProjectItem.setPayTime(payTime);
+
+			serviceProjectItem.setEndTime(new Date());
+			serviceProjectItem.setTaskStatus(30);
 			serviceProjectItem.setStatus(status);
 		}
 		serviceProjectItemMapper.updateById(serviceProjectItem);
@@ -552,7 +556,7 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 			//通过频率次数循环生成任务
 			for (int i = 0; i < ls.getSecond(); i++) {
 
-				if (ObjectUtils.isNotNull(ls.getProjectItemDateList())){
+				if (ObjectUtils.isNotNull(ls.getProjectItemDateList())) {
 
 					ls.setBeginTime(ls.getProjectItemDateList().get(i).getBeginTime());
 					//获取提醒日期
@@ -569,7 +573,7 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 					}
 					ls.setReminderDay(reminderDate);
 				}
-
+				ls.setSysNo(serviceProject.getSysNo() + "-" + (i + 1));
 				ls.setServiceCharge(serviceCharge);
 				ls.setAmount(amount);
 				ls.setMatMoney(matMoney);
@@ -578,9 +582,9 @@ public class ServiceProjectServiceImpl extends ServiceImpl<ServiceProjectMapper,
 				ls.setCreateTime(new Date());
 				ls.setCreateUser(SecureUtil.getUserId());
 				ls.setCreateUserName(SecureUtil.getUser().getUserName());
-				if (ls.getStatus() == 0){
+				if (ls.getStatus() == 0) {
 					ls.setStatus(4);
-				}else{
+				} else {
 					ls.setStatus(ls.getStatus());
 				}
 				ls.setBranch("Y");

+ 1 - 0
blade-service/trade-purchase/src/main/java/com/trade/purchase/extra/service/impl/LeadsServiceImpl.java

@@ -261,6 +261,7 @@ public class LeadsServiceImpl extends ServiceImpl<LeadsMapper, Leads> implements
 			throw new SecurityException("操作失败:未查询到主营项目数据");
 		}
 		leads.setApprovalStatus("B");
+		leads.setStatus(2);
 		baseMapper.updateById(leads);
 	}