提交 | 用户 | age
|
bdf81b
|
1 |
package com.yc.MaintenanceFee.service.impl; |
X |
2 |
|
1e0503
|
3 |
import com.yc.MaintenanceFee.entiy.*; |
bdf81b
|
4 |
import com.yc.MaintenanceFee.service.InvoiceService; |
X |
5 |
import com.yc.MaintenanceFee.utils.ReceiptUtils; |
|
6 |
import com.yc.action.grid.GridUtils; |
|
7 |
import com.yc.service.BaseService; |
da667f
|
8 |
import org.apache.commons.lang3.StringUtils; |
a66342
|
9 |
import org.springframework.jdbc.core.BeanPropertyRowMapper; |
bdf81b
|
10 |
import org.springframework.stereotype.Service; |
X |
11 |
|
|
12 |
import java.util.List; |
|
13 |
import java.util.Map; |
1e0503
|
14 |
import java.util.regex.Matcher; |
X |
15 |
import java.util.regex.Pattern; |
bdf81b
|
16 |
|
X |
17 |
/** |
|
18 |
* 发票 |
|
19 |
* |
|
20 |
* @USER: xinyb_ |
|
21 |
* @DATE: 2022-03-07 09:15 |
|
22 |
*/ |
|
23 |
@Service |
|
24 |
public class InvoiceServiceImpl extends BaseService implements InvoiceService { |
|
25 |
/** |
|
26 |
* 获取已经在收款单生成发票单的信息(获取发票单) |
|
27 |
* |
|
28 |
* @return |
|
29 |
*/ |
|
30 |
@Override |
1e0503
|
31 |
public List<InvoiceInfo> getInvoiceInfo(String startDate, String endDate, String docCode, String dbId) throws Exception { |
bdf81b
|
32 |
try { |
X |
33 |
String sql = "set nocount on ; \n"; |
|
34 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n" + |
|
35 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + "\n"; |
081022
|
36 |
sql += " select a.DocCode,a.formId,a.EnterDate as DocDate,a.DocStatus,\n" + |
7ddb62
|
37 |
" case a.DocStatus when 0 then '已申请' when 100 then case when isnull(a.ReturnStatus,'') <> '' then isnull(a.ReturnStatus,'') else '已开票' end \n" + |
X |
38 |
" when 200 then '已退票' end as DocStatusName,\n" + |
|
39 |
" case when a.DocStatus = 100 and isnull(a.ReturnStatus,'') = '' then 1 else 0 end as isShowReturnButton,\n" + |
|
40 |
" a.CltCode,a.CltName,(case when isnull(a.invoiceMedium,'') = '' then '' else\n" + |
|
41 |
" case when a.invoiceMedium = 'PaperInvoice' then '纸质发票' else '电子发票' end end) as invoiceMedium ,\n" + |
|
42 |
" a.InvoiceType,a.billingNameType,a.taxpayerIdentificationNumber,a.billingName,\n" + |
bdf81b
|
43 |
" a.billingPropertyAddress,a.billingTel,a.billingOpeningBank,a.billingBankAccount,a.billingCompany,a.receivingName,\n" + |
a66342
|
44 |
" a.receivingTel,a.receivingAddress,a.sumTotalMoney2,a.sumNetMoney,a.sumVatMoney,b.vatRate,a.memo,b.docItem,a.refCode as matCode,b.matName,\n" + |
82d67a
|
45 |
" b.UOM,b.digit,b.price,b.totalMoney,b.totalMoney2,b.otherMoney,b.itemMemo,a.AmountRecemoney,b.netprice \n" + |
7ddb62
|
46 |
" from t150504H a \n" + |
X |
47 |
" join t150504D b on a.DocCode=b.docCode \n" + |
|
48 |
" where a.CltCode=@cltCode and b.refformid=120311"; |
1e0503
|
49 |
if (!StringUtils.isBlank(startDate)) { |
X |
50 |
sql += " and a.DocDate>=" + GridUtils.prossSqlParm(startDate); |
|
51 |
} |
|
52 |
if (!StringUtils.isBlank(endDate)) { |
|
53 |
sql += " and a.DocDate<=" + GridUtils.prossSqlParm(endDate); |
|
54 |
} |
|
55 |
if (!StringUtils.isBlank(docCode)) { |
|
56 |
sql += " and a.DocCode=" + GridUtils.prossSqlParm(docCode); |
|
57 |
} |
7ddb62
|
58 |
sql += " order by a.DocCode desc"; |
bdf81b
|
59 |
List<Map<String, Object>> list = super.jdbcTemplate.queryForList(sql); |
X |
60 |
return ReceiptUtils.getInvoiceInfoList(list); |
|
61 |
} catch (Exception e) { |
|
62 |
throw e; |
|
63 |
} |
|
64 |
} |
|
65 |
|
|
66 |
/** |
|
67 |
* 获取指定的发票单号信息 |
|
68 |
* |
|
69 |
* @param docCode |
|
70 |
* @return |
|
71 |
* @throws Exception |
|
72 |
*/ |
|
73 |
@Override |
|
74 |
public InvoiceInfo getInvoice(String docCode) throws Exception { |
|
75 |
try { |
081022
|
76 |
String sql = " select a.DocCode,a.formId,a.EnterDate as DocDate,a.DocStatus,\n" + |
7ddb62
|
77 |
" case a.DocStatus when 0 then '已申请' when 100 then case when isnull(a.ReturnStatus,'') <> '' then isnull(a.ReturnStatus,'') else '已开票' end \n" + |
X |
78 |
" when 200 then '已退票' end as DocStatusName,\n" + |
|
79 |
" case when a.DocStatus = 100 and isnull(a.ReturnStatus,'') = '' then 1 else 0 end as isShowReturnButton,\n" + |
|
80 |
"a.CltCode,a.CltName,(case when isnull(a.invoiceMedium,'') = '' then '' else\n" + |
|
81 |
" case when a.invoiceMedium = 'PaperInvoice' then '纸质发票' else '电子发票' end end) as invoiceMedium," + |
|
82 |
" a.InvoiceType,a.billingNameType,a.taxpayerIdentificationNumber,a.billingName,\n" + |
bdf81b
|
83 |
" a.billingPropertyAddress,a.billingTel,a.billingOpeningBank,a.billingBankAccount,a.billingCompany,a.receivingName,\n" + |
a66342
|
84 |
" a.receivingTel,a.receivingAddress,a.sumTotalMoney2,a.sumNetMoney,a.sumVatMoney,b.vatRate,a.memo,b.docItem,b.ShouKuanDoccode as matCode," + |
7ddb62
|
85 |
" (select EnterDate from t150101H where docCode = b.ShouKuanDoccode) as docTime,b.matName,\n" + |
41d07c
|
86 |
" b.UOM,b.digit,b.price,b.totalMoney,b.totalMoney2,b.otherMoney,b.itemMemo,a.AmountRecemoney,b.netprice,a.LogisticsCode,a.ShipperCode,\n" + |
X |
87 |
" (select ShipperName from t710165 where ShipperCode=a.ShipperCode) as ShipperName \n" + |
7ddb62
|
88 |
" from t150504H a \n" + |
bdf81b
|
89 |
" join t150504D b on a.DocCode=b.docCode where a.DocCode=" + GridUtils.prossSqlParm(docCode); |
X |
90 |
List<Map<String, Object>> list = super.jdbcTemplate.queryForList(sql); |
|
91 |
return ReceiptUtils.getInvoiceInfoList(list).get(0); |
|
92 |
} catch (Exception e) { |
|
93 |
throw e; |
|
94 |
} |
|
95 |
} |
|
96 |
|
|
97 |
/** |
1e0503
|
98 |
* 收款列表 |
3453fe
|
99 |
* |
1e0503
|
100 |
* @param startDate |
X |
101 |
* @param endDate |
|
102 |
* @param docCode |
|
103 |
* @param dbId |
|
104 |
* @return |
|
105 |
* @throws Exception |
|
106 |
*/ |
|
107 |
@Override |
|
108 |
public List<Collection> getCollection(String startDate, String endDate, String docCode, String dbId) throws Exception { |
|
109 |
try { |
a66342
|
110 |
// String sql = "set nocount on ; \n" + |
X |
111 |
// " declare @cltCode varchar(50) ,@cltName varchar(50),@DocCode varchar(20) ,@Description varchar(max)\n" + |
|
112 |
// " declare @table table(DocCode varchar(20) primary key,DocDate datetime,PostDate datetime,\n" + |
|
113 |
// " Amount money,BillableAmount money,Description varchar(max))\n" + |
|
114 |
// " select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=82\n" + |
|
115 |
// " insert into @table(DocCode ,DocDate ,PostDate ,Amount ,BillableAmount ,Description)\n" + |
|
116 |
// " select a.DocCode,a.DocDate,a.EnterDate ,b.Amount,\n" + |
|
117 |
// " b.BillableAmount,'' as Description\n" + |
|
118 |
// " from t150101H a \n" + |
|
119 |
// " join (select a.DocCode ,sum(isnull(b.Amount,0)) as Amount,\n" + |
|
120 |
// " sum(isnull(b.Amount,0) - isnull(b.BillingAmount,0)+isnull(b.ReturnBillingAmount,0)) as BillableAmount \n" + |
|
121 |
// " from t150101H a join t150101D b on b.DocCode=a.DocCode \n" + |
|
122 |
// " where a.cltCode=@cltCode and a.refformid=120311 and a.DocStatus=100 \n" + |
|
123 |
// " and isnull(b.Amount,0) - isnull(b.BillingAmount,0)+isnull(b.ReturnBillingAmount,0) > 0 \n" + |
|
124 |
// " group by a.DocCode ) b on a.DocCode = b.DocCode \n" + |
|
125 |
// " where a.cltCode=@cltCode"; |
|
126 |
// if (!StringUtils.isBlank(startDate)) { |
|
127 |
// sql += " and a.DocDate>=" + GridUtils.prossSqlParm(startDate); |
|
128 |
// } |
|
129 |
// if (!StringUtils.isBlank(endDate)) { |
|
130 |
// sql += " and a.DocDate<=" + GridUtils.prossSqlParm(endDate); |
|
131 |
// } |
|
132 |
// if (!StringUtils.isBlank(docCode)) { |
|
133 |
// sql += " and a.DocCode=" + GridUtils.prossSqlParm(docCode); |
|
134 |
// } |
|
135 |
// sql += "\n order by a.PostDate asc \n" + |
|
136 |
// " declare myInvoiceCur cursor for\n" + |
|
137 |
// " select DocCode from @table a \n" + |
|
138 |
// " open myInvoiceCur \n" + |
|
139 |
// " fetch next from myInvoiceCur into @DocCode \n" + |
|
140 |
// " while @@FETCH_STATUS = 0 \n" + |
|
141 |
// " begin \n" + |
|
142 |
// " set @Description = ''\n" + |
|
143 |
// " select @Description = case when isnull(@Description,'') <> '' then isnull(@Description,'') + ',' else '' end +\n" + |
|
144 |
// " isnull(c.MatName,'') + '/'+ cast(isnull(c.TotalMoney,0) as varchar(20)) +\n" + |
|
145 |
// " '*' + cast(c.Digit as varchar(20)) \n" + |
|
146 |
// " from t150101H a join t150101D b on b.DocCode=a.DocCode \n" + |
|
147 |
// " join t120301D c on c.doccode=b.SODoccode \n" + |
|
148 |
// " where a.cltCode=@cltCode and a.refformid=120311 and a.DocStatus=100 \n" + |
|
149 |
// " and isnull(b.Amount,0) - isnull(b.BillingAmount,0)+isnull(b.ReturnBillingAmount,0) > 0 \n" + |
|
150 |
// " and a.DocCode = @DocCode \n" + |
|
151 |
// " update a set Description = @Description from @table a where a.DocCode = @DocCode\n" + |
|
152 |
// " fetch next from myInvoiceCur into @DocCode \n" + |
|
153 |
// " end \n" + |
|
154 |
// " close myInvoiceCur\n" + |
|
155 |
// " deallocate myInvoiceCur\n" + |
|
156 |
// " select DocCode ,DocDate ,PostDate ,Amount ,BillableAmount ,Description \n" + |
|
157 |
// " from @table "; |
|
158 |
String sql = "set nocount on ; \n" + |
|
159 |
" declare @cltCode varchar(50) ,@cltName varchar(50),@DocCode varchar(20) ,@Description varchar(max)\n" + |
|
160 |
" declare @table table(DocCode varchar(20) primary key,DocDate datetime,PostDate datetime,\n" + |
|
161 |
" Amount money,BillableAmount money,Description varchar(max))\n" + |
|
162 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + " \n" + |
|
163 |
" insert into @table(DocCode ,DocDate ,PostDate ,Amount ,BillableAmount ,Description)\n" + |
|
164 |
" select a.DocCode,a.DocDate,a.EnterDate ,b.Amount,\n" + |
|
165 |
" b.BillableAmount,'' as Description\n" + |
|
166 |
" from t150101H a \n" + |
|
167 |
" join (select a.DocCode ,sum(isnull(b.Amount,0)) as Amount,\n" + |
|
168 |
" sum(isnull(b.Amount,0) - isnull(b.BillingAmount,0)+isnull(b.ReturnBillingAmount,0)) as BillableAmount \n" + |
|
169 |
" from t150101H a join t150101D b on b.DocCode=a.DocCode \n" + |
|
170 |
" where a.cltCode=@cltCode and a.refformid=120311 and a.DocStatus=100 \n" + |
|
171 |
" and isnull(b.Amount,0) - isnull(b.BillingAmount,0)+isnull(b.ReturnBillingAmount,0) > 0 \n" + |
|
172 |
" and not exists(select 1 from t150504D d join t150504H e on d.doccode = e.doccode \n" + |
|
173 |
" where b.DocCode = d.ShouKuanDoccode and b.rowid = d.ShouKuanRowid and e.DocStatus between 0 and 100 ) \n" + |
|
174 |
" group by a.DocCode ) b on a.DocCode = b.DocCode \n" + |
|
175 |
" where a.cltCode=@cltCode "; |
1e0503
|
176 |
if (!StringUtils.isBlank(startDate)) { |
X |
177 |
sql += " and a.DocDate>=" + GridUtils.prossSqlParm(startDate); |
|
178 |
} |
|
179 |
if (!StringUtils.isBlank(endDate)) { |
|
180 |
sql += " and a.DocDate<=" + GridUtils.prossSqlParm(endDate); |
|
181 |
} |
|
182 |
if (!StringUtils.isBlank(docCode)) { |
|
183 |
sql += " and a.DocCode=" + GridUtils.prossSqlParm(docCode); |
|
184 |
} |
a66342
|
185 |
sql += " \n order by a.PostDate asc \n" + |
X |
186 |
" declare myInvoiceCur cursor for\n" + |
|
187 |
" select DocCode from @table a \n" + |
|
188 |
" open myInvoiceCur \n" + |
|
189 |
" fetch next from myInvoiceCur into @DocCode \n" + |
|
190 |
" while @@FETCH_STATUS = 0 \n" + |
|
191 |
" begin \n" + |
|
192 |
" set @Description = ''\n" + |
|
193 |
" select @Description = case when isnull(@Description,'') <> '' then isnull(@Description,'') + ',' else '' end +\n" + |
|
194 |
" isnull(a.Description,'')\n" + |
|
195 |
" from t150101D a \t\n" + |
|
196 |
" where a.DocCode = @DocCode and isnull(a.Description,'') <> '' \n" + |
|
197 |
" update a set Description = @Description from @table a where a.DocCode = @DocCode\n" + |
|
198 |
" fetch next from myInvoiceCur into @DocCode \n" + |
|
199 |
" end \n" + |
|
200 |
" close myInvoiceCur\n" + |
|
201 |
" deallocate myInvoiceCur\n" + |
|
202 |
" select DocCode ,DocDate ,PostDate ,Amount ,BillableAmount ,Description \n" + |
|
203 |
" from @table\n"; |
|
204 |
List<Collection> list = super.jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Collection.class)); |
|
205 |
return list; |
1e0503
|
206 |
} catch (Exception e) { |
X |
207 |
throw e; |
|
208 |
} |
|
209 |
} |
|
210 |
|
|
211 |
/** |
bdf81b
|
212 |
* 收款单生成发票单(创建发票单) |
X |
213 |
* |
|
214 |
* @return |
|
215 |
*/ |
|
216 |
@Override |
3453fe
|
217 |
public String createInvoice(FPParam param) { |
bdf81b
|
218 |
try { |
3453fe
|
219 |
String docCode = String.join(",", param.getDocCode()); |
a66342
|
220 |
String sql = "set nocount on ; \n" + |
82d67a
|
221 |
"declare @docCode varchar(50) =" + GridUtils.prossSqlParm(docCode) + "," + |
7ddb62
|
222 |
" @invoiceMedium varchar(50) =" + GridUtils.prossSqlParm(param.getInvoiceMedium()) + "," + |
X |
223 |
" @seq int =" + param.getSeq() + ",@hdMemo varchar(200) = " + GridUtils.prossSqlParm(param.getHdMemo()) + "," + |
3453fe
|
224 |
" @userCode varchar(50) = " + GridUtils.prossSqlParm(param.getUserCode()) + "," + |
X |
225 |
" @userName varchar(50) = " + GridUtils.prossSqlParm(param.getUserName()) + "," + |
ab4cff
|
226 |
" @tel2 varchar(50) = " + GridUtils.prossSqlParm(param.getTel2()) + "," + |
X |
227 |
" @email varchar(200) = " + GridUtils.prossSqlParm(param.getEmail()) + "," + |
|
228 |
" @formid int = 150504, @linkdocinfo varchar(2000) = '',@Memo varchar(2000) = '' \n"; |
|
229 |
if (StringUtils.isNotBlank(param.getTel2()) && StringUtils.isNotBlank(param.getEmail())) { |
|
230 |
sql += " exec p150134 @doccode=@docCode,@formid=@formid,@usercode=@userCode,@username=@userName," + |
|
231 |
" @InvoiceMedium=@invoiceMedium,@seq=@seq,@HDmemo=@hdMemo,@Tel2=@tel2,@Email=@email," + |
|
232 |
" @Memo=@Memo output ,@linkdocinfo=@linkdocinfo output\n" + |
|
233 |
" select @linkdocinfo as fpCode"; |
|
234 |
} else { |
|
235 |
sql += " exec p150133 @doccode=@docCode,@formid=@formid,@usercode=@userCode,@username=@userName," + |
|
236 |
" @InvoiceMedium=@invoiceMedium,@seq=@seq,@HDmemo=@hdMemo,@Memo=@Memo output ,@linkdocinfo=@linkdocinfo output\n" + |
|
237 |
" select @linkdocinfo as fpCode"; |
|
238 |
} |
bdf81b
|
239 |
return super.jdbcTemplate.queryForObject(sql, String.class); |
X |
240 |
} catch (Exception e) { |
|
241 |
throw e; |
|
242 |
} |
|
243 |
} |
|
244 |
|
|
245 |
/** |
|
246 |
* 获取发票抬头信息 |
|
247 |
* |
|
248 |
* @param dbId |
|
249 |
* @return |
|
250 |
*/ |
|
251 |
@Override |
|
252 |
public Map<String, Object> getInvoiceHeader(String dbId) { |
|
253 |
try { |
|
254 |
String sql = "set nocount on ; \n"; |
|
255 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n" + |
|
256 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + "\n"; |
|
257 |
sql += " if isNull(@cltCode,0)=0\n" + |
|
258 |
" begin\n" + |
|
259 |
" raiserror('获取不到当前系统的客户编号(cltCode)',16,1)\n" + |
|
260 |
" return \n" + |
|
261 |
" end \n"; |
1e0503
|
262 |
sql += "select InvoiceType as invType,billingNameType,taxpayerIdentificationNumber,billingName,\n" + |
ab4cff
|
263 |
" billingPropertyAddress,billingTel,billingOpeningBank,billingBankAccount,tel2,email \n" + |
bdf81b
|
264 |
" from t110203 where cltCode=@cltCode"; |
X |
265 |
return super.jdbcTemplate.queryForMap(sql); |
|
266 |
} catch (Exception e) { |
|
267 |
throw e; |
|
268 |
} |
|
269 |
} |
|
270 |
|
|
271 |
/** |
|
272 |
* 编辑发票抬头信息 |
|
273 |
* |
|
274 |
* @param header |
|
275 |
* @return |
|
276 |
*/ |
|
277 |
@Override |
|
278 |
public Integer saveInvoiceHeader(Header header, String dbId) { |
|
279 |
try { |
|
280 |
String sql = "set nocount on ; \n"; |
|
281 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n" + |
|
282 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + "\n"; |
|
283 |
sql += " if isNull(@cltCode,0)=0\n" + |
|
284 |
" begin\n" + |
|
285 |
" raiserror('获取不到当前系统的客户编号(cltCode)',16,1)\n" + |
|
286 |
" return \n" + |
|
287 |
" end \n"; |
|
288 |
sql += " update a set a.InvoiceType=" + GridUtils.prossSqlParm(header.getInvType()) + "," + |
|
289 |
"a.billingNameType=" + GridUtils.prossSqlParm(header.getBillingNameType()) + "," + |
|
290 |
" a.taxpayerIdentificationNumber=" + GridUtils.prossSqlParm(header.getTaxpayerIdentificationNumber()) + "," + |
|
291 |
" a.billingName=" + GridUtils.prossSqlParm(header.getBillingName()) + ",\n" + |
|
292 |
" a.billingPropertyAddress=" + GridUtils.prossSqlParm(header.getBillingPropertyAddress()) + "," + |
|
293 |
" a.billingTel=" + GridUtils.prossSqlParm(header.getBillingTel()) + "," + |
|
294 |
" a.billingOpeningBank=" + GridUtils.prossSqlParm(header.getBillingOpeningBank()) + "," + |
|
295 |
" a.billingBankAccount=" + GridUtils.prossSqlParm(header.getBillingBankAccount()) + "\n" + |
|
296 |
" from t110203 a where a.cltCode=@cltCode \n" + |
|
297 |
" select 1 \n"; |
|
298 |
return super.jdbcTemplate.queryForObject(sql, Integer.class); |
|
299 |
} catch (Exception e) { |
|
300 |
throw e; |
|
301 |
} |
|
302 |
|
|
303 |
} |
|
304 |
|
|
305 |
/** |
|
306 |
* 编辑退票信息 |
|
307 |
* |
|
308 |
* @param outTicket |
|
309 |
* @return |
|
310 |
*/ |
|
311 |
@Override |
3453fe
|
312 |
public String saveOutTicket(OutTicket outTicket) { |
bdf81b
|
313 |
try { |
X |
314 |
String sql = "set nocount on ; \n"; |
3453fe
|
315 |
sql += "declare @doccode varchar(20) = " + GridUtils.prossSqlParm(outTicket.getFpCode()) + "," + |
081022
|
316 |
" @formId int ="+outTicket.getFormId()+"," + |
3453fe
|
317 |
" @ReceivingName varchar(50) = " + GridUtils.prossSqlParm(outTicket.getReceivingName()) + "," + |
X |
318 |
" @ReceivingTel varchar(50) = " + GridUtils.prossSqlParm(outTicket.getReceivingTel()) + " ," + |
|
319 |
" @ReceivingAddress varchar(50) = " + GridUtils.prossSqlParm(outTicket.getReceivingAddress()) + "," + |
|
320 |
" @Reason varchar(50) = " + GridUtils.prossSqlParm(outTicket.getReason()) + "," + |
51d5ac
|
321 |
" @LogisticsCode varchar(50) = " + GridUtils.prossSqlParm(outTicket.getLogisticsCode()) + "," + |
X |
322 |
" @ShipperCode varchar(50) = " + GridUtils.prossSqlParm(outTicket.getShipperCode()) + "," + |
3453fe
|
323 |
" @HDMemo varchar(2000) = " + GridUtils.prossSqlParm(outTicket.getHDMemo()) + "," + |
X |
324 |
" @userCode varchar(20) = " + GridUtils.prossSqlParm(outTicket.getUserCode()) + "," + |
|
325 |
" @username varchar(50) = " + GridUtils.prossSqlParm(outTicket.getUserName()) + "," + |
|
326 |
" @memo varchar(200) = '' , @linkdocinfo varchar(200) = '' \n"; |
|
327 |
sql += " exec p150509 @doccode=@doccode,@formid=@formId,@ReceivingName=@ReceivingName,@ReceivingTel=@ReceivingTel," + |
51d5ac
|
328 |
"@ReceivingAddress=@ReceivingAddress,@Reason=@Reason,@LogisticsCode=@LogisticsCode,@ShipperCode=@ShipperCode," + |
3453fe
|
329 |
"@HDMemo=@HDMemo,@userCode=@userCode,@username=@username,@memo=@memo,@linkdocinfo=@linkdocinfo output\n" + |
X |
330 |
"select @linkdocinfo"; |
bdf81b
|
331 |
return super.jdbcTemplate.queryForObject(sql, String.class); |
X |
332 |
} catch (Exception e) { |
|
333 |
throw e; |
|
334 |
} |
|
335 |
} |
|
336 |
|
|
337 |
/** |
|
338 |
* 获取客户地址(获取地址) |
|
339 |
* |
|
340 |
* @param dbId |
|
341 |
* @return |
|
342 |
*/ |
|
343 |
@Override |
|
344 |
public List<Map<String, Object>> getAddressInfo(String dbId) { |
|
345 |
try { |
|
346 |
String sql = "set nocount on \n" + |
1e0503
|
347 |
"select a.seq,a.cltCode,a.cltName,a.linkMan,a.tel,a.postCode,a.countryId," + |
X |
348 |
"a.provinceZoneId,a.provinceName,a.cityZoneId,a.cityName," + |
|
349 |
"a.countyZoneId,a.countyName,a.street,a.propertyID,a.propertyName,a.building,a.unit,a.house,a.propertyAddress," + |
7ddb62
|
350 |
"isnull(a.isDefaultSelected ,0) as isDefaultSelected " + |
X |
351 |
"from t110209 a left join t110203 b on a.cltCode=b.cltCode where b.dbid=" + |
bdf81b
|
352 |
GridUtils.prossSqlParm(dbId); |
a66342
|
353 |
sql += " order by a.seq desc"; |
bdf81b
|
354 |
return super.jdbcTemplate.queryForList(sql); |
da667f
|
355 |
} catch (Exception e) { |
X |
356 |
throw e; |
|
357 |
} |
|
358 |
} |
|
359 |
|
|
360 |
/** |
|
361 |
* 获取指定的地址信息 |
|
362 |
* |
|
363 |
* @param dbId |
|
364 |
* @param seq |
|
365 |
* @return |
|
366 |
*/ |
|
367 |
@Override |
|
368 |
public Map<String, Object> selectAddress(String dbId, Integer seq) { |
|
369 |
try { |
|
370 |
String sql = "set nocount on \n" + |
1e0503
|
371 |
"select a.seq,a.cltCode,a.cltName,a.linkMan,a.tel,a.postCode,a.countryId," + |
X |
372 |
"a.provinceZoneId,a.provinceName,a.cityZoneId,a.cityName," + |
|
373 |
"a.countyZoneId,a.countyName,a.street,a.propertyID,a.propertyName,a.building,a.unit,a.house,a.propertyAddress," + |
|
374 |
"isnull(a.isDefaultSelected ,0) as isDefaultSelected from t110209 a left join t110203 b on a.cltCode=b.cltCode and a.seq=" + seq + "" + |
da667f
|
375 |
" where b.dbid=" + GridUtils.prossSqlParm(dbId); |
X |
376 |
return super.jdbcTemplate.queryForMap(sql); |
bdf81b
|
377 |
} catch (Exception e) { |
X |
378 |
throw e; |
|
379 |
} |
|
380 |
} |
|
381 |
|
|
382 |
/** |
|
383 |
* 编辑地址信息(保存,修改,删除) |
|
384 |
* |
|
385 |
* @param address |
|
386 |
* @param dbId |
|
387 |
* @return |
|
388 |
*/ |
|
389 |
@Override |
|
390 |
public Integer saveAddress(Address address, String dbId) { |
|
391 |
try { |
|
392 |
Integer cont; |
|
393 |
String sql = "set nocount on ; \n"; |
|
394 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n"; |
|
395 |
sql += " declare @table table (cltCode varchar(50),cltName varchar(50),LinkMan varchar(50),Tel varchar(50)," + |
|
396 |
" PostCode varchar(50),CountryId int,ProvinceZoneId int,CityZoneId int,CountyZoneId int,\n" + |
da667f
|
397 |
" CountryName varchar(50),ProvinceName varchar(50),CityName varchar(50),CountyName varchar(50), \n" + |
bdf81b
|
398 |
" Street varchar(200),PropertyID int,PropertyName varchar(50),Building varchar(50),Unit varchar(50)," + |
1e0503
|
399 |
" House varchar(50),PropertyAddress varchar(200),FullAddress varchar(200),isDefaultSelected int) \n" + |
7ddb62
|
400 |
" declare @CountryName varchar(50),@ProvinceName varchar(50),@CityName varchar(50),@CountyName varchar(50)," + |
X |
401 |
" @address varchar(100) \n"; |
bdf81b
|
402 |
sql += " select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + "\n"; |
X |
403 |
sql += " if isNull(@cltCode,0)=0\n" + |
|
404 |
" begin\n" + |
|
405 |
" raiserror('获取不到当前系统的客户编号(cltCode)',16,1)\n" + |
|
406 |
" return \n" + |
|
407 |
" end \n"; |
|
408 |
if (address.getOperation() > 0) { |
|
409 |
//执行添加或修改(临时表) |
1e0503
|
410 |
sql += " select @ProvinceName = areaName from t110202 where zoneid = " + address.getProvinceZoneId() + " \n" + |
X |
411 |
" select @CityName = areaName from t110202 where zoneid = " + address.getCityZoneId() + " \n" + |
|
412 |
" select @CountyName = areaName from t110202 where zoneid = " + address.getCountyZoneId() + " \n"; |
7ddb62
|
413 |
sql += " select @address = @ProvinceName+@CityName+@CountyName+" + GridUtils.prossSqlParm(address.getStreet()); |
da667f
|
414 |
sql += " insert into @table(cltCode,cltName,LinkMan,Tel,PostCode,CountryId,ProvinceZoneId,ProvinceName,CityZoneId,CityName," + |
X |
415 |
" CountyZoneId,CountyName," + |
1e0503
|
416 |
"Street,PropertyID,PropertyName,Building,Unit,House,PropertyAddress,FullAddress,isDefaultSelected) \n" + |
bdf81b
|
417 |
" values(@cltCode,@cltName," + GridUtils.prossSqlParm(address.getLinkMan()) + "," + GridUtils.prossSqlParm(address.getTel()) + "," + |
da667f
|
418 |
GridUtils.prossSqlParm(address.getPostCode()) + "," + address.getCountryId() + "," + address.getProvinceZoneId() + ",@ProvinceName," + |
X |
419 |
address.getCityZoneId() + ",@CityName," + address.getCountyZoneId() + ",@CountyName," + GridUtils.prossSqlParm(address.getStreet()) + "," + |
bdf81b
|
420 |
address.getPropertyID() + "," + GridUtils.prossSqlParm(address.getPropertyName()) + "," + |
X |
421 |
GridUtils.prossSqlParm(address.getBuilding()) + "," + GridUtils.prossSqlParm(address.getUnit()) + "," + |
7ddb62
|
422 |
GridUtils.prossSqlParm(address.getHouse()) + ",@address,@address," + address.getIsDefaultSelected() + ") \n"; |
1e0503
|
423 |
if (address.getIsDefaultSelected() > 0) {//把客户地址默认值设为0 |
X |
424 |
sql += " update a set a.isDefaultSelected=0 from t110209 a where a.cltCode=@cltCode \n"; |
|
425 |
} |
bdf81b
|
426 |
if (address.getOperation() == 1) { //添加 |
1e0503
|
427 |
sql += " insert into t110209(cltCode,cltName,LinkMan,Tel,PostCode,CountryId,ProvinceZoneId,ProvinceName,CityZoneId,CityName," + |
da667f
|
428 |
" CountyZoneId,CountyName," + |
1e0503
|
429 |
" Street,PropertyID,PropertyName,Building,Unit,House,PropertyAddress,FullAddress,isDefaultSelected) \n" + |
da667f
|
430 |
" select a.cltCode,a.cltName,a.LinkMan,a.Tel,a.PostCode,a.CountryId,a.ProvinceZoneId,a.ProvinceName," + |
X |
431 |
" a.CityZoneId,a.CityName,a.CountyZoneId,a.CountyName," + |
1e0503
|
432 |
" a.Street,a.PropertyID,a.PropertyName,a.Building,a.Unit,a.House,a.PropertyAddress,a.FullAddress,a.isDefaultSelected \n" + |
bdf81b
|
433 |
" from @table a"; |
X |
434 |
} else if (address.getOperation() == 2) {//修改 |
7ddb62
|
435 |
sql += "update a set Tel=b.Tel,Street=b.Street,PropertyAddress=b.PropertyAddress,FullAddress=b.FullAddress,PostCode=b.PostCode," + |
da667f
|
436 |
" ProvinceZoneId=b.ProvinceZoneId,ProvinceName=b.ProvinceName,CityZoneId=b.CityZoneId,CityName=b.CityName," + |
1e0503
|
437 |
"CountyZoneId=b.CountyZoneId,CountyName=b.CountyName,LinkMan=b.LinkMan"; |
X |
438 |
if (address.getIsDefaultSelected() > 0) { |
|
439 |
sql += ",isDefaultSelected=b.isDefaultSelected "; |
|
440 |
} |
|
441 |
sql += " from t110209 a join @table b on a.cltCode=b.cltCode and a.seq=" + address.getSeq() + "\n"; |
bdf81b
|
442 |
} |
X |
443 |
} else { |
|
444 |
//执行删除 |
|
445 |
sql += "delete a from t110209 a where a.cltCode=@cltCode and a.seq=" + address.getSeq() + "\n"; |
1e0503
|
446 |
sql += "declare @seq int\n" + |
X |
447 |
" select top 1 @seq=seq from t110209 where cltCode=@cltCode \n" + |
|
448 |
" if(isnull(@seq,0)>0) \n" + |
|
449 |
" begin \n" + |
|
450 |
" update a set a.isDefaultSelected=1 from t110209 a where a.seq=@seq \n" + |
|
451 |
" end \n"; |
bdf81b
|
452 |
} |
X |
453 |
sql += " select 1 \n"; |
|
454 |
cont = super.jdbcTemplate.queryForObject(sql, Integer.class); |
|
455 |
return cont; |
|
456 |
} catch (Exception e) { |
|
457 |
throw e; |
|
458 |
} |
|
459 |
} |
da667f
|
460 |
|
X |
461 |
/** |
|
462 |
* 获取区域信息 |
|
463 |
* |
|
464 |
* @param rowId |
|
465 |
* @return |
|
466 |
*/ |
|
467 |
@Override |
|
468 |
public List<Map<String, Object>> getRegion(String rowId) { |
|
469 |
try { |
1e0503
|
470 |
Pattern pattern = Pattern.compile("[0-9]*"); |
X |
471 |
Matcher isNum = pattern.matcher(rowId); |
|
472 |
|
da667f
|
473 |
String sql = "set nocount on ;\n" + |
1e0503
|
474 |
" declare @rowId varchar(20) \n"; |
X |
475 |
if (!StringUtils.isBlank(rowId) && isNum.matches()) {//是数字 |
3453fe
|
476 |
sql += " select @rowId=rowid from t110202 where zoneId = " + rowId + "\n"; |
X |
477 |
} else { |
|
478 |
sql += " select @rowId=" + GridUtils.prossSqlParm(rowId) + "\n"; |
1e0503
|
479 |
} |
X |
480 |
sql += " select rowid,treecontrol,isnull(parentrowid,'') as parentrowid,zoneId,areaid,areaname \n" + |
|
481 |
" from t110202 as b"; |
da667f
|
482 |
if (StringUtils.isBlank(rowId)) { |
X |
483 |
sql += " where (b.parentrowid ='' or b.parentrowid is null or not exists (select 1 from t110202 c where b.parentrowid = c.rowid))"; |
|
484 |
} else { |
1e0503
|
485 |
sql += " where b.parentrowid = @rowId"; |
da667f
|
486 |
} |
X |
487 |
return super.jdbcTemplate.queryForList(sql); |
|
488 |
} catch (Exception e) { |
|
489 |
throw e; |
|
490 |
} |
|
491 |
} |
3453fe
|
492 |
|
X |
493 |
/** |
|
494 |
* 获取开票金额 |
|
495 |
* |
|
496 |
* @param dbId |
|
497 |
* @return |
|
498 |
*/ |
|
499 |
@Override |
7ddb62
|
500 |
public double getInvoiceAmount(String dbId) { |
3453fe
|
501 |
try { |
X |
502 |
String sql = "set nocount on ; \n"; |
|
503 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n" + |
|
504 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbId + "\n"; |
|
505 |
sql += " if isNull(@cltCode,0)=0\n" + |
|
506 |
" begin\n" + |
|
507 |
" raiserror('获取不到当前系统的客户编号(cltCode)',16,1)\n" + |
|
508 |
" return \n" + |
|
509 |
" end \n"; |
|
510 |
sql += "declare @balance money \n" + |
a66342
|
511 |
"select @balance = sum(isnull(a.Amount,0) - isnull(a.BillingAmount,0)+isnull(a.ReturnBillingAmount,0))\n" + |
3453fe
|
512 |
"from t150101D a join t150101h b on a.doccode = b.doccode \n" + |
X |
513 |
"where b.cltcode = @cltCode and docstatus = 100 \n" + |
82d67a
|
514 |
"declare @FaPiaoAmount money \n" + |
X |
515 |
"select @FaPiaoAmount = sum(isnull(a.totalmoney,0))\n" + |
|
516 |
"from t150504D a join t150504H b on a.DocCode = b.DocCode \n" + |
|
517 |
"where b.CltCode = @CltCode and isnull(b.DocStatus,0) < 100 \n" + |
|
518 |
"select round(isnull(@balance,0) - isnull(@FaPiaoAmount,0),2)"; |
7ddb62
|
519 |
return jdbcTemplate.queryForObject(sql, double.class); |
X |
520 |
} catch (Exception e) { |
|
521 |
throw e; |
|
522 |
} |
a66342
|
523 |
} |
X |
524 |
|
|
525 |
@Override |
|
526 |
public List<Map<String, Object>> getInvoiceViewData(String fpDocCode) { |
51d5ac
|
527 |
try { |
a66342
|
528 |
// String sql=" select '*信息技术服务*软件维护' as description,a.doccode,b.vatrate,\n" + |
X |
529 |
// " sum(isnull(b.netmoney,0)) as netmoney,\n" + |
|
530 |
// " sum(isnull(b.vatmoney,0)) as vatmoney,\n" + |
|
531 |
// " sum(isnull(b.totalmoney,0)) as totalmoney,\n" + |
|
532 |
// " sum(isnull(b.netmoney,0)) * 1.00000 / (1+isnull(b.vatrate,0)) as netprice\n" + |
|
533 |
// " from t150504h a join t150504d b on a.doccode = b.doccode \n" + |
|
534 |
// " where a.doccode = "+GridUtils.prossSqlParm(fpDocCode)+" \n" + |
|
535 |
// " group by a.doccode,b.vatrate"; |
51d5ac
|
536 |
String sql = " select a.doccode,a.InvoiceType,\n" + |
X |
537 |
" a.BillingName,a.BillingTel,a.TaxpayerIdentificationNumber,a.BillingPropertyAddress,\n" + |
|
538 |
" a.BillingOpeningBank,a.BillingBankAccount,b.vatrate,\n" + |
|
539 |
" sum(isnull(b.netmoney,0)) as netmoney,\n" + |
|
540 |
" sum(isnull(b.vatmoney,0)) as vatmoney,\n" + |
|
541 |
" sum(isnull(b.totalmoney,0)) as totalmoney,\n" + |
|
542 |
" sum(isnull(b.netmoney,0)) /1.000000 as netprice\n" + |
|
543 |
" from t150504h a join t150504d b on a.doccode = b.doccode \n" + |
|
544 |
" where a.doccode = " + GridUtils.prossSqlParm(fpDocCode) + " \n" + |
|
545 |
" group by a.doccode,b.vatrate, a.InvoiceType,\n" + |
|
546 |
" a.BillingName,a.BillingTel,a.TaxpayerIdentificationNumber,a.BillingPropertyAddress,\n" + |
|
547 |
" a.BillingOpeningBank,a.BillingBankAccount"; |
|
548 |
return jdbcTemplate.queryForList(sql); |
|
549 |
} catch (Exception e) { |
|
550 |
throw e; |
|
551 |
} |
7ddb62
|
552 |
} |
X |
553 |
|
|
554 |
/** |
|
555 |
* 预览发票信息 |
|
556 |
* |
|
557 |
* @param docCode |
|
558 |
* @param dbID |
|
559 |
* @return |
|
560 |
*/ |
|
561 |
@Override |
|
562 |
public Map<String, Object> getInvoiceView(String docCode, String dbID) { |
|
563 |
try { |
|
564 |
String sql = "set nocount on ; \n"; |
|
565 |
sql += " declare @cltCode varchar(50) ,@cltName varchar(50) \n" + |
|
566 |
" select @cltCode = c.cltCode,@cltName=c.cltName from t110203 c where c.dbId=" + dbID + "\n"; |
|
567 |
sql += " if isNull(@cltCode,0)=0\n" + |
|
568 |
" begin\n" + |
|
569 |
" raiserror('获取不到当前系统的客户编号(cltCode)',16,1)\n" + |
|
570 |
" return \n" + |
|
571 |
" end \n"; |
|
572 |
sql += "declare @doccode varchar(100) = " + GridUtils.prossSqlParm(docCode) + ", @amount money,@taxamount money," + |
82d67a
|
573 |
"@price money,@amounts money,@totalamount money\n" + |
a66342
|
574 |
"select @amount=sum(isnull(a.Amount,0) - isnull(a.BillingAmount,0)+isnull(a.ReturnBillingAmount,0)) \n" + |
X |
575 |
"from t150101D a where a.DocCode in (select list from GetInStr(@doccode)) and a.cltcode=@cltCode --价税合计 \n" + |
da8e50
|
576 |
"select @price=round(@amount/(1+3/100.00),2)--不含税单价\n" + |
82d67a
|
577 |
"select @amounts=round(@price*1,2)--不含税金额\n" + |
a66342
|
578 |
"select @taxamount=round(@amount - @amount/(1+3/100.00),2)--税额\n" + |
82d67a
|
579 |
"select @totalamount=round(@amounts + @taxamount,2)--价税合计\n" + |
X |
580 |
"select isnull(@amounts,0) as amount,isnull(@taxamount,0) as taxAmount,@price as price,isnull(@totalamount,0) as totalAmount"; |
7ddb62
|
581 |
return super.jdbcTemplate.queryForMap(sql); |
3453fe
|
582 |
} catch (Exception e) { |
X |
583 |
throw e; |
|
584 |
} |
|
585 |
} |
9a9585
|
586 |
|
a66342
|
587 |
|
9a9585
|
588 |
/** |
X |
589 |
* 获取退票原因列 |
a66342
|
590 |
* |
9a9585
|
591 |
* @return |
X |
592 |
*/ |
|
593 |
@Override |
|
594 |
public List<Map<String, Object>> getReason() { |
|
595 |
try { |
a66342
|
596 |
String sql = "select dictvalue,interValue from _sysdict where dictid = -15050810 order by sequence asc"; |
9a9585
|
597 |
return super.jdbcTemplate.queryForList(sql); |
a66342
|
598 |
} catch (Exception e) { |
51d5ac
|
599 |
return null; |
X |
600 |
} |
|
601 |
} |
|
602 |
|
|
603 |
/** |
|
604 |
* 获取快递公司列表 |
|
605 |
* @return |
|
606 |
*/ |
|
607 |
public List<Map<String, Object>> getShipperCode() { |
|
608 |
try { |
|
609 |
String sql = "select shipperCode,shipperName from t710165 order by AreaName asc,SortBy asc,FirstAlphabet asc"; |
|
610 |
return jdbcTemplate.queryForList(sql); |
|
611 |
} catch (Exception e) { |
|
612 |
return null; |
9a9585
|
613 |
} |
X |
614 |
} |
bdf81b
|
615 |
} |