package com.yc.sdk.shopping.service; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.springframework.context.annotation.Scope; import org.springframework.dao.DataAccessException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Service; import com.yc.action.grid.GridUtils; import com.yc.sdk.shopping.entity.VoucherEntity; import com.yc.sdk.shopping.entity.VoucherThemeEntity; import com.yc.service.BaseService; @Service("VoucherImpl") @Scope("prototype") public class VoucherImpl extends BaseService implements VoucherIfc { @Override public VoucherEntity getVoucher(String code,String shopCcCode) { String sql = " set nocount on ; \n" + " declare @VoucherCode varchar(50) = "+GridUtils.prossSqlParm(code)+" \n" + " declare @ShopCcCode varchar(50) = "+GridUtils.prossSqlParm(shopCcCode)+" \n" + " select DocCode,VoucherCode,FromName,FromEmail,ToName,ToEmail, \n" + " VoucherThemeId,Message,Amount \n" + " from t710201H a \n " + " where VoucherCode = @VoucherCode and isnull(Status,0) = 1 and isnull(SODocCode,'') = '' \n" + " and (isnull(@ShopCcCode,'') = '' or a.ShopCcCode = @ShopCcCode ) \n" ; Map map = null ; VoucherEntity voucherEntity = null ; try { map = this.jdbcTemplate.queryForMap(sql) ; voucherEntity = this.getVoucherEntity( map); }catch(DataAccessException e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); throw e; } }catch(Exception e){ e.printStackTrace(); throw e; } return voucherEntity ; } private VoucherEntity getVoucherEntity( Map map) { VoucherEntity voucherEntity = null ; if (map != null && map.size() > 0) { voucherEntity = new VoucherEntity() ; voucherEntity.setVoucherDocCode(map.get("DocCode") == null ? "": (String)map.get("DocCode")); voucherEntity.setFromName(map.get("FromName") == null ? "": (String)map.get("FromName")); voucherEntity.setVoucherCode(map.get("VoucherCode") == null ? "": (String)map.get("VoucherCode")); voucherEntity.setFromEmail(map.get("FromEmail") == null ? "": (String)map.get("FromEmail")); voucherEntity.setToName(map.get("ToName") == null ? "": (String)map.get("ToName")); voucherEntity.setToEmail(map.get("ToEmail") == null ? "": (String)map.get("ToEmail").toString()); voucherEntity.setVoucherThemeId(map.get("VoucherThemeId") == null ? 0: (Integer)map.get("VoucherThemeId")); voucherEntity.setMessage(map.get("Message") == null ? "": (String)map.get("Message") ); voucherEntity.setAmount(map.get("Amount") == null ? 0: Double.parseDouble(map.get("Amount").toString())); } return voucherEntity ; } @Override public List getVoucherThemes(String shopCcCode) { List themeList = null ; String sql = " set nocount on ; \n" + " declare @ShopCcCode varchar(50) = "+GridUtils.prossSqlParm(shopCcCode)+" \n" + " select VoucherThemeId ,Name " + " from t710204 a \n" + " where (isnull(@ShopCcCode,'') = '' or a.ShopCcCode = @ShopCcCode ) \n" + " order by Name \n"; try { List> list = this.jdbcTemplate.queryForList(sql) ; for (int i = 0 ; list != null && i < list.size();i++) { if (themeList == null) themeList = new ArrayList() ; Map map = list.get(i) ; VoucherThemeEntity voucherThemeEntity = new VoucherThemeEntity(); voucherThemeEntity.setVoucherThemeId(map.get("VoucherThemeId") == null?0 : (Integer)map.get("VoucherThemeId")); voucherThemeEntity.setVoucherThemeName(map.get("Name") == null?"": (String)map.get("Name")); themeList.add(voucherThemeEntity); } }catch(DataAccessException e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); throw e; } }catch(Exception e){ e.printStackTrace(); throw e; } return themeList; } @Override public VoucherEntity saveVoucherEntity(VoucherEntity voucherEntity,String userCode,String shopCcCode) { String sql = " set nocount on ; \n" + " declare @DocCode varchar(20),@DocDate datetime, @VoucherCode varchar(20),@MatCode varchar(50) ; \n" + " declare @UserCode varchar(20) ,@UserName varchar(50) ; \n" + " declare @FromName varchar(50) ; \n" + " declare @FromEmail varchar(50) ,@ToName varchar(50) ,@ToEmail varchar(50) ; \n" + " declare @VoucherThemeId int ,@Message varchar(500) ,@Amount money ; \n" + " select @UserCode = "+GridUtils.prossSqlParm(userCode)+" , @FromName = "+GridUtils.prossSqlParm(voucherEntity.getFromName()) +", @FromEmail = "+GridUtils.prossSqlParm(voucherEntity.getFromEmail())+", @ToName = "+GridUtils.prossSqlParm(voucherEntity.getToName()) +",@ToEmail = "+GridUtils.prossSqlParm(voucherEntity.getToEmail())+",@VoucherThemeId = "+voucherEntity.getVoucherThemeId() +",@Message = "+GridUtils.prossSqlParm(voucherEntity.getMessage())+",@Amount = "+voucherEntity.getAmount()+"; \n" + " declare @ShopCcCode varchar(50) = "+GridUtils.prossSqlParm(shopCcCode) +" \n" + " declare @CompanyId varchar(50),@CompanyName varchar(200),@cccode varchar(20),@ccName varchar(50) ;\n" + " declare @formid int = 710201 ;\n" + " select @MatCode = VoucherMatCode FROM t714001 a ; \n" + " if (isnull(@MatCode,'') = '' ) \n" + " begin \n" + " raiserror('请在714001功能号中定义【礼品券物料编号】',16,1) ; \n" + " return ; \n" + " end \n" + " if not exists(select 1 from t110503 a where a.MatCode = @MatCode) \n" + " begin \n" + " raiserror('【礼品券物料编号】【%s】不存在,请在714001功能号中重新定义【礼品券物料编号】',16,1,@MatCode) ; \n" + " return ; \n" + " end \n" + " select @CompanyId = CompanyId,@CompanyName = CompanyName ,@cccode=cccode,@ccName = ccname, \n" + " @UserName = UserName \n" + " from _sys_LoginUser \n" + " where UserCode = @UserCode \n" + " select @DocDate = convert(datetime,convert(varchar(10),GETDATE(),120) ) ; \n" + " exec sp_newdoccode @formid,@UserCode,@DocCode output ; \n" + " select @VoucherCode = dbo.fn_randompassword(6,6 ) ; \n" + " insert into t710201H (DocCode,FormID,DocDate,CompanyID,CompanyName, \n" + " DocStatus,EnterCode,EnterName,EnterDate,ModifyName,ModifyDate,cccode,ccName, \n" + " VoucherCode,FromName,FromEmail,ToName,ToEmail, \n" + " VoucherThemeId,Message,Amount ,Status,ShopCcCode) \n" + " values (@DocCode,@formid,@DocDate ,@CompanyID,@CompanyName, \n" + " 0,@usercode,@UserName,getdate(),@UserName,getdate(),@cccode,@ccName, \n" + " @VoucherCode,@FromName,@FromEmail,@ToName,@ToEmail, \n" + " @VoucherThemeId,@Message,@Amount,0 ,@ShopCcCode ) ; \n" + " select @DocCode as DocCode,@VoucherCode as VoucherCode,@MatCode as MatCode ; \n" ; try { Map map = this.jdbcTemplate.queryForMap(sql) ; voucherEntity.setVoucherDocCode(map.get("DocCode") == null ? "": (String)map.get("DocCode")); voucherEntity.setVoucherCode(map.get("VoucherCode") == null ? "": (String)map.get("VoucherCode")); voucherEntity.setMatCode(map.get("MatCode") == null ? "": (String)map.get("MatCode")); }catch(DataAccessException e ) { if (e instanceof EmptyResultDataAccessException){ return null ; }else { e.printStackTrace(); throw e; } }catch(Exception e){ e.printStackTrace(); throw e; } return voucherEntity ; } }