package com.xcgl.projecttask.service.impl; import cn.com.lzt.car.alarm.CarAlarmEntity; import cn.com.lzt.maintainbill.entity.MaintainBillEntity; import cn.com.lzt.message.send.entity.MMessageEntity; import cn.com.lzt.message.send.entity.MessageWxTemplateConfig; import cn.com.lzt.message.send.service.MMessageSendServiceI; import cn.com.lzt.tools.ServerType; import cn.com.lzt.useractiviti.socialinsurance.entity.TBActivitiUserSocialInsuranceEntity; import com.xcgl.projecttask.service.ProjecttaskServiceI; import com.xcgl.taskresult.entity.TaskResultEntity; import com.xcgl.utils.XcglConstant; import cn.com.lzt.maintainbill.service.MaintainBillServiceI; import com.xcgl.weeklyMeeting.entity.WeeklyMeetingEntity; import net.sf.json.JSONArray; import org.apache.commons.lang3.StringUtils; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.log4j.Logger; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import com.alibaba.fastjson.JSONObject; import com.xcgl.middleware.MiddleWareInfo; import com.xcgl.projecttask.entity.ProjecttaskEntity; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.*; import org.jeecgframework.web.system.pojo.base.TSUser; import org.jeecgframework.web.system.service.SystemService; import org.jeecgframework.web.system.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.text.SimpleDateFormat; import java.util.*; import java.io.Serializable; import java.nio.charset.Charset; import org.jeecgframework.web.cgform.enhance.CgformEnhanceJavaInter; @Service("projecttaskService") @Transactional public class ProjecttaskServiceImpl extends CommonServiceImpl implements ProjecttaskServiceI { @Autowired private MMessageSendServiceI mMessageSendService; @Autowired private UserService userService; private static final Logger logger = Logger.getLogger(ProjecttaskServiceImpl.class); public void delete(ProjecttaskEntity entity) throws Exception{ super.delete(entity); //执行删除操作增强业务 this.doDelBus(entity); } public Serializable save(ProjecttaskEntity entity) throws Exception{ Serializable t = super.save(entity); //执行新增操作增强业务 this.doAddBus(entity); return t; } public void saveOrUpdate(ProjecttaskEntity entity) throws Exception{ super.saveOrUpdate(entity); //执行更新操作增强业务 this.doUpdateBus(entity); } @Override public void afterDone(ProjecttaskEntity task,TaskResultEntity taskResult) { String sourceType = task.getSourcetype(); String taskType = task.getTasktype(); String sourceId = task.getSourceid(); if(StringUtils.equals(sourceType,"activititask") && StringUtils.equals(taskType,"user_social_insurance")){//社保公积金签报完任务成后,通知发起人 TBActivitiUserSocialInsuranceEntity entity = get(TBActivitiUserSocialInsuranceEntity.class,sourceId); TSUser createUser = userService.getUserByUserName(entity.getCreateBy()); String msgTitle="人事缴金专员已完成社保公积金签报任务"; mMessageSendService.msg(createUser, msgTitle); } if(StringUtils.equals(sourceType,"weeklymeeting")){ WeeklyMeetingEntity entity = get(WeeklyMeetingEntity.class,sourceId ); entity.setActualCompletion(new Date()); entity.setExecutionStatus(XcglConstant.TASKSTATUS_DONE); } /*if(StringUtils.equals(sourceType,"maintainbill")){//维保回写工作执行说明 MaintainBillEntity entity = get(MaintainBillEntity.class,sourceId); entity.setDescription(taskResult.getMemo()); }*/ } @Override public void sendMsg(ProjecttaskEntity task) { String owner = task.getOwner(); TSUser ownerUser = getEntity(TSUser.class, owner); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); ProjecttaskEntity.ExecuteWay executeWay = task.getExecuteWay(); Map userMsgParms = new HashMap(); String first = null; if(StringUtils.isNotBlank(task.getWxMsgTitle())){ first = task.getWxMsgTitle(); }else { first = "你好" + ownerUser.getRealName() + ",你有一个新工作"; } String k1 = null; if(StringUtils.isNotBlank(task.getWxTaskName())){ k1 = task.getWxTaskName(); }else { k1 = task.getName(); } userMsgParms.put("first", first); userMsgParms.put("keyword1", k1);//工作内容 userMsgParms.put("keyword2", format.format(new Date()));//创建时间 String url = null; String remark=task.getWxRemark(); if(StringUtils.isBlank(remark)) { remark = "任务时间:截止到 " + format.format(task.getPlanendtime()); } remark +="\r\n "; if (executeWay == ProjecttaskEntity.ExecuteWay.both) { url = "http://www.shenqin.work"; if(ServerType.getServerType()==ServerType.test){ String serverPath = ResourceUtil.getConfigByName(Globals.SERVER_WXMSG); url=serverPath; } url += "/h5/task.html?id=" + task.getId(); remark += "点击【详情】查看工作内容"; } else { remark += "请登录慧管理系统完成工作"; } userMsgParms.put("remark", remark); MessageWxTemplateConfig config = new MessageWxTemplateConfig(); config.setTemplateId(XcglConstant.TEMPLATE_WXMSG_TASK); config.setUserMsgParms(userMsgParms); config.setShowUrl(url!=null); mMessageSendService.sendMessage(Collections.singletonList(owner),url,null,null,config,new MMessageEntity.MessageSendWay[]{MMessageEntity.MessageSendWay.wx}); } @Override public String getMaxLocalCode(){ StringBuilder sb = new StringBuilder(); sb.append("SELECT code FROM p_projecttask where left(create_date,10) =? "); sb.append(" ORDER BY code DESC"); List> objMapList = findForJdbc(sb.toString(), DateUtils.date_sdf.format(new Date())); String returnCode = null; if(objMapList!=null && objMapList.size()>0){ returnCode = (String)objMapList.get(0).get("code"); } return returnCode; } /** * 新增操作增强业务 * @param t * @return */ private void doAddBus(ProjecttaskEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } /** * 更新操作增强业务 * @param t * @return */ private void doUpdateBus(ProjecttaskEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- if(t.getTaskstatus().equals(XcglConstant.TASKSTATUS_DONE)) { if(t.getTasktype().equals("maintainbill")) { MaintainBillServiceI maintainbillService = ApplicationContextUtil.getContext().getBean(MaintainBillServiceI.class); maintainbillService.afterTaskFinish(t); } } //-----------------java增强 end----------------------------- } /** * 删除操作增强业务 * @return */ private void doDelBus(ProjecttaskEntity t) throws Exception{ //-----------------sql增强 start---------------------------- //-----------------sql增强 end------------------------------ //-----------------java增强 start--------------------------- //-----------------java增强 end----------------------------- } private Map populationMap(ProjecttaskEntity t){ Map map = new HashMap(); map.put("id", t.getId()); map.put("create_name", t.getCreateName()); map.put("create_by", t.getCreateBy()); map.put("create_date", t.getCreateDate()); map.put("update_name", t.getUpdateName()); map.put("update_by", t.getUpdateBy()); map.put("update_date", t.getUpdateDate()); map.put("code", t.getCode()); map.put("name", t.getName()); map.put("description", t.getDescription()); map.put("taskplanid", t.getTaskplanid()); map.put("msgtime", t.getMsgtime()); map.put("planstarttime", t.getPlanstarttime()); map.put("planendtime", t.getPlanendtime()); map.put("exestarttime", t.getExestarttime()); map.put("exeendtime", t.getExeendtime()); map.put("owner", t.getOwner()); map.put("executer", t.getExecuter()); map.put("projectid", t.getProjectid()); map.put("taskstatus", t.getTaskstatus()); map.put("tasktype", t.getTasktype()); map.put("sourceid", t.getSourceid()); map.put("sourcetype", t.getSourcetype()); map.put("closemsg", t.getClosemsg()); return map; } /** * 替换sql中的变量 * @param sql * @param t * @return */ public String replaceVal(String sql,ProjecttaskEntity t){ sql = sql.replace("#{id}",String.valueOf(t.getId())); sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName())); sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy())); sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate())); sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName())); sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy())); sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate())); sql = sql.replace("#{code}",String.valueOf(t.getCode())); sql = sql.replace("#{name}",String.valueOf(t.getName())); sql = sql.replace("#{description}",String.valueOf(t.getDescription())); sql = sql.replace("#{taskplanid}",String.valueOf(t.getTaskplanid())); sql = sql.replace("#{msgtime}",String.valueOf(t.getMsgtime())); sql = sql.replace("#{planstarttime}",String.valueOf(t.getPlanstarttime())); sql = sql.replace("#{planendtime}",String.valueOf(t.getPlanendtime())); sql = sql.replace("#{exestarttime}",String.valueOf(t.getExestarttime())); sql = sql.replace("#{exeendtime}",String.valueOf(t.getExeendtime())); sql = sql.replace("#{owner}",String.valueOf(t.getOwner())); sql = sql.replace("#{executer}",String.valueOf(t.getExecuter())); sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid())); sql = sql.replace("#{taskstatus}",String.valueOf(t.getTaskstatus())); sql = sql.replace("#{tasktype}",String.valueOf(t.getTasktype())); sql = sql.replace("#{sourceid}",String.valueOf(t.getSourceid())); sql = sql.replace("#{sourcetype}",String.valueOf(t.getSourcetype())); sql = sql.replace("#{closemsg}",String.valueOf(t.getClosemsg())); sql = sql.replace("#{UUID}",UUID.randomUUID().toString()); return sql; } /** * 执行JAVA增强 */ private void executeJavaExtend(String cgJavaType,String cgJavaValue,Map data) throws Exception { if(StringUtil.isNotEmpty(cgJavaValue)){ Object obj = null; try { if("class".equals(cgJavaType)){ //因新增时已经校验了实例化是否可以成功,所以这块就不需要再做一次判断 obj = MyClassLoader.getClassByScn(cgJavaValue).newInstance(); }else if("spring".equals(cgJavaType)){ obj = ApplicationContextUtil.getContext().getBean(cgJavaValue); } if(obj instanceof CgformEnhanceJavaInter){ CgformEnhanceJavaInter javaInter = (CgformEnhanceJavaInter) obj; javaInter.execute("p_projecttask",data); } } catch (Exception e) { e.printStackTrace(); throw new Exception("执行JAVA增强出现异常!"); } } } }