ContractSaleServiceImpl.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. package cn.com.lzt.contractsale.service.impl;
  2. import cn.com.lzt.contractsale.entity.ContractSaleEntity;
  3. import cn.com.lzt.contractsale.service.ContractSaleServiceI;
  4. import cn.com.lzt.contractsaleitem.entity.ContractSaleItemEntity;
  5. import org.jeecgframework.core.common.exception.BusinessException;
  6. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  7. import org.jeecgframework.core.constant.Globals;
  8. import org.jeecgframework.core.util.DateUtils;
  9. import org.jeecgframework.core.util.MyBeanUtils;
  10. import org.jeecgframework.core.util.StringUtil;
  11. import org.jeecgframework.core.util.oConvertUtils;
  12. import org.springframework.stereotype.Service;
  13. import org.springframework.transaction.annotation.Transactional;
  14. import java.util.Date;
  15. import java.util.List;
  16. import java.util.UUID;
  17. @Service("contractSaleService")
  18. @Transactional
  19. public class ContractSaleServiceImpl extends CommonServiceImpl implements ContractSaleServiceI {
  20. public <T> void delete(T entity) {
  21. super.delete(entity);
  22. //执行删除操作配置的sql增强
  23. this.doDelSql((ContractSaleEntity)entity);
  24. }
  25. public void addMain(ContractSaleEntity contractSale,
  26. List<ContractSaleItemEntity> contractSaleItemList){
  27. //保存主信息
  28. this.save(contractSale);
  29. /**保存-服务明细*/
  30. for(ContractSaleItemEntity contractSaleItem:contractSaleItemList){
  31. //外键设置
  32. contractSaleItem.setContractid(contractSale.getId());
  33. this.save(contractSaleItem);
  34. }
  35. //执行新增操作配置的sql增强
  36. this.doAddSql(contractSale);
  37. }
  38. public void updateMain(ContractSaleEntity contractSale,
  39. List<ContractSaleItemEntity> contractSaleItemList) {
  40. //保存主表信息
  41. if(StringUtil.isNotEmpty(contractSale.getId())){
  42. try {
  43. ContractSaleEntity temp = findUniqueByProperty(ContractSaleEntity.class, "id", contractSale.getId());
  44. MyBeanUtils.copyBeanNotNull2Bean(contractSale, temp);
  45. this.saveOrUpdate(temp);
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. }else{
  50. this.saveOrUpdate(contractSale);
  51. }
  52. //===================================================================================
  53. //获取参数
  54. Object id0 = contractSale.getId();
  55. //===================================================================================
  56. //1.查询出数据库的明细数据-服务明细
  57. String hql0 = "from ContractSaleItemEntity where 1 = 1 AND cONTRACTID =? ";
  58. List<ContractSaleItemEntity> contractSaleItemOldList = this.findHql(hql0,id0);
  59. //2.筛选更新明细数据-服务明细
  60. if(contractSaleItemList!=null&&contractSaleItemList.size()>0){
  61. for(ContractSaleItemEntity oldE:contractSaleItemOldList){
  62. boolean isUpdate = false;
  63. for(ContractSaleItemEntity sendE:contractSaleItemList){
  64. //需要更新的明细数据-服务明细
  65. if(oldE.getId().equals(sendE.getId())){
  66. try {
  67. MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
  68. this.saveOrUpdate(oldE);
  69. } catch (Exception e) {
  70. e.printStackTrace();
  71. throw new BusinessException(e.getMessage());
  72. }
  73. isUpdate= true;
  74. break;
  75. }
  76. }
  77. if(!isUpdate){
  78. //如果数据库存在的明细,前台没有传递过来则是删除-服务明细
  79. super.delete(oldE);
  80. }
  81. }
  82. //3.持久化新增的数据-服务明细
  83. for(ContractSaleItemEntity contractSaleItem:contractSaleItemList){
  84. if(oConvertUtils.isEmpty(contractSaleItem.getId())){
  85. //外键设置
  86. contractSaleItem.setContractid(contractSale.getId());
  87. this.save(contractSaleItem);
  88. }
  89. }
  90. }
  91. //执行更新操作配置的sql增强
  92. this.doUpdateSql(contractSale);
  93. }
  94. public void delMain(ContractSaleEntity contractSale) {
  95. //删除主表信息
  96. this.delete(contractSale);
  97. //===================================================================================
  98. //获取参数
  99. Object id0 = contractSale.getId();
  100. //===================================================================================
  101. //删除-服务明细
  102. String hql0 = "from ContractSaleItemEntity where 1 = 1 AND cONTRACTID =? ";
  103. List<ContractSaleItemEntity> contractSaleItemOldList = this.findHql(hql0,id0);
  104. this.deleteAllEntitie(contractSaleItemOldList);
  105. }
  106. /**
  107. * 默认按钮-sql增强-新增操作
  108. * @param id
  109. * @return
  110. */
  111. public boolean doAddSql(ContractSaleEntity t){
  112. return true;
  113. }
  114. /**
  115. * 默认按钮-sql增强-更新操作
  116. * @param id
  117. * @return
  118. */
  119. public boolean doUpdateSql(ContractSaleEntity t){
  120. return true;
  121. }
  122. /**
  123. * 默认按钮-sql增强-删除操作
  124. * @param id
  125. * @return
  126. */
  127. public boolean doDelSql(ContractSaleEntity t){
  128. return true;
  129. }
  130. /**
  131. * 替换sql中的变量
  132. * @param sql
  133. * @return
  134. */
  135. public String replaceVal(String sql,ContractSaleEntity t){
  136. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  137. sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
  138. sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
  139. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  140. sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
  141. sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
  142. sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
  143. sql = sql.replace("#{sys_org_code}",String.valueOf(t.getSysOrgCode()));
  144. sql = sql.replace("#{sys_company_code}",String.valueOf(t.getSysCompanyCode()));
  145. sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
  146. sql = sql.replace("#{code}",String.valueOf(t.getCode()));
  147. sql = sql.replace("#{name}",String.valueOf(t.getName()));
  148. sql = sql.replace("#{type}",String.valueOf(t.getType()));
  149. sql = sql.replace("#{signdate}",String.valueOf(t.getSigndate()));
  150. sql = sql.replace("#{nextbiddingdate}",String.valueOf(t.getNextbiddingdate()));
  151. sql = sql.replace("#{startdate}",String.valueOf(t.getStartdate()));
  152. sql = sql.replace("#{enddate}",String.valueOf(t.getEnddate()));
  153. sql = sql.replace("#{totalamount}",String.valueOf(t.getTotalamount()));
  154. sql = sql.replace("#{totalinvoice}",String.valueOf(t.getTotalinvoice()));
  155. sql = sql.replace("#{totalincome}",String.valueOf(t.getTotalincome()));
  156. sql = sql.replace("#{servicecontent}",String.valueOf(t.getServicecontent()));
  157. sql = sql.replace("#{auditdate}",String.valueOf(t.getAuditdate()));
  158. sql = sql.replace("#{busstatus}",String.valueOf(t.getBusstatus()));
  159. sql = sql.replace("#{customerid}",String.valueOf(t.getCustomerid()));
  160. sql = sql.replace("#{customername}",String.valueOf(t.getCustomername()));
  161. sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid()));
  162. sql = sql.replace("#{projectname}",String.valueOf(t.getProjectname()));
  163. sql = sql.replace("#{paytype}",String.valueOf(t.getPaytype()));
  164. sql = sql.replace("#{description}",String.valueOf(t.getDescription()));
  165. sql = sql.replace("#{proc_inst_id}",String.valueOf(t.getProcInstId()));
  166. sql = sql.replace("#{step_name}",String.valueOf(t.getStepName()));
  167. sql = sql.replace("#{supplemental}",String.valueOf(t.getSupplemental()));
  168. sql = sql.replace("#{contractid}",String.valueOf(t.getContractid()));
  169. sql = sql.replace("#{addamount}",String.valueOf(t.getAddamount()));
  170. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  171. return sql;
  172. }
  173. @Override
  174. public void doActive() {
  175. String doActiveSQL = "update t_b_contract_sale set busstatus =? where left(startdate,10) <=? and busstatus = ? ";
  176. executeSql(doActiveSQL, Globals.CONTRACT_STATUS_ACTIVE,DateUtils.date_sdf.format(new Date()),Globals.CONTRACT_STATUS_SIGN);
  177. String doUnActiveSQL = "update t_b_contract_sale set busstatus = '8' where id in( select id from (\n" +
  178. " select sale.id from t_b_contract_sale sale \n" +
  179. " left join ( \n" +
  180. " select max(create_date) as create_date,contractid from t_b_contract_sale addi group by contractid) tmp on tmp.contractid = sale.id \n" +
  181. " left join t_b_contract_sale additional on additional.create_date = tmp.create_date and additional.contractid = tmp.contractid \n" +
  182. " where ((additional.enddate is null and left(sale.enddate,10) <= ?) or left(additional.enddate,10) <= ?)"
  183. + " and sale.busstatus = '2' and sale.type = '3') temp)";
  184. //刷新补充协议的状态
  185. String updateAdditionalSQL = "update t_b_contract_sale addi \n" +
  186. "left join t_b_contract_sale sale on sale.id = addi.contractid \n" +
  187. "set addi.busstatus = sale.busstatus \n" +
  188. "where addi.busstatus != sale.busstatus and addi.type = '4'";
  189. executeSql(doUnActiveSQL, DateUtils.date_sdf.format(new Date()),DateUtils.date_sdf.format(new Date()));
  190. executeSql(updateAdditionalSQL);
  191. }
  192. }