package com.sifang.modules.account.dao; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.sifang.modules.account.entity.CrmTraderAccount; import com.sifang.modules.sys.common.persistence.BaseDao; import com.sifang.modules.sys.common.persistence.Parameter; import com.sifang.modules.sys.common.utils.StringUtil; import com.sifang.modules.sys.util.LayuiPage; import com.sifang.modules.sys.util.SqlBuilder; import com.sifang.modules.taskdispatch.constant.ReviewDispatchConst; import org.hibernate.SQLQuery; import org.springframework.stereotype.Repository; import java.math.BigDecimal; import java.util.Date; import java.util.List; import java.util.Map; @Repository public class TraderAccountDao extends BaseDao { public int addSettleAmount(String traderId, BigDecimal settleAmount) { return Db.update("update crm_trader_account set settle_amount=settle_amount+? where trader_id=?", settleAmount, traderId); } public int addBasicQuotaAmountBalance(String traderId, BigDecimal amount) { return Db.update("update crm_trader_account set basic_quota_amount_balance=basic_quota_amount_balance+? where trader_id=?", amount, traderId); } public int addMaxQuotaAmountBalance(String traderId, BigDecimal amount) { return Db.update("update crm_trader_account set max_quota_amount_balance=max_quota_amount_balance+? where trader_id=?", amount, traderId); } public int addMaxQuotaAmountBalanceAll(String traderId, BigDecimal amount) { return Db.update("update crm_trader_account set basic_quota_amount_balance=basic_quota_amount_balance+?,max_quota_amount_balance=max_quota_amount_balance+? where trader_id=?",amount, amount, traderId); } /** * 查询代理商账户信息 */ public CrmTraderAccount findByTraderId(String traderId) { return getByHql("FROM CrmTraderAccount WHERE trader_id = :p1", new Parameter(traderId)); } /** * 账户列表 */ public List listTraderAccount(Map queryParams, LayuiPage page) { SqlBuilder builder = new SqlBuilder(); builder.line("select t.name as traderName, t.contacts, t.telephone, concat(t.province, t.city, t.area, t.address) as traderAddress,a.bzj_amount") .line(" ,TRUNCATE((a.bzj_amount),2) as bzjAmount,TRUNCATE((a.bond_amount_limit),2) as bondAmountLimit ") .line(" ,CAST(a.bzj_amount + a.yk_bzj_amount AS DECIMAL(10,2)) as bzjSum ") .line(", a.basic_quota_amount, a.basic_quota_amount_bzj, a.basic_quota_amount_balance, a.bond_amount_limit ") .line(", a.max_quota_amount, a.max_quota_amount_bzj, a.max_quota_amount_balance") .line(", a.settle_amount, a.settle_amount_ysjs, a.qa_amount, a.qa_amount_usable, a.qa_amount_freeze, a.qa_amount_incdec,a.settle_deduction_amount ") .line(" ,a.bond_amount_limit,a.trader_id"); if("1".equals(queryParams.get("formType"))){ //授信账号页面 builder.line(" , \n" + " IF((SELECT COUNT(o.id) FROM `crm_supply_material_deliver_order` o WHERE o.trader_id=t.id and o.type in('1','2') and status not in('0','10') and order_examine_status <> '0' ) <> 0, (SELECT COUNT(o.id) FROM `crm_supply_material_deliver_order` o WHERE o.trader_id=t.id and o.type in('1','2','4') and status not in('0','8','10') and order_examine_status in ('1','3') ),CAST(a.yk_deliver_total_capacity AS UNSIGNED)) as ifOne "); //判断是否是首发授信额 builder.line(" ,TRUNCATE((IFNULL(c.deliverTotalAmount,0)),2) as deliverTotalAmount,(TRUNCATE((IFNULL(b.yazTotalCapacity,0)*1.5),2 )) as yazTotalCapacity"); builder.line(" ,(TRUNCATE((IFNULL(b.ybwTotalCapacity,0)*1.5),2)) as ybwTotalCapacity, "); builder.line(" a.yk_bzj_amount, a.yk_deliver_total_capacity, a.yk_yaz_total_capacity , a.yk_ybw_total_capacity ,a.yk_tkl_total_capacity "); builder.line(" from crm_trader_account a "); builder.line(" left join (SELECT SUM(CASE WHEN e.material_fix_flag='1' THEN r.capacity ELSE 0 END) AS yazTotalCapacity, "); builder.line(" SUM(CASE WHEN e.first_generation_time is not null THEN r.capacity ELSE 0 END) AS ybwTotalCapacity,e.distributor_id "); builder.line(" FROM `crm_accepting_report` r LEFT JOIN `crm_customer_entry` e ON e.receiving_report_id=r.id "); builder.line(" WHERE e.material_fix_flag='1' AND e.status<>'b' GROUP BY e.distributor_id) as b on b.distributor_id =a.trader_id "); builder.line(" left join ( SELECT SUM(IFNULL(o.predict_amount,0)) AS deliverTotalAmount,o.trader_id FROM `crm_supply_material_deliver_order` o "); builder.line(" WHERE o.type in('1','2','4') AND o.order_examine_status in ('1','3') AND o.status not in ('0','8','10') GROUP BY o.trader_id ) as c on c.trader_id =a.trader_id"); builder.line("left join crm_trader t on a.trader_id=t.id"); builder.line("where 1=1"); appendListTraderCondition(builder, queryParams); builder.limit(page.getPage(), page.getLimit()); return Db.find(builder.build(), builder.params()); }else{ builder.line(", IFNULL(dk.dk_amount,0)as dk_amount, IFNULL(kc.kc_amount,0)as kc_amount "); } builder.line("from crm_trader_account a") .line("left join crm_trader t on a.trader_id=t.id") .line("LEFT JOIN ( SELECT sum( amount ) AS dk_amount, trader_id FROM crm_bond_apply WHERE STATUS = 3 AND adjust_type = 1 ) AS dk ON dk.trader_id = a.trader_id ") .line("LEFT JOIN ( SELECT sum( amount ) AS kc_amount, trader_id FROM crm_bond_apply WHERE STATUS = 3 AND adjust_type = 2 ) AS kc ON kc.trader_id = a.trader_id") .line("where 1=1"); appendListTraderCondition(builder, queryParams); builder.limit(page.getPage(), page.getLimit()); return Db.find(builder.build(), builder.params()); } public Long countTraderAccount(Map queryParams) { SqlBuilder builder = new SqlBuilder(); builder.line("select count(1)") .line("from crm_trader_account a") .line("left join crm_trader t on a.trader_id=t.id") .line("where 1=1"); appendListTraderCondition(builder, queryParams); return Db.queryLong(builder.build(), builder.params()); } private void appendListTraderCondition(SqlBuilder builder, Map queryParams){ if (StringUtil.checkParamValid(queryParams.get("traderName"))) { builder.like("and t.name like ?", queryParams.get("traderName").trim()); } if (StringUtil.checkParamValid(queryParams.get("traderIds"))) { builder.inst("and a.trader_id in ", queryParams.get("traderIds").split(",")); } if (StringUtil.checkParamValid(queryParams.get("traderId"))) { builder.line(" and a.trader_id = ? ",queryParams.get("traderId")); } } //获取代理商的账户 public CrmTraderAccount getAccountByTraderId(String traderId){ CrmTraderAccount account=findByTraderId(traderId); if(account==null){ account=new CrmTraderAccount(); account.setTraderId(traderId); account.setCreateTime(new Date()); } return account; } public Record getXsByTraderVsAccount(String traderId,String type){ String sql=" SELECT d.amount FROM `crm_account_set` s " + " LEFT JOIN `crm_account_set_details` d ON s.id=d.set_id " + " WHERE s.type=? AND ((range_tap='2' AND FIND_IN_SET(?,d.trader_id)) OR d.range_tap='1') ORDER BY d.range_tap DESC LIMIT 1 "; return Db.findFirst(sql,type,traderId); } public Record getBondDetail(String traderId){ StringBuffer sb=new StringBuffer(); sb.append(" SELECT IFNULL(SUM(CASE WHEN a.adjust_type='1' THEN a.amount ELSE 0 END ),0 )AS dkAmount , "); sb.append(" IFNULL(SUM(CASE WHEN a.adjust_type='2' THEN a.amount ELSE 0 END ),0) AS kkAmount , "); sb.append(" IFNULL(SUM(CASE WHEN a.adjust_type='3' THEN a.amount ELSE 0 END ),0) AS tkAmount, "); sb.append(" IFNULL(SUM(CASE WHEN a.adjust_type='4' THEN a.amount ELSE 0 END ),0) AS jsdkAmount "); sb.append(" FROM `crm_bond_apply` a WHERE a.trader_id=? "); return Db.findFirst(sb.toString(),traderId); } public void djsAccountChangeList(LayuiPage page, Map map){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT a.*,d.name as departmentName,DATE_FORMAT(a.finish_time,'%Y-%m-%d %H:%i:%s')AS finishTime "); sqlBuilder.line(" ,t.name AS traderName,DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s')AS createTime " ); sqlBuilder.line(" from ( SELECT a.id,a.apply_number,a.department_id,a.trader_id,'-1' AS adjust_type,a.out_cash AS amount, a.create_time,a.create_name,a.remarks,a.finish_time,'' AS power_station_code "); sqlBuilder.line(" FROM `crm_cash_out_apply` a WHERE a.status='3' and a.obj_type='0' "); sqlBuilder.line(" UNION ALL "); sqlBuilder.line(" SELECT a.id,a.apply_number,a.department_id,a.trader_id,a.adjust_type,a.amount, a.create_time,a.create_name,a.remarks,a.finish_time,e.power_station_code "); sqlBuilder.line(" FROM crm_settlement_amount_adjustment_apply a LEFT JOIN crm_customer_entry e ON e.id=a.entry_id WHERE a.status='3') as a "); sqlBuilder.line(" LEFT JOIN `crm_trader` t ON a.trader_id=t.id "); sqlBuilder.line(" LEFT JOIN `crm_department` d on d.id=a.department_id"); sqlBuilder.line(" where 1=1 "); getConditionMap(map, sqlBuilder); sqlBuilder.line(" ORDER BY create_time DESC"); if (page != null) { sqlBuilder.line(" limit " + page.getLimit() + " offset " + (page.getPage() - 1) * page.getLimit()); Long count = getDjsAccountChangeCount(map); page.setCount(count); } List list = Db.find(sqlBuilder.build(), sqlBuilder.params()); page.setData(list); } public Long getDjsAccountChangeCount(Map map){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT count(a.id) from ( SELECT a.id,a.trader_id,a.apply_number,'-1' AS adjust_type ,a.create_time,a.finish_time "); sqlBuilder.line(" FROM `crm_cash_out_apply` a WHERE a.status='3' and a.obj_type='0' "); sqlBuilder.line(" UNION ALL "); sqlBuilder.line(" SELECT a.id ,a.trader_id,a.apply_number,a.adjust_type,a.create_time,a.finish_time "); sqlBuilder.line(" FROM crm_settlement_amount_adjustment_apply a WHERE a.status='3') as a "); sqlBuilder.line(" where 1=1 "); getConditionMap(map, sqlBuilder); return Db.queryLong(sqlBuilder.build(), sqlBuilder.params()); } public void getConditionMap(Map map, SqlBuilder sf) { if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("traderId"))) { sf.inst(" AND a.trader_id in ", map.get("traderId").split(",")); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("applyNumber"))) { sf.like(" AND a.apply_number LIKE ? ", map.get("applyNumber")); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("adjustType"))) { // 0:启动,1:禁用 sf.line(" AND a.adjust_type = ? ", map.get("adjustType")); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("createTimeSta"))) { sf.line("AND a.create_time >= ?", map.get("createTimeSta") + " 00:00:00"); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("createTimeEnd"))) { sf.line("AND a.create_time <= ?", map.get("createTimeEnd") + " 23:59:59"); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("finishTimeMin"))) { sf.line("AND a.finish_time >= ?", map.get("finishTimeMin") + " 00:00:00"); } if (com.sifang.modules.sunshine.SystemSetting.utils.StringUtil.isNotBlank(map.get("finishTimeMax"))) { sf.line("AND a.finish_time <= ?", map.get("finishTimeMax") + " 23:59:59"); } } public void zbjAccountChangeLst(LayuiPage page, Map map){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT a.*,d.name as departmentName,DATE_FORMAT(a.finish_time,'%Y-%m-%d %H:%i:%s')AS finishTime "); sqlBuilder.line(" ,t.name AS traderName,DATE_FORMAT(a.create_time,'%Y-%m-%d %H:%i:%s')AS createTime " ); sqlBuilder.line(" from ( SELECT a.id,a.apply_number,a.department_id,a.trader_id,'-1' AS adjust_type,a.out_cash AS amount, a.create_time,a.create_name,a.remarks,a.finish_time "); sqlBuilder.line(" FROM `crm_cash_out_apply` a WHERE a.status='3' and a.obj_type='1' "); sqlBuilder.line(" UNION ALL "); sqlBuilder.line(" SELECT a.id,a.apply_number,a.department_id,a.trader_id,a.adjust_type,a.amount, a.create_time,a.create_name,a.remarks,a.finish_time "); sqlBuilder.line(" FROM crm_warranty_deposit_adjustment_apply a WHERE a.status='3') as a "); sqlBuilder.line(" LEFT JOIN `crm_trader` t ON a.trader_id=t.id "); sqlBuilder.line(" LEFT JOIN `crm_department` d on d.id=a.department_id"); sqlBuilder.line(" where 1=1 "); getConditionMap(map, sqlBuilder); sqlBuilder.line(" ORDER BY create_time DESC"); if (page != null) { sqlBuilder.line(" limit " + page.getLimit() + " offset " + (page.getPage() - 1) * page.getLimit()); Long count = zbjAccountChangeCount(map); page.setCount(count); } List list = Db.find(sqlBuilder.build(), sqlBuilder.params()); page.setData(list); } public Long zbjAccountChangeCount(Map map){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT count(a.id) from ( SELECT a.id,a.trader_id,a.apply_number,'-1' AS adjust_type ,a.create_time,a.finish_time "); sqlBuilder.line(" FROM `crm_cash_out_apply` a WHERE a.status='3' and a.obj_type='1' "); sqlBuilder.line(" UNION ALL "); sqlBuilder.line(" SELECT a.id ,a.trader_id,a.apply_number,a.adjust_type,a.create_time,a.finish_time "); sqlBuilder.line(" FROM crm_warranty_deposit_adjustment_apply a WHERE a.status='3') as a "); sqlBuilder.line(" where 1=1 "); getConditionMap(map, sqlBuilder); return Db.queryLong(sqlBuilder.build(), sqlBuilder.params()); } public Record countLimit(String traderId){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT IFNULL(t.bond_amount_limit,0) as bond_amount_limit,IFNULL(t.bzj_amount,0) as bzj_amount ,IFNULL(t.yk_bzj_amount,0) as ykBzjAmount "); sqlBuilder.line(" ,(SELECT SUM(CASE WHEN e.actual_capacity=0 THEN e.design_capacity ELSE e.actual_capacity END) AS totalCapacity "); sqlBuilder.line(" FROM `crm_customer_entry` e "); sqlBuilder.line(" WHERE e.distributor_id=? AND e.design_audit_flag in ('6','8','9') AND e.status<>'b' ) AS totalCapacity",traderId); sqlBuilder.line(" FROM `crm_trader_account` t WHERE t.`trader_id`=? ",traderId); return Db.findFirst(sqlBuilder.build(),sqlBuilder.params()); } public Record countLimitTwo(String traderId){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT IFNULL(t.bond_amount_limit,0) as bond_amount_limit,IFNULL(t.bzj_amount,0) as bzj_amount,(TRUNCATE((IFNULL(b.yazTotalCapacity,0)*1.5/10000),2)) as yazTotalCapacity "); sqlBuilder.line(" ,(TRUNCATE((IFNULL(b.ybwTotalCapacity,0)*1.5/10000),2)) as ybwTotalCapacity,IFNULL(c.deliverTotalAmount,0) as deliverTotalAmount"); sqlBuilder.line(" ,IFNULL(b.ybwTotalCapacity,0)*1.5 AS ybwTotalCapacity1,IFNULL(b.yazTotalCapacity,0)*1.5 AS yazTotalCapacity1 ,IFNULL(t.yk_bzj_amount,0) as ykBzjAmount, "); sqlBuilder.line(" \t IFNULL(t.yk_deliver_total_capacity,0) as yk_deliverTotalCapacity ,IFNULL(t.yk_yaz_total_capacity,0) as ykYazTotalCapacity ,IFNULL(t.yk_ybw_total_capacity,0) as ykYbwTotalCapacity ,IFNULL(t.yk_tkl_total_capacity,0) as ykTklTotalCapacity "); sqlBuilder.line(" FROM `crm_trader_account` t "); sqlBuilder.line(" JOIN (SELECT SUM(CASE WHEN e.material_fix_flag='1' THEN r.capacity ELSE 0 END) AS yazTotalCapacity, "); sqlBuilder.line(" SUM(CASE WHEN e.first_generation_time is not null THEN r.capacity ELSE 0 END) AS ybwTotalCapacity,e.distributor_id "); sqlBuilder.line(" FROM `crm_accepting_report` r LEFT JOIN `crm_customer_entry` e ON e.receiving_report_id=r.id "); sqlBuilder.line(" WHERE e.material_fix_flag='1' AND e.status<>'b' AND e.distributor_id=? ) AS b ",traderId); sqlBuilder.line(" JOIN ( SELECT SUM(IFNULL(o.predict_amount,0)) AS deliverTotalAmount,o.trader_id FROM `crm_supply_material_deliver_order` o "); sqlBuilder.line(" WHERE o.type in ('1','2','4') AND o.order_examine_status in ('1','3') AND o.status not in ('0','8','10') AND o.trader_id=? )AS c ",traderId); sqlBuilder.line(" WHERE t.`trader_id`=? ",traderId); return Db.findFirst(sqlBuilder.build(),sqlBuilder.params()); } public Record getEdSetRecord(String traderId,String type){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line(" SELECT d.amount,d.capacity_ratio,d.capacity_multiple,s.type FROM `crm_account_set` s "); sqlBuilder.line(" LEFT JOIN `crm_account_set_details` d ON s.id=d.set_id "); sqlBuilder.line(" WHERE s.type=? ",type); sqlBuilder.line(" AND (d.range_tap='1' OR(d.range_tap='2' AND FIND_IN_SET(?,d.trader_id))) ORDER BY d.range_tap DESC LIMIT 1 ",traderId); return Db.findFirst(sqlBuilder.build(),sqlBuilder.params()); } public int editAmount(String traderId,String type,String amount){ SqlBuilder sqlBuilder=new SqlBuilder(); sqlBuilder.line("update crm_trader_account"); // type 1 友夸初始保证金余额 2 友夸初始已发货金额 3 友夸初始已安装金额 4 友夸初始已并网金额 5 友夸初始阶段踏勘量金额 if (type.equals("1")){ sqlBuilder.line(" set yk_bzj_amount = ?",amount); }else if (type.equals("2")){ sqlBuilder.line(" set yk_deliver_total_capacity = ?",amount); }else if (type.equals("3")){ sqlBuilder.line(" set yk_yaz_total_capacity = ?",amount); }else if (type.equals("4")){ sqlBuilder.line(" set yk_ybw_total_capacity = ?",amount); }else if (type.equals("5")){ sqlBuilder.line(" set yk_tkl_total_capacity = ?",amount); } sqlBuilder.line("where trader_id = ?",traderId); return Db.update(sqlBuilder.build(),sqlBuilder.params()); } public List getListForExportExcel(Map queryParams){ SqlBuilder builder = new SqlBuilder(); builder.line("select t.name as traderName, t.contacts, t.telephone, concat(t.province, t.city, t.area, t.address) as traderAddress,a.bzj_amount") .line(" ,TRUNCATE((a.bzj_amount),2) as bzjAmount,TRUNCATE((a.bond_amount_limit),2) as bondAmountLimit ") .line(", a.basic_quota_amount, a.basic_quota_amount_bzj, a.basic_quota_amount_balance, a.bond_amount_limit ") .line(", a.max_quota_amount, a.max_quota_amount_bzj, a.max_quota_amount_balance") .line(", a.settle_amount, a.settle_amount_ysjs, a.qa_amount, a.qa_amount_usable, a.qa_amount_freeze, a.qa_amount_incdec,a.settle_deduction_amount ") .line(" ,a.bond_amount_limit,a.trader_id "); builder.line(" , \n" + " IF((SELECT COUNT(o.id) FROM `crm_supply_material_deliver_order` o WHERE o.trader_id=t.id and o.type in('1','2') and status not in('0','10') and order_examine_status <> '0' ) <> 0, (SELECT COUNT(o.id) FROM `crm_supply_material_deliver_order` o WHERE o.trader_id=t.id and o.type in('1','2','4') and status not in('0','8','10') and order_examine_status in ('1','3') ),CAST(a.yk_deliver_total_capacity AS UNSIGNED)) as ifOne "); //判断是否是首发授信额 builder.line(" ,TRUNCATE((IFNULL(c.deliverTotalAmount,0)),2) as deliverTotalAmount,(TRUNCATE((IFNULL(b.yazTotalCapacity,0)*1.5),2 )) as yazTotalCapacity"); builder.line(" ,(TRUNCATE((IFNULL(b.ybwTotalCapacity,0)*1.5),2)) as ybwTotalCapacity, "); builder.line(" a.yk_bzj_amount, a.yk_deliver_total_capacity, a.yk_yaz_total_capacity , a.yk_ybw_total_capacity ,a.yk_tkl_total_capacity "); builder.line(" from crm_trader_account a "); builder.line(" left join (SELECT SUM(CASE WHEN e.material_fix_flag='1' THEN r.capacity ELSE 0 END) AS yazTotalCapacity, "); builder.line(" SUM(CASE WHEN e.first_generation_time is not null THEN r.capacity ELSE 0 END) AS ybwTotalCapacity,e.distributor_id "); builder.line(" FROM `crm_accepting_report` r LEFT JOIN `crm_customer_entry` e ON e.receiving_report_id=r.id "); builder.line(" WHERE e.material_fix_flag='1' AND e.status<>'b' GROUP BY e.distributor_id) as b on b.distributor_id =a.trader_id "); builder.line(" left join ( SELECT SUM(IFNULL(o.predict_amount,0)) AS deliverTotalAmount,o.trader_id FROM `crm_supply_material_deliver_order` o "); builder.line(" WHERE o.type in('1','2','4') AND o.order_examine_status in ('1','3') AND o.status not in ('0','8','10') GROUP BY o.trader_id ) as c on c.trader_id =a.trader_id"); builder.line("left join crm_trader t on a.trader_id=t.id"); builder.line("where 1=1"); appendListTraderCondition(builder, queryParams); return Db.find(builder.build(), builder.params()); } public int updateBasicQuotaAmountBalance(BigDecimal balance,String id){ SqlBuilder sb = new SqlBuilder() .line(" update crm_trader_account set basic_quota_amount_balance = basic_quota_amount_balance + :balance ") .line(" where id=:id "); SQLQuery query = getSession().createSQLQuery(sb.build()); query.setParameter("balance", balance); query.setParameter("id", id); return query.executeUpdate(); } public int updateAccountSettleAmount(BigDecimal settleAmount,BigDecimal settleAmountYsjs ,BigDecimal settleRewardsPunishAmount,String id){ SqlBuilder sb = new SqlBuilder() .line(" update crm_trader_account set settle_amount = settle_amount + :settleAmount ,settle_amount_ysjs = settle_amount_ysjs + :settleAmountYsjs ,settle_rewards_punish_amount = settle_rewards_punish_amount - :settleRewardsPunishAmount ") .line(" where id=:id "); SQLQuery query = getSession().createSQLQuery(sb.build()); query.setParameter("settleAmount", settleAmount); query.setParameter("settleAmountYsjs", settleAmountYsjs); query.setParameter("settleRewardsPunishAmount", settleRewardsPunishAmount); query.setParameter("id", id); return query.executeUpdate(); } }