Browse Source

项目上报临期提醒

user5 4 năm trước cách đây
mục cha
commit
0b04ea9b5d

+ 8 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/dao/RuralProjectRecordsDao.java

@@ -69,4 +69,12 @@ public interface RuralProjectRecordsDao extends CrudDao<RuralProjectRecords> {
      * @return
      */
     ProjectRecords getProjectRecords(String id);
+
+
+    /**
+     * 查询即将超期的项目数据信息
+     * @param records
+     * @return
+     */
+    List<RuralProjectRecords> getProjectReportedListByAdvent(RuralProjectRecords records);
 }

+ 27 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/entity/RuralProjectRecords.java

@@ -173,6 +173,9 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	private Date beginDate;
 	private Date endDate;
 	private int membercount;
+	private Integer startCount;    //开始数据
+	private Integer endingCount;   //结束数据
+	private String adventDate;   //超期时间
 	private List<WorkClientAttachment> workAttachments = Lists.newArrayList();
 
 	private List<ProjectReportData> projectReportData = Lists.newArrayList();
@@ -738,4 +741,28 @@ public class RuralProjectRecords extends ActEntity<RuralProjectRecords> {
 	public void setView(String view) {
 		this.view = view;
 	}
+
+	public Integer getStartCount() {
+		return startCount;
+	}
+
+	public void setStartCount(Integer startCount) {
+		this.startCount = startCount;
+	}
+
+	public Integer getEndingCount() {
+		return endingCount;
+	}
+
+	public void setEndingCount(Integer endingCount) {
+		this.endingCount = endingCount;
+	}
+
+	public String getAdventDate() {
+		return adventDate;
+	}
+
+	public void setAdventDate(String adventDate) {
+		this.adventDate = adventDate;
+	}
 }

+ 39 - 0
src/main/java/com/jeeplus/modules/ruralprojectrecords/service/RuralProjectRecordsService.java

@@ -24,6 +24,7 @@ import com.jeeplus.modules.ruralprojectrecords.dao.RuralWorkProjectUserDao;
 import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
 import com.jeeplus.modules.ruralprojectrecords.enums.ProjectStatusEnum;
 import com.jeeplus.modules.serialnum.service.SerialNumTplService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
 import com.jeeplus.modules.sys.entity.Office;
 import com.jeeplus.modules.sys.entity.User;
 import com.jeeplus.modules.sys.service.OfficeService;
@@ -1298,4 +1299,42 @@ public class RuralProjectRecordsService extends CrudService<RuralProjectRecordsD
 		page.setList(recordsList);
 		return page;
 	}
+
+	/**
+	 * 获取项目即将超期还未上报并进行通知
+	 * @return
+	 */
+	@Transactional(readOnly = false)
+	public void saveProjectReportedListByAdvent(){
+		RuralProjectRecords projectRecords = new RuralProjectRecords();
+		//查询超期时间天数
+		List<MainDictDetail> adventCount = DictUtils.getMainDictListOnProjectAdvent("advent_count");
+		if(adventCount.size()>0){
+			//获取超期时间天数转int
+			Integer endingCount = Integer.parseInt(adventCount.get(0).getLabel());
+			//设置开始时间为还有3天即将超期
+			projectRecords.setStartCount(endingCount-3);
+			projectRecords.setEndingCount(endingCount);
+		}
+		//获取项目数据
+		List<RuralProjectRecords> projectRecordsList = dao.getProjectReportedListByAdvent(projectRecords);
+		for (RuralProjectRecords info: projectRecordsList) {
+			String notifyStr = "项目编号:"+info.getProjectId()+",项目名称:"+ info.getProjectName();
+			String titleStr = "项目名称:"+ info.getProjectName()+"上报即将超期。超期时间为:"+info.getAdventDate();
+			List<User> projectLeaders = workProjectUserDao.queryProjectUsers(info.getId(), "1");
+			for (User user: projectLeaders) {
+				workProjectNotifyService
+					.save(UtilNotify.saveNotify(info.getId(),
+							user,
+							info.getCompany().getId(),
+							titleStr,
+							notifyStr,
+							"94",
+							"0",
+							"待通知",
+							""));
+			}
+
+		}
+	}
 }

+ 12 - 0
src/main/java/com/jeeplus/modules/sys/utils/DictUtils.java

