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.message.api.EmailInfo; import kd.bos.message.service.handler.EmailHandler; 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.bos.workflow.engine.msg.info.MessageAttachment; import kd.sdk.plugin.Plugin; import org.apache.commons.lang3.StringUtils; import tqq9.lc123.cloud.app.plugin.operate.sys.ValiddaysSavePlugin; 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.ArrayList; import java.util.Date; import java.util.List; import java.util.Map; import static kd.bos.mvc.form.TitleField.number; /** * 供应商、注册证证照时间到期时间计算并发送预警邮件 */ public class DaysRemaining extends AbstractTask implements Plugin { private final static Log logger = LogFactory.getLog(DaysRemaining.class); @Override public void execute(RequestContext requestContext, Map 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); } }