xinyb
2024-06-06 4266249facaf325f71deb203bddf6f2c8a864048
提交 | 用户 | 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 }