232 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
		
		
			
		
	
	
			232 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Java
		
	
	
	
| 
								 | 
							
								package tqq9.lc123.cloud.app.plugin.task;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import kd.bos.context.RequestContext;
							 | 
						||
| 
								 | 
							
								import kd.bos.dataentity.entity.DynamicObject;
							 | 
						||
| 
								 | 
							
								import kd.bos.exception.KDException;
							 | 
						||
| 
								 | 
							
								import kd.bos.logging.Log;
							 | 
						||
| 
								 | 
							
								import kd.bos.logging.LogFactory;
							 | 
						||
| 
								 | 
							
								import kd.bos.orm.query.QCP;
							 | 
						||
| 
								 | 
							
								import kd.bos.orm.query.QFilter;
							 | 
						||
| 
								 | 
							
								import kd.bos.schedule.executor.AbstractTask;
							 | 
						||
| 
								 | 
							
								import kd.bos.servicehelper.BusinessDataServiceHelper;
							 | 
						||
| 
								 | 
							
								import kd.bos.servicehelper.operation.SaveServiceHelper;
							 | 
						||
| 
								 | 
							
								import kd.sdk.plugin.Plugin;
							 | 
						||
| 
								 | 
							
								import org.apache.commons.lang3.StringUtils;
							 | 
						||
| 
								 | 
							
								import tqq9.lc123.cloud.app.plugin.utils.ConfigUtils;
							 | 
						||
| 
								 | 
							
								import tqq9.lc123.cloud.app.plugin.utils.DateDifferenceCalculator;
							 | 
						||
| 
								 | 
							
								import tqq9.lc123.cloud.app.plugin.utils.EmailUtils;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import java.util.Date;
							 | 
						||
