package cn.com.lzt.contract.service.impl; import cn.com.lzt.contract.entity.ContractEntity; import cn.com.lzt.contract.service.ContractServiceI; import cn.com.lzt.contractitem.entity.ContractItemEntity; import cn.com.lzt.contractpayrule.entity.ContractPayruleEntity; 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.DateUtils; import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.core.util.oConvertUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.List; import java.util.UUID; @Service("contractService") @Transactional public class ContractServiceImpl extends CommonServiceImpl implements ContractServiceI { public void delete(T entity) { super.delete(entity); //执行删除操作配置的sql增强 this.doDelSql((ContractEntity)entity); } public void addMain(ContractEntity contract, List contractPayruleList,List contractItemList){ //保存主信息 this.save(contract); /**保存-支付条款*/ for(ContractPayruleEntity contractPayrule:contractPayruleList){ contractPayrule.setId(null); //外键设置 contractPayrule.setContractid(contract.getId()); this.save(contractPayrule); } /**保存-货品、服务明细*/ for(ContractItemEntity contractItem:contractItemList){ contractItem.setId(null); //外键设置 contractItem.setContractid(contract.getId()); this.save(contractItem); } //执行新增操作配置的sql增强 this.doAddSql(contract); } public void updateMain(ContractEntity contract, List contractPayruleList,List contractItemList) { //保存主表信息 if(StringUtil.isNotEmpty(contract.getId())){ try { ContractEntity temp = findUniqueByProperty(ContractEntity.class, "id", contract.getId()); MyBeanUtils.copyBeanNotNull2Bean(contract, temp); this.saveOrUpdate(temp); } catch (Exception e) { e.printStackTrace(); } }else{ this.saveOrUpdate(contract); } //=================================================================================== //获取参数 Object id0 = contract.getId(); Object id1 = contract.getId(); //=================================================================================== //1.查询出数据库的明细数据-支付条款 String hql0 = "from ContractPayruleEntity where 1 = 1 AND cONTRACTID =? "; List contractPayruleOldList = this.findHql(hql0,id0); //2.筛选更新明细数据-支付条款 if(contractPayruleList!=null&&contractPayruleList.size()>0){ for(ContractPayruleEntity oldE:contractPayruleOldList){ boolean isUpdate = false; for(ContractPayruleEntity sendE:contractPayruleList){ //需要更新的明细数据-支付条款 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(ContractPayruleEntity contractPayrule:contractPayruleList){ if(oConvertUtils.isEmpty(contractPayrule.getId())){ //支付期间、支付金额、支付比例都为空时,则此行不保存 if(oConvertUtils.isEmpty(contractPayrule.getPayperiod()) && oConvertUtils.getDou(contractPayrule.getAmount(),0) == 0 && oConvertUtils.getDou(contractPayrule.getPercent(),0) == 0) continue; //外键设置 contractPayrule.setContractid(contract.getId()); this.save(contractPayrule); } } } //=================================================================================== //1.查询出数据库的明细数据-货品、服务明细 String hql1 = "from ContractItemEntity where 1 = 1 AND cONTRACTID =? "; List contractItemOldList = this.findHql(hql1,id1); //2.筛选更新明细数据-货品、服务明细 if(contractItemList!=null&&contractItemList.size()>0){ for(ContractItemEntity oldE:contractItemOldList){ boolean isUpdate = false; for(ContractItemEntity sendE:contractItemList){ //需要更新的明细数据-货品、服务明细 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(ContractItemEntity contractItem:contractItemList){ if(oConvertUtils.isEmpty(contractItem.getId())){ //外键设置 contractItem.setContractid(contract.getId()); this.save(contractItem); } } } //执行更新操作配置的sql增强 this.doUpdateSql(contract); } public void delMain(ContractEntity contract) { //删除主表信息 this.delete(contract); //=================================================================================== //获取参数 Object id0 = contract.getId(); Object id1 = contract.getId(); //=================================================================================== //删除-支付条款 String hql0 = "from ContractPayruleEntity where 1 = 1 AND cONTRACTID =? "; List contractPayruleOldList = this.findHql(hql0,id0); this.deleteAllEntitie(contractPayruleOldList); //=================================================================================== //删除-货品、服务明细 String hql1 = "from ContractItemEntity where 1 = 1 AND cONTRACTID =? "; List contractItemOldList = this.findHql(hql1,id1); this.deleteAllEntitie(contractItemOldList); } /** * 默认按钮-sql增强-新增操作 * @param id * @return */ public boolean doAddSql(ContractEntity t){ return true; } /** * 默认按钮-sql增强-更新操作 * @param id * @return */ public boolean doUpdateSql(ContractEntity t){ return true; } /** * 默认按钮-sql增强-删除操作 * @param id * @return */ public boolean doDelSql(ContractEntity t){ return true; } /** * 替换sql中的变量 * @param sql * @return */ public String replaceVal(String sql,ContractEntity 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("#{bpm_status}",String.valueOf(t.getBpmStatus())); sql = sql.replace("#{type}",String.valueOf(t.getType())); sql = sql.replace("#{code}",String.valueOf(t.getCode())); sql = sql.replace("#{name}",String.valueOf(t.getName())); sql = sql.replace("#{signdate}",String.valueOf(t.getSigndate())); sql = sql.replace("#{description}",String.valueOf(t.getDescription())); sql = sql.replace("#{totalamount}",String.valueOf(t.getTotalamount())); sql = sql.replace("#{totalinvoice}",String.valueOf(t.getTotalinvoice())); sql = sql.replace("#{totalpayment}",String.valueOf(t.getTotalpayment())); sql = sql.replace("#{totalincome}",String.valueOf(t.getTotalincome())); sql = sql.replace("#{startdate}",String.valueOf(t.getStartdate())); sql = sql.replace("#{enddate}",String.valueOf(t.getEnddate())); sql = sql.replace("#{auditdate}",String.valueOf(t.getAuditdate())); sql = sql.replace("#{busstatus}",String.valueOf(t.getBusstatus())); sql = sql.replace("#{partnerid}",String.valueOf(t.getPartnerid())); sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid())); sql = sql.replace("#{thirdpartner}",String.valueOf(t.getThirdpartner())); sql = sql.replace("#{UUID}",UUID.randomUUID().toString()); return sql; } @Override public void doActive() { String doActiveSQL = "update t_b_contract set busstatus =? where left(startdate,10) <=? and busstatus = ? "; executeSql(doActiveSQL, Globals.CONTRACT_STATUS_ACTIVE,DateUtils.date_sdf.format(new Date()),Globals.CONTRACT_STATUS_SIGN); String doUnActiveSQL = "update t_b_contract set busstatus =? where left(enddate,10) <=? and busstatus = ? "; executeSql(doUnActiveSQL, Globals.CONTRACT_STATUS_EXPIRY,DateUtils.date_sdf.format(new Date()),Globals.CONTRACT_STATUS_ACTIVE); } }