ContractServiceImpl.java 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. package cn.com.lzt.contract.service.impl;
  2. import cn.com.lzt.contract.entity.ContractEntity;
  3. import cn.com.lzt.contract.service.ContractServiceI;
  4. import cn.com.lzt.contractitem.entity.ContractItemEntity;
  5. import cn.com.lzt.contractpayrule.entity.ContractPayruleEntity;
  6. import org.jeecgframework.core.common.exception.BusinessException;
  7. import org.jeecgframework.core.common.service.impl.CommonServiceImpl;
  8. import org.jeecgframework.core.constant.Globals;
  9. import org.jeecgframework.core.util.DateUtils;
  10. import org.jeecgframework.core.util.MyBeanUtils;
  11. import org.jeecgframework.core.util.StringUtil;
  12. import org.jeecgframework.core.util.oConvertUtils;
  13. import org.springframework.stereotype.Service;
  14. import org.springframework.transaction.annotation.Transactional;
  15. import java.util.Date;
  16. import java.util.List;
  17. import java.util.UUID;
  18. @Service("contractService")
  19. @Transactional
  20. public class ContractServiceImpl extends CommonServiceImpl implements ContractServiceI {
  21. public <T> void delete(T entity) {
  22. super.delete(entity);
  23. //执行删除操作配置的sql增强
  24. this.doDelSql((ContractEntity)entity);
  25. }
  26. public void addMain(ContractEntity contract,
  27. List<ContractPayruleEntity> contractPayruleList,List<ContractItemEntity> contractItemList){
  28. //保存主信息
  29. this.save(contract);
  30. /**保存-支付条款*/
  31. for(ContractPayruleEntity contractPayrule:contractPayruleList){
  32. contractPayrule.setId(null);
  33. //外键设置
  34. contractPayrule.setContractid(contract.getId());
  35. this.save(contractPayrule);
  36. }
  37. /**保存-货品、服务明细*/
  38. for(ContractItemEntity contractItem:contractItemList){
  39. contractItem.setId(null);
  40. //外键设置
  41. contractItem.setContractid(contract.getId());
  42. this.save(contractItem);
  43. }
  44. //执行新增操作配置的sql增强
  45. this.doAddSql(contract);
  46. }
  47. public void updateMain(ContractEntity contract,
  48. List<ContractPayruleEntity> contractPayruleList,List<ContractItemEntity> contractItemList) {
  49. //保存主表信息
  50. if(StringUtil.isNotEmpty(contract.getId())){
  51. try {
  52. ContractEntity temp = findUniqueByProperty(ContractEntity.class, "id", contract.getId());
  53. MyBeanUtils.copyBeanNotNull2Bean(contract, temp);
  54. this.saveOrUpdate(temp);
  55. } catch (Exception e) {
  56. e.printStackTrace();
  57. }
  58. }else{
  59. this.saveOrUpdate(contract);
  60. }
  61. //===================================================================================
  62. //获取参数
  63. Object id0 = contract.getId();
  64. Object id1 = contract.getId();
  65. //===================================================================================
  66. //1.查询出数据库的明细数据-支付条款
  67. String hql0 = "from ContractPayruleEntity where 1 = 1 AND cONTRACTID =? ";
  68. List<ContractPayruleEntity> contractPayruleOldList = this.findHql(hql0,id0);
  69. //2.筛选更新明细数据-支付条款
  70. if(contractPayruleList!=null&&contractPayruleList.size()>0){
  71. for(ContractPayruleEntity oldE:contractPayruleOldList){
  72. boolean isUpdate = false;
  73. for(ContractPayruleEntity sendE:contractPayruleList){
  74. //需要更新的明细数据-支付条款
  75. if(oldE.getId().equals(sendE.getId())){
  76. try {
  77. MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
  78. this.saveOrUpdate(oldE);
  79. } catch (Exception e) {
  80. e.printStackTrace();
  81. throw new BusinessException(e.getMessage());
  82. }
  83. isUpdate= true;
  84. break;
  85. }
  86. }
  87. if(!isUpdate){
  88. //如果数据库存在的明细,前台没有传递过来则是删除-支付条款
  89. super.delete(oldE);
  90. }
  91. }
  92. //3.持久化新增的数据-支付条款
  93. for(ContractPayruleEntity contractPayrule:contractPayruleList){
  94. if(oConvertUtils.isEmpty(contractPayrule.getId())){
  95. //支付期间、支付金额、支付比例都为空时,则此行不保存
  96. if(oConvertUtils.isEmpty(contractPayrule.getPayperiod())
  97. && oConvertUtils.getDou(contractPayrule.getAmount(),0) == 0
  98. && oConvertUtils.getDou(contractPayrule.getPercent(),0) == 0)
  99. continue;
  100. //外键设置
  101. contractPayrule.setContractid(contract.getId());
  102. this.save(contractPayrule);
  103. }
  104. }
  105. }
  106. //===================================================================================
  107. //1.查询出数据库的明细数据-货品、服务明细
  108. String hql1 = "from ContractItemEntity where 1 = 1 AND cONTRACTID =? ";
  109. List<ContractItemEntity> contractItemOldList = this.findHql(hql1,id1);
  110. //2.筛选更新明细数据-货品、服务明细
  111. if(contractItemList!=null&&contractItemList.size()>0){
  112. for(ContractItemEntity oldE:contractItemOldList){
  113. boolean isUpdate = false;
  114. for(ContractItemEntity sendE:contractItemList){
  115. //需要更新的明细数据-货品、服务明细
  116. if(oldE.getId().equals(sendE.getId())){
  117. try {
  118. MyBeanUtils.copyBeanNotNull2Bean(sendE,oldE);
  119. this.saveOrUpdate(oldE);
  120. } catch (Exception e) {
  121. e.printStackTrace();
  122. throw new BusinessException(e.getMessage());
  123. }
  124. isUpdate= true;
  125. break;
  126. }
  127. }
  128. if(!isUpdate){
  129. //如果数据库存在的明细,前台没有传递过来则是删除-货品、服务明细
  130. super.delete(oldE);
  131. }
  132. }
  133. //3.持久化新增的数据-货品、服务明细
  134. for(ContractItemEntity contractItem:contractItemList){
  135. if(oConvertUtils.isEmpty(contractItem.getId())){
  136. //外键设置
  137. contractItem.setContractid(contract.getId());
  138. this.save(contractItem);
  139. }
  140. }
  141. }
  142. //执行更新操作配置的sql增强
  143. this.doUpdateSql(contract);
  144. }
  145. public void delMain(ContractEntity contract) {
  146. //删除主表信息
  147. this.delete(contract);
  148. //===================================================================================
  149. //获取参数
  150. Object id0 = contract.getId();
  151. Object id1 = contract.getId();
  152. //===================================================================================
  153. //删除-支付条款
  154. String hql0 = "from ContractPayruleEntity where 1 = 1 AND cONTRACTID =? ";
  155. List<ContractPayruleEntity> contractPayruleOldList = this.findHql(hql0,id0);
  156. this.deleteAllEntitie(contractPayruleOldList);
  157. //===================================================================================
  158. //删除-货品、服务明细
  159. String hql1 = "from ContractItemEntity where 1 = 1 AND cONTRACTID =? ";
  160. List<ContractItemEntity> contractItemOldList = this.findHql(hql1,id1);
  161. this.deleteAllEntitie(contractItemOldList);
  162. }
  163. /**
  164. * 默认按钮-sql增强-新增操作
  165. * @param id
  166. * @return
  167. */
  168. public boolean doAddSql(ContractEntity t){
  169. return true;
  170. }
  171. /**
  172. * 默认按钮-sql增强-更新操作
  173. * @param id
  174. * @return
  175. */
  176. public boolean doUpdateSql(ContractEntity t){
  177. return true;
  178. }
  179. /**
  180. * 默认按钮-sql增强-删除操作
  181. * @param id
  182. * @return
  183. */
  184. public boolean doDelSql(ContractEntity t){
  185. return true;
  186. }
  187. /**
  188. * 替换sql中的变量
  189. * @param sql
  190. * @return
  191. */
  192. public String replaceVal(String sql,ContractEntity t){
  193. sql = sql.replace("#{id}",String.valueOf(t.getId()));
  194. sql = sql.replace("#{create_name}",String.valueOf(t.getCreateName()));
  195. sql = sql.replace("#{create_by}",String.valueOf(t.getCreateBy()));
  196. sql = sql.replace("#{create_date}",String.valueOf(t.getCreateDate()));
  197. sql = sql.replace("#{update_name}",String.valueOf(t.getUpdateName()));
  198. sql = sql.replace("#{update_by}",String.valueOf(t.getUpdateBy()));
  199. sql = sql.replace("#{update_date}",String.valueOf(t.getUpdateDate()));
  200. sql = sql.replace("#{sys_org_code}",String.valueOf(t.getSysOrgCode()));
  201. sql = sql.replace("#{bpm_status}",String.valueOf(t.getBpmStatus()));
  202. sql = sql.replace("#{type}",String.valueOf(t.getType()));
  203. sql = sql.replace("#{code}",String.valueOf(t.getCode()));
  204. sql = sql.replace("#{name}",String.valueOf(t.getName()));
  205. sql = sql.replace("#{signdate}",String.valueOf(t.getSigndate()));
  206. sql = sql.replace("#{description}",String.valueOf(t.getDescription()));
  207. sql = sql.replace("#{totalamount}",String.valueOf(t.getTotalamount()));
  208. sql = sql.replace("#{totalinvoice}",String.valueOf(t.getTotalinvoice()));
  209. sql = sql.replace("#{totalpayment}",String.valueOf(t.getTotalpayment()));
  210. sql = sql.replace("#{totalincome}",String.valueOf(t.getTotalincome()));
  211. sql = sql.replace("#{startdate}",String.valueOf(t.getStartdate()));
  212. sql = sql.replace("#{enddate}",String.valueOf(t.getEnddate()));
  213. sql = sql.replace("#{auditdate}",String.valueOf(t.getAuditdate()));
  214. sql = sql.replace("#{busstatus}",String.valueOf(t.getBusstatus()));
  215. sql = sql.replace("#{partnerid}",String.valueOf(t.getPartnerid()));
  216. sql = sql.replace("#{projectid}",String.valueOf(t.getProjectid()));
  217. sql = sql.replace("#{thirdpartner}",String.valueOf(t.getThirdpartner()));
  218. sql = sql.replace("#{UUID}",UUID.randomUUID().toString());
  219. return sql;
  220. }
  221. @Override
  222. public void doActive() {
  223. String doActiveSQL = "update t_b_contract set busstatus =? where left(startdate,10) <=? and busstatus = ? ";
  224. executeSql(doActiveSQL, Globals.CONTRACT_STATUS_ACTIVE,DateUtils.date_sdf.format(new Date()),Globals.CONTRACT_STATUS_SIGN);
  225. String doUnActiveSQL = "update t_b_contract set busstatus =? where left(enddate,10) <=? and busstatus = ? ";
  226. executeSql(doUnActiveSQL, Globals.CONTRACT_STATUS_EXPIRY,DateUtils.date_sdf.format(new Date()),Globals.CONTRACT_STATUS_ACTIVE);
  227. }
  228. }