| 
								 | 
							
								import java.util.Map;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 供应商、注册证证照时间到期时间计算并发送预警邮件
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								public class DaysRemainingTask extends AbstractTask implements Plugin {
							 | 
						||
| 
								 | 
							
								    private final static Log logger = LogFactory.getLog(DaysRemainingTask.class);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @Override
							 | 
						||
| 
								 | 
							
								    public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
							 | 
						||
| 
								 | 
							
								        int warnDays = 0;
							 | 
						||
| 
								 | 
							
								        String warnDaysStr = ConfigUtils.getDevSysConfigByNumber("WARN_LICENCE_DAYS");//预警天数
							 | 
						||
| 
								 | 
							
								        if(StringUtils.isNotBlank(warnDaysStr)){
							 | 
						||
| 
								 | 
							
								            warnDays = Integer.valueOf(warnDaysStr);
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        //供应商
							 | 
						||
| 
								 | 
							
								        QFilter f1 = new QFilter("enable", QCP.equals, "1");
							 | 
						||
| 
								 | 
							
								        QFilter f2 = new QFilter("status", QCP.equals, "C");
							 | 
						||
| 
								 | 
							
								        DynamicObject[] suppliers = BusinessDataServiceHelper.load("bd_supplier",
							 | 
						||
| 
								 | 
							
								                "id,number,name,tqq9_datefield1,tqq9_validdays_ylqxsc,tqq9_datefield21,tqq9_validdays_ylqxjy,tqq9_datefield4,tqq9_validdays_ylqxjy2,tqq9_datefield22," +
							 | 
						||
| 
								 | 
							
								                "tqq9_validdays_yljg,tqq9_licenseenddate,tqq9_validdays_hzp,tqq9_zlbzxyyxqz,tqq9_validdays_zlbz,tqq9_datefield2,tqq9_validdays_gmp,tqq9_datefield7," +
							 | 
						||
| 
								 | 
							
								                "tqq9_validdays_frsq,tqq9_datefield9,tqq9_validdays_yyzz,tqq9_gspyxqz,tqq9_validdays_gsp,tqq9_minvaliddays,creator.email",
							 | 
						||
| 
								 | 
							
								                new QFilter[]{f1, f2});
							 | 
						||
| 
								 | 
							
								        Date currentDate = new Date();//当前日期
							 | 
						||
| 
								 | 
							
								        for (DynamicObject supplier : suppliers) {
							 | 
						||
| 
								 | 
							
								            String number = supplier.getString("number");//供应商编码
							 | 
						||
| 
								 | 
							
								            String name = supplier.getString("name");//供应商名称
							 | 
						||
| 
								 | 
							
								            int remainingDays = 0;
							 | 
						||
| 
								 | 
							
								            StringBuilder sb = new StringBuilder();
							 | 
						||
| 
								 | 
							
								            //医疗器械生生产许可证
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield1 = supplier.getDate("tqq9_datefield1");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield1 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield1, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_ylqxsc", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("医疗器械生生产许可证距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //医疗器械经营许可证
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield21 = supplier.getDate("tqq9_datefield21");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield21 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield21, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_ylqxjy", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("医疗器械经营许可证距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //第二类医疗器械经营备案凭证
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield4 = supplier.getDate("tqq9_datefield4");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield4 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield4, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_ylqxjy2", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("第二类医疗器械经营备案凭证距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            //医疗机构执行许可证
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield22 = supplier.getDate("tqq9_datefield22");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield22 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield22, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_yljg", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("医疗机构执行许可证距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //化妆品许可证
							 | 
						||
| 
								 | 
							
								            Date tqq9_licenseenddate = supplier.getDate("tqq9_licenseenddate");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_licenseenddate != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_licenseenddate, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_hzp", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("化妆品许可证距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //质量保证书
							 | 
						||
| 
								 | 
							
								            Date tqq9_zlbzxyyxqz = supplier.getDate("tqq9_zlbzxyyxqz");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_zlbzxyyxqz != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_zlbzxyyxqz, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_zlbz", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("质量保证书距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //GMP证书
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield2 = supplier.getDate("tqq9_datefield2");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield2 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield2, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_gmp", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("GMP证书距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //法人委托授权书
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield7 = supplier.getDate("tqq9_datefield7");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield7 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield7, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_frsq", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("法人委托授权书距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //营业执照
							 | 
						||
| 
								 | 
							
								            Date tqq9_datefield9 = supplier.getDate("tqq9_datefield9");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_datefield9 != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_datefield9, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_yyzz", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("营业执照距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            //GSP证书
							 | 
						||
| 
								 | 
							
								            Date tqq9_gspyxqz = supplier.getDate("tqq9_gspyxqz");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_gspyxqz != null) {
							 | 
						||
| 
								 | 
							
								                remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_gspyxqz, currentDate);
							 | 
						||
| 
								 | 
							
								                supplier.set("tqq9_validdays_gsp", remainingDays);
							 | 
						||
| 
								 | 
							
								                Long tqq9_minvaliddays = supplier.getLong("tqq9_minvaliddays");
							 | 
						||
| 
								 | 
							
								                if (remainingDays < tqq9_minvaliddays) {
							 | 
						||
| 
								 | 
							
								                    supplier.set("tqq9_minvaliddays", remainingDays);
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //与预警天数进行对比
							 | 
						||
| 
								 | 
							
								                    sb.append("GSP证书距离过期时间还剩余 " + remainingDays + " 天。");
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            //发送邮件
							 | 
						||
| 
								 | 
							
								            if(StringUtils.isNotBlank(sb.toString())){
							 | 
						||
| 
								 | 
							
								                DynamicObject creator = supplier.getDynamicObject("creator");//创建人
							 | 
						||
| 
								 | 
							
								                if(creator != null){
							 | 
						||
| 
								 | 
							
								                    String emailAddress = creator.getString("email");//创建人邮箱
							 | 
						||
| 
								 | 
							
								                    if(StringUtils.isNotBlank(emailAddress)){
							 | 
						||
| 
								 | 
							
								                        String warnStr = "供应商【编码:"+number+",名称:"+name+"】证照到期提醒:"+ sb;
							 | 
						||
| 
								 | 
							
								                        EmailUtils.sendEmail(emailAddress, warnStr, "供应商证照到期提醒");
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        //注册证
							 | 
						||
| 
								 | 
							
								        DynamicObject[] tqq9_registration = BusinessDataServiceHelper.load("tqq9_registration",
							 | 
						||
| 
								 | 
							
								                "id,number,name,tqq9_enddate,tqq9_validdays,creator.email",
							 | 
						||
| 
								 | 
							
								                new QFilter[]{f1, f2});
							 | 
						||
| 
								 | 
							
								        for (DynamicObject dynamicObject : tqq9_registration) {
							 | 
						||
| 
								 | 
							
								            String number = dynamicObject.getString("number");
							 | 
						||
| 
								 | 
							
								            String name = dynamicObject.getString("name");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            //商品注册证
							 | 
						||
| 
								 | 
							
								            Date tqq9_enddate = dynamicObject.getDate("tqq9_enddate");//失效日期
							 | 
						||
| 
								 | 
							
								            if (tqq9_enddate != null) {
							 | 
						||
| 
								 | 
							
								                int remainingDays = DateDifferenceCalculator.calculateRemainingDays(tqq9_enddate, currentDate);
							 | 
						||
| 
								 | 
							
								                dynamicObject.set("tqq9_validdays", remainingDays);
							 | 
						||
| 
								 | 
							
								                if(remainingDays <= warnDays){
							 | 
						||
| 
								 | 
							
								                    //商品注册证
							 | 
						||
| 
								 | 
							
								                    String warnStr = "商品注册证【编码:"+number+",名称:"+name+"】证照到期提醒:距离过期时间还剩余 " + remainingDays + " 天。";
							 | 
						||
| 
								 | 
							
								                    DynamicObject creator = dynamicObject.getDynamicObject("creator");
							 | 
						||
| 
								 | 
							
								                    if(creator != null){
							 | 
						||
| 
								 | 
							
								                        String emailAddress = creator.getString("email");
							 | 
						||
| 
								 | 
							
								                        EmailUtils.sendEmail(emailAddress, warnStr, "商品注册证到期提醒");
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        SaveServiceHelper.save(suppliers);
							 | 
						||
| 
								 | 
							
								        SaveServiceHelper.save(tqq9_registration);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 |