package cn.com.lzt.maintainplan.service.impl; import cn.com.lzt.maintainplan.entity.MaintainPlanEntity; import cn.com.lzt.maintainplan.service.MaintainPlanServiceI; import cn.com.lzt.maintainplanprojserv.entity.MaintainPlanProjservEntity; import cn.com.lzt.maintainplantimes.entity.MaintainPlanTimesEntity; import org.apache.commons.collections.list.SetUniqueList; import org.apache.commons.lang.xwork.StringUtils; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.service.impl.CommonServiceImpl; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.oConvertUtils; import org.jeecgframework.p3.core.common.utils.DateUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; @Service("maintainPlanService") @Transactional public class MaintainPlanServiceImpl extends CommonServiceImpl implements MaintainPlanServiceI { public void delete(T entity) { super.delete(entity); //执行删除操作配置的sql增强 this.doDelSql((MaintainPlanEntity)entity); } public void addMain(MaintainPlanEntity maintainPlan, List maintainPlanProjservList,List maintainPlanTimesList){ //保存主信息 String code = com.xcgl.utils.OrderNumTools.generateNextBillCode(Globals.CODE_PREFIX_MAINTAINPLAN,"t_b_maintain_plan","code",4); maintainPlan.setCode(code); maintainPlan.setIsNotice(Globals.NO); setMaintainMonth(maintainPlan,maintainPlanTimesList); this.save(maintainPlan); /**保存-供方服务计划服务明细*/ for(MaintainPlanProjservEntity maintainPlanProjserv:maintainPlanProjservList){ //外键设置 maintainPlanProjserv.setMaintainid(maintainPlan.getId()); this.save(maintainPlanProjserv); } /**保存-供方服务计划时间明细*/ for(MaintainPlanTimesEntity maintainPlanTimes:maintainPlanTimesList){ //外键设置 maintainPlanTimes.setMaintainplanid(maintainPlan.getId()); maintainPlanTimes.setIsGenTask(Globals.NO); this.save(maintainPlanTimes); } //执行新增操作配置的sql增强 this.doAddSql(maintainPlan); } public void updateMain(MaintainPlanEntity maintainPlan, List maintainPlanProjservList,List maintainPlanTimesList) { //保存主表信息 if(StringUtil.isNotEmpty(maintainPlan.getId())){ try { MaintainPlanEntity temp = findUniqueByProperty(MaintainPlanEntity.class, "id", maintainPlan.getId()); MyBeanUtils.copyBeanNotNull2Bean(maintainPlan, temp); if(maintainPlan.getContractStartDate()==null){ temp.setContractStartDate(null); } if(maintainPlan.getContractEndDate()==null){ temp.setContractEndDate(null); } setMaintainMonth(temp,maintainPlanTimesList); this.saveOrUpdate(temp); } catch (Exception e) { e.printStackTrace(); } }else{ this.saveOrUpdate(maintainPlan); } //=================================================================================== //获取参数 Object id0 = maintainPlan.getId(); Object id1 = maintainPlan.getId(); //=================================================================================== //1.查询出数据库的明细数据-供方服务计划服务明细 String hql0 = "from MaintainPlanProjservEntity where 1 = 1 AND mAINTAINID =? "; List maintainPlanProjservOldList = this.findHql(hql0,id0); //2.筛选更新明细数据-供方服务计划服务明细 if(maintainPlanProjservList!=null&&maintainPlanProjservList.size()>0){ for(MaintainPlanProjservEntity oldE:maintainPlanProjservOldList){ boolean isUpdate = false; for(MaintainPlanProjservEntity sendE:maintainPlanProjservList){ //需要更新的明细数据-供方服务计划服务明细 if(oldE.getId().equals(sendE.getId())){ try { MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE); this.saveOrUpdate(oldE); } catch (Exception e) { e.printStackTrace(); throw new BusinessException(e.getMessage()); } isUpdate= true; break; } } if(!isUpdate){ //如果数据库存在的明细,前台没有传递过来则是删除-供方服务计划服务明细 super.delete(oldE); } } //3.持久化新增的数据-供方服务计划服务明细 for(MaintainPlanProjservEntity maintainPlanProjserv:maintainPlanProjservList){ if(oConvertUtils.isEmpty(maintainPlanProjserv.getId())){ //外键设置 maintainPlanProjserv.setMaintainid(maintainPlan.getId()); this.save(maintainPlanProjserv); } } } //=================================================================================== //1.查询出数据库的明细数据-供方服务计划时间明细 String hql1 = "from MaintainPlanTimesEntity where 1 = 1 AND mAINTAINPLANID =? "; List maintainPlanTimesOldList = this.findHql(hql1,id1); //2.筛选更新明细数据-供方服务计划时间明细 if(maintainPlanTimesList!=null&&maintainPlanTimesList.size()>0){ for(MaintainPlanTimesEntity oldE:maintainPlanTimesOldList){ boolean isUpdate = false; for(MaintainPlanTimesEntity sendE:maintainPlanTimesList){ //需要更新的明细数据-供方服务计划时间明细 if(oldE.getId().equals(sendE.getId())){ try { MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE); this.saveOrUpdate(oldE); } catch (Exception e) { e.printStackTrace(); throw new BusinessException(e.getMessage()); } isUpdate= true; break; } } if(!isUpdate){ //如果数据库存在的明细,前台没有传递过来则是删除-供方服务计划时间明细 super.delete(oldE); } } //3.持久化新增的数据-供方服务计划时间明细 for(MaintainPlanTimesEntity maintainPlanTimes:maintainPlanTimesList){ if(oConvertUtils.isEmpty(maintainPlanTimes.getId())){ //外键设置 maintainPlanTimes.setMaintainplanid(maintainPlan.getId()); maintainPlanTimes.setIsGenTask(Globals.NO); this.save(maintainPlanTimes); } } } //执行更新操作配置的sql增强 this.doUpdateSql(maintainPlan); } public void delMain(MaintainPlanEntity maintainPlan) { //删除主表信息 this.delete(maintainPlan); //=================================================================================== //获取参数 Object id0 = maintainPlan.getId(); Object id1 = maintainPlan.getId(); //=================================================================================== //删除-供方服务计划服务明细 String hql0 = "from MaintainPlanProjservEntity where 1 = 1 AND mAINTAINID =? "; List maintainPlanProjservOldList = this.findHql(hql0,id0); this.deleteAllEntitie(maintainPlanProjservOldList); //=================================================================================== //删除-供方服务计划时间明细 String hql1 = "from MaintainPlanTimesEntity where 1 = 1 AND mAINTAINPLANID =? "; List maintainPlanTimesOldList = this.findHql(hql1,id1); this.deleteAllEntitie(maintainPlanTimesOldList); } /** * 默认按钮-sql增强-新增操作 * @return */ public boolean doAddSql(MaintainPlanEntity t){ return true; } /** * 默认按钮-sql增强-更新操作 * @return */ public boolean doUpdateSql(MaintainPlanEntity t){ return true; } /** * 默认按钮-sql增强-删除操作 * @return */ public boolean doDelSql(MaintainPlanEntity t){ return true; } /** * 替换sql中的变量 * @param sql * @return */ public String replaceVal(String sql,MaintainPlanEntity 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("#{sys_org_code}",String.valueOf(t.getSysOrgCode())); sql = sql.replace("#{sys_company_code}",String.valueOf(t.getSysCompanyCode())); sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus())); sql = sql.replace("#{proc_inst_id}",String.valueOf(t.getProcInstId())); sql = sql.replace("#{step_name}",String.valueOf(t.getStepName())); sql = sql.replace("#{code}",String.valueOf(t.getCode())); sql = sql.replace("#{name}",String.valueOf(t.getName())); sql = sql.replace("#{servicetype}",String.valueOf(t.getServicetype())); sql = sql.replace("#{servicefrequ}",String.valueOf(t.getServicefrequ())); sql = sql.replace("#{relatedunitid}",String.valueOf(t.getRelatedunitid())); sql = sql.replace("#{relatedunitname}",String.valueOf(t.getRelatedunitname())); sql = sql.replace("#{daypermonth}",String.valueOf(t.getDaypermonth())); sql = sql.replace("#{dayperweek}",String.valueOf(t.getDayperweek())); sql = sql.replace("#{regulardate}",String.valueOf(t.getRegulardate())); sql = sql.replace("#{startdate}",String.valueOf(t.getStartdate())); sql = sql.replace("#{enddate}",String.valueOf(t.getEnddate())); sql = sql.replace("#{busistatus}",String.valueOf(t.getBusistatus())); sql = sql.replace("#{remark}",String.valueOf(t.getRemark())); sql = sql.replace("#{UUID}",UUID.randomUUID().toString()); return sql; } @Override public void processEnd(String id) { } //设置维保年度 、维保月度 private void setMaintainMonth(MaintainPlanEntity maintainPlan, List maintainPlanTimesList) { List years = SetUniqueList.decorate(new ArrayList()); List months = SetUniqueList.decorate(new ArrayList()); for(MaintainPlanTimesEntity timesEntity : maintainPlanTimesList){ Date start = timesEntity.getServicetimestart(); Date end = timesEntity.getServicetimeend(); Calendar c = Calendar.getInstance(); c.setTime(start); c.set(Calendar.DAY_OF_MONTH,1); do{ int year = c.get(Calendar.YEAR); years.add(String.valueOf(year)); months.add(DateUtil.formatDateTime(c.getTime(),"yyyy-MM")); c.add(Calendar.MONTH,1); }while(c.getTime().getTime()<=end.getTime()); } maintainPlan.setMaintainYear(StringUtils.join(years,",")); maintainPlan.setMaintainMonth(StringUtils.join(months,",")); maintainPlan.setContractId(StringUtils.trimToNull(maintainPlan.getContractId())); maintainPlan.setProjectServiceId(StringUtils.trimToNull(maintainPlan.getProjectServiceId())); } }