提交 | 用户 | age
|
2f071f
|
1 |
package com.yc.sdk.weixincp3rd.service; |
X |
2 |
|
|
3 |
import com.yc.action.grid.GridUtils; |
|
4 |
import com.yc.sdk.weixincp3rd.entity.AfterSalesEntity; |
|
5 |
import com.yc.sdk.weixincp3rd.entity.AfterSalesParameters; |
|
6 |
import com.yc.service.BaseService; |
|
7 |
import com.yc.service.upload.AttachmentIfc; |
|
8 |
import org.apache.commons.lang3.StringUtils; |
|
9 |
import org.springframework.beans.factory.annotation.Autowired; |
|
10 |
import org.springframework.dao.DataAccessException; |
|
11 |
import org.springframework.dao.EmptyResultDataAccessException; |
|
12 |
import org.springframework.stereotype.Service; |
|
13 |
|
|
14 |
import java.util.List; |
|
15 |
import java.util.Map; |
|
16 |
|
|
17 |
/** |
|
18 |
* @BelongsProject: eCoWorksV3 |
|
19 |
* @BelongsPackage: com.yc.sdk.weixincp3rd.service |
|
20 |
* @author: xinyb |
|
21 |
* @CreateTime: 2024-04-30 09:12 |
|
22 |
* @Description: 售后对接api |
|
23 |
*/ |
|
24 |
@Service |
|
25 |
public class AfterSalesImpl extends BaseService implements AfterSalesIfc { |
|
26 |
@Autowired |
|
27 |
private AttachmentIfc attachmentIfc; |
|
28 |
|
|
29 |
@Override |
|
30 |
public void saveUpkeep(AfterSalesParameters param) throws Exception { |
|
31 |
String sql = "set nocount on\n"; |
|
32 |
try { |
fdd568
|
33 |
sql += "declare @docCode varchar(50) ,@cltCode varchar(50) = '',@cltName varchar(100) = ''," + |
X |
34 |
"@companyId varchar(10),@companyName varchar(100),@seq int =" + param.getSeq() + "," + |
c15ce2
|
35 |
"@ccCode varchar(50),@ccName varchar(50),"+ |
5b4b87
|
36 |
"@Longitude varchar(50),@Latitude varchar(50),@FullAddressName varchar(200)," + |
426624
|
37 |
"@FullAddress varchar(300),@Street varchar(200)\n"; |
2f071f
|
38 |
if (StringUtils.isNotBlank(param.getOpenId())) { |
426624
|
39 |
sql += "select @cltCode=cltCode,@cltName=cltName,@ccCode=ccCode,@ccName=ccName," + |
6391e1
|
40 |
"@companyId=companyId,@companyName=companyName from t110203 where MiniAppOpenId=" + GridUtils.prossSqlParm(param.getOpenId()) + "\n"; |
fdd568
|
41 |
sql += " if isnull(@cltCode,'') = '' \n " + |
bea9f9
|
42 |
" begin \n" + |
X |
43 |
" raiserror('系统未绑定微信用户ID,请绑定后再执行',16,1) \n" + |
|
44 |
" return \n" + |
|
45 |
" end \n"; |
2f071f
|
46 |
} |
3d75f6
|
47 |
sql += "select @Longitude = Longitude,@Latitude=Latitude,@FullAddressName=FullAddressName," + |
X |
48 |
"@FullAddress=isnull(FullAddress,'')+''+isnull(FullAddressName,'')+''+isnull(Street,'')," + |
|
49 |
"@Street=Street from t110209 " + |
fdd568
|
50 |
"where seq=@seq"; |
2f071f
|
51 |
sql += " exec sp_newdoccode 640210,'SYSTEM',@docCode output\n"; |
5b4b87
|
52 |
sql += "insert into t640210H(docCode,formId,docDate,periodID,ccCode,ccName,DocStatus,LastDocStatus,PostCode,PostName,companyId,companyName,AcceptSource,cltCode,cltName,tel," + |
5a870e
|
53 |
"PropertyAddress,PreSendDate,Memo,enterDate,UploadFiles,seq,Longitude,Latitude,FullAddressName,Street)" + |
426624
|
54 |
" values (@docCode," + param.getFormId() + ",convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120),@ccCode,@ccName,0,0,'system','小程序端',@companyId,@companyName,'报修',@cltCode," + |
fdd568
|
55 |
GridUtils.prossSqlParm(param.getCltName()) + "," + GridUtils.prossSqlParm(param.getTel()) + ",@FullAddress," + |
X |
56 |
GridUtils.prossSqlParm(param.getPreSendDate()) + "," + |
|
57 |
GridUtils.prossSqlParm(param.getMemo()) + ",getdate()," + GridUtils.prossSqlParm(param.getUploadFiles()) + "," + |
5b4b87
|
58 |
"@seq,@Longitude,@Latitude,@FullAddressName,@Street) \n"; |
1527b8
|
59 |
sql+=" exec dbo.p640210post 'SYSTEM','系统管理员',@docCode,640210,0,'提交','','','' \n"; |
X |
60 |
if(StringUtils.isNotBlank(param.getUploadFiles())){ |
|
61 |
String unId=param.getUploadFiles().split(";")[0];//0元素必定是unId值 |
|
62 |
sql+="update _sys_Attachment set docCode=@docCode where UNID='"+unId+"'"; |
|
63 |
} |
2f071f
|
64 |
jdbcTemplate.update(sql); |
X |
65 |
} catch (Exception e) { |
|
66 |
throw e; |
|
67 |
} |
|
68 |
} |
|
69 |
|
|
70 |
@Override |
|
71 |
public List<Map<String, Object>> getUpkeepList(Integer docStatus, String openId) { |
|
72 |
String sql = "set nocount on\n"; |
|
73 |
try { |
21d636
|
74 |
sql += "select a.acceptSource,a.docCode,a.enterDate,a.preSendDate,a.cltCode,a.cltName," + |
5a870e
|
75 |
"(case when isnull(a.DocStatus,0) <100 then 1\n" + |
X |
76 |
" when isnull(a.DocStatus,0)=100 and isnull(a.WanGongStatus,'未完工') = '未完工' then 2 \n" + |
|
77 |
" when isnull(a.DocStatus,0)=100 and isnull(a.WanGongStatus,'未完工') = '已完工' then 3 \n" + |
|
78 |
" else 1 end) docStatus,isnull(a.lastDocStatus,0) lastDocStatus,a.memo \n" + |
2f071f
|
79 |
"from t640210H a join t110203 b on a.CltCode=b.CltCode and b.MiniAppOpenId=" + GridUtils.prossSqlParm(openId) + "\n" + |
X |
80 |
"where a.AcceptSource='报修' "; |
5a870e
|
81 |
if (docStatus > 0 ){ |
X |
82 |
if (docStatus == 1) { |
|
83 |
sql += " and isnull(a.DocStatus,0) < 100"; |
|
84 |
} else if (docStatus ==2) { |
|
85 |
sql += " and isnull(a.DocStatus,0) = 100 and isnull(a.WanGongStatus,'未完工') = '未完工'"; |
|
86 |
}else if(docStatus == 3){ |
|
87 |
sql += " and isnull(a.DocStatus,0) = 100 and isnull(a.WanGongStatus,'未完工') = '已完工'"; |
|
88 |
} |
2f071f
|
89 |
} |
21d636
|
90 |
sql+=" order by a.enterDate desc"; |
2f071f
|
91 |
return jdbcTemplate.queryForList(sql); |
X |
92 |
} catch (Exception e) { |
|
93 |
throw e; |
|
94 |
} |
|
95 |
} |
|
96 |
|
|
97 |
@Override |
|
98 |
public AfterSalesEntity getUpkeepInfo(String docCode) { |
|
99 |
String sql = "set nocount on\n"; |
|
100 |
try { |
|
101 |
sql += "select a.topic,a.id,a.inserttime,a.curStatus,a.ActionCode,a.ActionName,a.ActionTel,\n" + |
5a870e
|
102 |
"b.acceptSource,b.docCode,b.formId,b.PaiGongDocCode,b.PaiGongFormId,b.enterDate,b.preSendDate,b.uploadFiles,b.cltCode,b.cltName,b.tel," + |
3d75f6
|
103 |
"isnull(b.propertyAddress,'') as propertyAddress," + |
21d636
|
104 |
"isnull(b.docStatus,0) docStatus,isnull(b.LastDocStatus,0) lastDocStatus,b.memo,b.longitude,b.latitude,b.fullAddressName \n" + |
5a870e
|
105 |
"from t640210D2 a right join t640210h b on a.SODocCode=b.docCode where b.docCode= " + GridUtils.prossSqlParm(docCode) + " order by id desc"; |
2f071f
|
106 |
return AfterSalesEntity.setAfterSalesEntity(jdbcTemplate.queryForList(sql)); |
X |
107 |
} catch (Exception e) { |
|
108 |
throw e; |
|
109 |
} |
|
110 |
} |
|
111 |
|
|
112 |
@Override |
|
113 |
public void saveComplain(AfterSalesParameters param) throws Exception { |
|
114 |
String sql = "set nocount on\n"; |
|
115 |
try { |
|
116 |
|
|
117 |
sql += "declare @docCode varchar(50) ,@cltCode varchar(50)='',@cltName varchar(200)='',@tel varchar(50)=''," + |
c15ce2
|
118 |
"@ccCode varchar(50),@ccName varchar(50),"+ |
426624
|
119 |
"@propertyAddress varchar(200),@companyId varchar(10),@companyName varchar(100)\n"; |
2f071f
|
120 |
if (StringUtils.isNotBlank(param.getOpenId())) { |
426624
|
121 |
sql += "select @cltCode=cltCode,@cltName=cltName,@ccCode=ccCode,@ccName=ccName,@tel=tel," + |
6391e1
|
122 |
"@propertyAddress=PropertyAddress,@companyId=companyId,@companyName=companyName from t110203 where MiniAppOpenId=" + GridUtils.prossSqlParm(param.getOpenId()) + "\n"; |
bea9f9
|
123 |
sql+=" if isnull(@cltCode,'') = '' \n " + |
X |
124 |
" begin \n" + |
|
125 |
" raiserror('系统未绑定微信用户ID,请绑定后再执行',16,1) \n" + |
|
126 |
" return \n" + |
|
127 |
" end \n"; |
2f071f
|
128 |
} |
X |
129 |
sql += " exec sp_newdoccode 640210,'SYSTEM',@docCode output\n"; |
5b4b87
|
130 |
sql += "insert into t640210H(docCode,formId,ccCode,ccName,DocStatus,LastDocStatus,PostCode,PostName,docDate,periodID,companyId,companyName,AcceptSource,cltCode,cltName,tel,PropertyAddress,Memo,enterDate,UploadFiles)" + |
426624
|
131 |
" values (@docCode," + param.getFormId() + ",@ccCode,@ccName,0,0,'system','小程序端',convert(varchar(10),getdate(),120),convert(varchar(7),getdate(),120),@companyId,@companyName,'投诉',@cltCode,@cltName,@tel,@propertyAddress," + |
5b4b87
|
132 |
GridUtils.prossSqlParm(param.getMemo()) + ",getdate()," + GridUtils.prossSqlParm(param.getUploadFiles()) + ") \n"; |
1527b8
|
133 |
sql+=" exec dbo.p640210post 'SYSTEM','系统管理员',@docCode,640210,0,'提交','','','' \n"; |
X |
134 |
if(StringUtils.isNotBlank(param.getUploadFiles())){ |
|
135 |
String unId=param.getUploadFiles().split(";")[0];//0元素必定是unId值 |
|
136 |
sql+="update _sys_Attachment set docCode=@docCode where UNID='"+unId+"'"; |
|
137 |
} |
2f071f
|
138 |
jdbcTemplate.update(sql); |
X |
139 |
} catch (Exception e) { |
|
140 |
throw e; |
|
141 |
} |
|
142 |
} |
|
143 |
|
|
144 |
@Override |
|
145 |
public List<Map<String, Object>> getComplainList(Integer docStatus, String openId) { |
|
146 |
String sql = "set nocount on\n"; |
|
147 |
try { |
21d636
|
148 |
sql += "select a.acceptSource,a.docCode,a.enterDate,a.preSendDate,a.cltCode,a.cltName," + |
5a870e
|
149 |
"(case when isnull(a.DocStatus,0) <100 then 1\n" + |
X |
150 |
" when isnull(a.DocStatus,0)=100 and isnull(a.WanGongStatus,'未完工') = '未完工' then 2 \n" + |
|
151 |
" when isnull(a.DocStatus,0)=100 and isnull(a.WanGongStatus,'未完工') = '已完工' then 3 \n" + |
|
152 |
" else 1 end) docStatus,isnull(a.lastDocStatus,0) lastDocStatus,a.memo \n" + |
2f071f
|
153 |
"from t640210H a join t110203 b on a.CltCode=b.CltCode and b.MiniAppOpenId=" + GridUtils.prossSqlParm(openId) + "\n" + |
X |
154 |
"where a.AcceptSource='投诉' "; |
5a870e
|
155 |
if (docStatus > 0 ){ |
X |
156 |
if (docStatus == 1) { |
|
157 |
sql += " and isnull(a.DocStatus,0) < 100"; |
|
158 |
} else if (docStatus ==2) { |
|
159 |
sql += " and isnull(a.DocStatus,0) = 100 and isnull(a.WanGongStatus,'未完工') = '未完工'"; |
|
160 |
}else if(docStatus == 3){ |
|
161 |
sql += " and isnull(a.DocStatus,0) = 100 and isnull(a.WanGongStatus,'未完工') = '已完工'"; |
|
162 |
} |
2f071f
|
163 |
} |
21d636
|
164 |
sql+=" order by a.enterDate desc"; |
2f071f
|
165 |
return jdbcTemplate.queryForList(sql); |
X |
166 |
} catch (Exception e) { |
|
167 |
throw e; |
|
168 |
} |
|
169 |
} |
|
170 |
|
|
171 |
@Override |
|
172 |
public AfterSalesEntity getComplainInfo(String docCode) { |
|
173 |
String sql = "set nocount on\n"; |
|
174 |
try { |
|
175 |
sql += "select a.topic,a.id,a.inserttime,a.curStatus,a.ActionCode,a.ActionName,a.ActionTel,\n" + |
5a870e
|
176 |
"b.acceptSource,b.docCode,b.formId,b.PaiGongDocCode,b.PaiGongFormId,b.enterDate,b.preSendDate,b.UploadFiles,b.cltCode,b.cltName,b.tel," + |
3d75f6
|
177 |
"isnull(b.propertyAddress,'') as propertyAddress," + |
21d636
|
178 |
"isnull(b.docStatus,0) docStatus,isnull(b.lastDocStatus,0) lastDocStatus,b.memo\n" + |
5a870e
|
179 |
"from t640210D2 a right join t640210h b on a.SODocCode=b.docCode where b.docCode= " + GridUtils.prossSqlParm(docCode) + " order by id desc"; |
2f071f
|
180 |
return AfterSalesEntity.setAfterSalesEntity(jdbcTemplate.queryForList(sql)); |
X |
181 |
} catch (Exception e) { |
|
182 |
throw e; |
|
183 |
} |
|
184 |
} |
|
185 |
|
|
186 |
@Override |
|
187 |
public void saveSatisfaction(AfterSalesParameters param) throws Exception { |
|
188 |
String sql = "set nocount on\n"; |
|
189 |
try { |
6391e1
|
190 |
sql += "declare @docCode varchar(50) ,@cltCode varchar(50)='',@cltName varchar(200)='',@tel varchar(20)=''," + |
5a870e
|
191 |
"@propertyAddress varchar(200),@companyId varchar(10),@companyName varchar(100)," + |
6391e1
|
192 |
"@PaiGongDocCode varchar(50),@PaiGongFormId int,@PaiGongFormType int ,@periodID varchar(20)," + |
X |
193 |
"@postCode varchar(50),@postName varchar(50),@ccCode varchar(50),@ccName varchar(50)\n"; |
|
194 |
sql += "select @cltCode=cltCode,@cltName=cltName,@tel=tel,@propertyAddress=propertyAddress,@postCode=postCode," + |
|
195 |
"@postName=postName,@companyId=companyId,@companyName=companyName,@ccCode=ccCode,@ccName=ccName," + |
|
196 |
"@PaiGongDocCode=PaiGongDocCode,@PaiGongFormId=PaiGongFormId,@PaiGongFormType=PaiGongFormType,@periodID=periodID " + |
|
197 |
"from t640210H where docCode=" + GridUtils.prossSqlParm(param.getRefCode())+"\n"; |
|
198 |
sql += " if @@ROWCOUNT = 0 \n " + |
|
199 |
" begin \n" + |
|
200 |
" raiserror('未找到提交单号,请检测是否已经提交',16,1) \n" + |
|
201 |
" return \n" + |
|
202 |
" end \n"; |
2f071f
|
203 |
sql += " exec sp_newdoccode 640402,'SYSTEM',@docCode output\n"; |
6391e1
|
204 |
sql += "insert into t640402H(docCode,formId,refCode,refFormId,refFormType,postCode,postName,PaiGongDocCode,PaiGongFormId,PaiGongFormType,periodID," + |
X |
205 |
"DocStatus,companyId,companyName,docDate,cltCode,cltName,tel,EnterDate,OverallEvaluationScore,InstallEvaluationScore,AfterSalesEvaluationScore," + |
|
206 |
"DeliveryEvaluationScore,HDMemo,UploadFiles,propertyAddress,ccCode,ccName)" + |
|
207 |
" values (@docCode,640402," + GridUtils.prossSqlParm(param.getRefCode()) + "," + param.getRefFormId() + ",496,@postCode,@postName,@PaiGongDocCode,@PaiGongFormId,@PaiGongFormType,@periodID," + |
|
208 |
"0,@companyId,@companyName,convert(varchar(10),getdate(),120),@cltCode,@cltName,@tel,getdate()," + |
2f071f
|
209 |
GridUtils.prossSqlParm(param.getOverallEvaluationScore()) + "," + GridUtils.prossSqlParm(param.getInstallEvaluationScore()) + "," + |
X |
210 |
GridUtils.prossSqlParm(param.getAfterSalesEvaluationScore()) + "," + GridUtils.prossSqlParm(param.getDeliveryEvaluationScore()) + "," + |
6391e1
|
211 |
GridUtils.prossSqlParm(param.getHDMemo()) + "," + GridUtils.prossSqlParm(param.getUploadFiles()) + ",@propertyAddress,@ccCode,@ccName) \n"; |
3d75f6
|
212 |
sql += "exec dbo.p640402post 'SYSTEM','系统管理员',@doccode,640402,0,'提交','','','' \n"; |
1527b8
|
213 |
if(StringUtils.isNotBlank(param.getUploadFiles())){ |
X |
214 |
String unId=param.getUploadFiles().split(";")[0];//0元素必定是unId值 |
|
215 |
sql+="update _sys_Attachment set docCode=@docCode where UNID='"+unId+"'"; |
|
216 |
} |
2f071f
|
217 |
jdbcTemplate.update(sql); |
X |
218 |
} catch (Exception e) { |
|
219 |
throw e; |
|
220 |
} |
|
221 |
} |
|
222 |
|
|
223 |
@Override |
|
224 |
public Integer deleteFile(String unId, Integer seq) { |
|
225 |
String sql = "set nocount on\n"; |
|
226 |
try { |
|
227 |
sql += "declare @unid varchar(100) =" + GridUtils.prossSqlParm(unId) + " ,@seq int =" + seq + "\n"; |
|
228 |
sql += "delete from _sys_Attachment where unid = @unid and seq = @seq\n"; |
|
229 |
sql += " select @@rowcount \n"; |
|
230 |
Integer ret = this.jdbcTemplate.queryForObject(sql, Integer.class); |
|
231 |
return ret; |
|
232 |
} catch (DataAccessException e) { |
|
233 |
if (e instanceof EmptyResultDataAccessException) { |
|
234 |
return null; |
|
235 |
} else { |
|
236 |
e.printStackTrace(); |
|
237 |
throw e; |
|
238 |
} |
|
239 |
} catch (Exception e) { |
|
240 |
e.printStackTrace(); |
|
241 |
throw e; |
|
242 |
} |
|
243 |
} |
|
244 |
} |