@@ -224,6 +224,18 @@ public class DictUtils {
 	}
 
 	/**
+	 * 公司级业务字典
+	 * @param type
+	 * @return
+	 */
+	public static List<MainDictDetail> getMainDictListOnProjectAdvent(String type){
+		MainDictDetail mainDictDetail = new MainDictDetail();
+		mainDictDetail.setType(type);
+        List<MainDictDetail> dictList = mainDictDetailDao.findJedisAllList(mainDictDetail);
+		return dictList;
+	}
+
+	/**
 	 * 项目类型业务字典
 	 * @param type
 	 * @return

+ 18 - 0
src/main/java/com/jeeplus/modules/workcalendar/service/WorkCalendarTaskService.java

@@ -4,6 +4,11 @@
 package com.jeeplus.modules.workcalendar.service;
 
 import com.jeeplus.common.utils.DateUtils;
+import com.jeeplus.modules.ruralprojectrecords.dao.RuralProjectRecordsDao;
+import com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords;
+import com.jeeplus.modules.ruralprojectrecords.service.RuralProjectRecordsService;
+import com.jeeplus.modules.sys.entity.MainDictDetail;
+import com.jeeplus.modules.sys.utils.DictUtils;
 import com.jeeplus.modules.workcalendar.dao.WorkCalendarDao;
 import com.jeeplus.modules.workcalendar.entity.WorkCalendar;
 import org.slf4j.Logger;
@@ -33,6 +38,8 @@ public class WorkCalendarTaskService  {
 
     @Autowired
     private WorkCalendarService workCalendarService;
+    @Autowired
+    private RuralProjectRecordsService projectRecordsService;
 
     @Scheduled(cron= "0 0/1 * * * ?")
     public void notifyTask() {
@@ -99,4 +106,15 @@ public class WorkCalendarTaskService  {
         }
         logger.info("-----------凌晨发送日常事务任务开始------------------");
     }
+
+    /**
+     * 获取项目即将超期还未上报并进行通知
+     */
+    @Scheduled(cron= "0 10 0 * * ?")
+    @Transactional(readOnly = false)
+    public void getProjectReportedListByAdvent() {
+        logger.info("-----------项目超期未上报定时任务开始------------------");
+        projectRecordsService.saveProjectReportedListByAdvent();
+        logger.info("------------项目超期未上报定时任务结束------------------");
+    }
 }

+ 13 - 0
src/main/java/com/jeeplus/modules/workcontractinfo/service/WorkContractInfoService.java

@@ -2627,6 +2627,19 @@ public class WorkContractInfoService extends CrudService<WorkContractInfoDao, Wo
 	@Transactional(readOnly = false)
 	public void updateWorkContractInfo(WorkContractInfo workContractInfo) {
 		String contractId = workContractInfo.getId();
+		WorkClientInfo client = workContractInfo.getClient();
+		WorkClientInfo clientInfo = workClientInfoService.get(client.getId());
+		//根据客户信息查询委托方联系人信息
+		if(workContractInfo.getWorkClientInfoList().size()==0){
+			WorkClientInfo workClientInfo = new WorkClientInfo();
+			workClientInfo.setId(clientInfo.getId());
+			workClientInfo.setName(clientInfo.getName());
+			workClientInfo.setCompanyType(DictUtils.getMainDictLabel(clientInfo.getCompanyType(),"company_type",""));
+			workClientInfo.setCompanyIndustry(DictUtils.getMainDictLabel(clientInfo.getCompanyIndustry(),"company_industry",""));
+			workClientInfo.setArea(clientInfo.getArea());
+			workContractInfo.getWorkClientInfoList().add(workClientInfo);
+		}
+
 		WorkContractClient workContractClient1 = new WorkContractClient();
 		workContractClient1.setContractId(contractId);
 		List<WorkContractClient> list1 =workContractClientService.findList(workContractClient1);

+ 23 - 0
src/main/resources/mappings/modules/ruralprojectrecords/RuralProjectRecordsDao.xml

@@ -898,4 +898,27 @@
 			</if>
 		</where>
 	</select>
+
+	<select id="getProjectReportedListByAdvent" resultType="com.jeeplus.modules.ruralprojectrecords.entity.RuralProjectRecords" >
+	SELECT
+	<include refid="projectRecordsColumns"/>
+	,date_add(date_format(prd.update_date, '%Y-%m-%d'),interval 30 day) as adventDate
+	,a.project_type as "projectType"
+	FROM rural_project_records a
+	left join work_contract_info wci on a.contract_id = wci.id
+	left join project_report_data prd on prd.project_id = a.id
+	left join rural_project_report_record prr on prr.report_id = prd.id
+	left join sys_user u on u.id = a.create_by
+	left join sys_office o on o.id = a.office_id
+	LEFT JOIN sys_area area ON area.id = a.area_id
+	LEFT JOIN work_project_user w1 on a.id = w1.project_id
+	left join sys_user su on su.id = w1.user_id
+	left join sys_office so on so.id = su.office_id
+	<where>
+	a.del_flag = 0
+	and (a.reported_state!=5 or a.reported_state is null)
+	and prd.status = 5
+	and now() between date_add(prd.update_date,interval #{startCount} day) and date_add(prd.update_date,interval #{endingCount} day)
+	</where>
+	</select>
 </mapper>