package com.yc.open.yejibao.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import com.yc.entity.DataSourceEntity; import com.yc.exception.ApplicationException; import com.yc.exception.CallBackMessage; import com.yc.factory.FactoryBean; import com.yc.multiData.MultiDataSource; import com.yc.multiData.SpObserver; import com.yc.open.controller.BaseController; import com.yc.open.deli.entity.T110565Entity; import com.yc.open.deli.service.PostDataBaseService; import com.yc.open.init.InitSystemTaks; import com.yc.open.init.Task; import com.yc.open.mutual.schedule.GateEntity; import com.yc.open.yejibao.entry.T150101DetailEntity; import com.yc.open.yejibao.entry.T150101Entity; import com.yc.open.yejibao.entry.T150109DetailEntity; import com.yc.open.yejibao.entry.T150109Entity; import com.yc.open.yejibao.service.YeJiBaoIfc; import com.yc.service.build.type.T_22_Ifc; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Map; /** * 业绩宝相关 */ @RestController @RequestMapping("/yejibao") @Slf4j public class YeJiBaoHandleController extends BaseController { @Autowired T_22_Ifc t22ifc; @Autowired YeJiBaoIfc yeJiBaoIfc; @Autowired YeJiBaoController yeJiBaoController; @RequestMapping(value = "/push120101.do") public void push120101(HttpServletRequest request, HttpServletResponse response) { String docCode = null;//单号 CallBackMessage callBackMessage = new CallBackMessage(); try { Map map = null; DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request); try { SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源 map = t22ifc.getParamMap(request); } catch (Exception e) { e.printStackTrace(); log.error(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(this.getErrorMsg(e))); return; } finally { SpObserver.setDBtoInstance(); } if (map != null) { docCode = map.get("doccode"); } if (docCode == null) { if (log.isDebugEnabled()) { log.error("通过22类型传进来组装出来的map:" + map.toString()); } this.printJson(response, callBackMessage.sendErrorMessage("单号不能为空")); return; } GateEntity gateEntity = new GateEntity(); gateEntity.setDocCode(docCode); gateEntity.setFormid(120201); gateEntity.setDbid(dataSourceEntity.getDbId() + ""); Task soTask = InitSystemTaks.getTask(gateEntity, "OP0070"); soTask.setCurrentDocStatus(100); yeJiBaoController.pushT120201(gateEntity, soTask); this.printJson(response, callBackMessage.toJSONStringByMemo("同步成功:" + docCode)); } catch (Exception e) { //写错误日志 e.printStackTrace(); this.sendErrorLog(120201, docCode, e); String errorMsg = (e.getCause() != null ? (e.getCause().getMessage()).trim() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(errorMsg)); } } @RequestMapping(value = "/push150101.do") public void push150101(HttpServletRequest request, HttpServletResponse response) { String docCode = null;//单号 CallBackMessage callBackMessage = new CallBackMessage(); try { Map map = null; DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request); try { SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源 map = t22ifc.getParamMap(request); } catch (Exception e) { e.printStackTrace(); log.error(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(this.getErrorMsg(e))); return; } finally { SpObserver.setDBtoInstance(); } if (map != null) { docCode = map.get("doccode"); } if (docCode == null) { if (log.isDebugEnabled()) { log.error("通过22类型传进来组装出来的map:" + map.toString()); } this.printJson(response, callBackMessage.sendErrorMessage("单号不能为空")); return; } GateEntity gateEntity = new GateEntity(); gateEntity.setDocCode(docCode); gateEntity.setFormid(150101); gateEntity.setDbid(dataSourceEntity.getDbId() + ""); Task soTask = InitSystemTaks.getTask(gateEntity, "OP0071"); soTask.setCurrentDocStatus(100); call150101(gateEntity, soTask); this.printJson(response, callBackMessage.toJSONStringByMemo("同步成功:" + docCode)); } catch (Exception e) { //写错误日志 e.printStackTrace(); this.sendErrorLog(150105, docCode, e); String errorMsg = (e.getCause() != null ? (e.getCause().getMessage()).trim() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(errorMsg)); } } public void call150101(GateEntity entity, Task task) throws Exception { T150101Entity result = this.yeJiBaoIfc.getT150101List(entity.getDocCode(), task); if (result != null) { for (T150101DetailEntity detail : result.getReceive()) { if (detail.getSoDocStatus() != null && detail.getSoDocStatus() != 100) { //推送不是确认状态销售订单 GateEntity gateEntity = new GateEntity(); gateEntity.setDocCode(detail.getSoDoccode()); gateEntity.setFormid(120201); gateEntity.setDbid(entity.getDbid()); Task soTask = InitSystemTaks.getTask(gateEntity, "OP0070"); soTask.setCurrentDocStatus(detail.getSoDocStatus()); yeJiBaoController.pushT120201(gateEntity, soTask); } } String data = JSON.toJSONString(result, SerializerFeature.SortField); CallBackMessage callBackMessage = yeJiBaoController.doPost(task.getApiUrl(), result.getCompanyID(), data); if (callBackMessage.getState() == 0) { Map map = JSON.parseObject(callBackMessage.getData(), Map.class); if (String.valueOf(map.get("code")).equals("1")) { //成功 callBackMessage.sendSuccessMessage("推送成功"); updateState150101(result, callBackMessage, entity); } else { throw new ApplicationException(map.get("msg")); } } else { throw new ApplicationException(callBackMessage.getError()); } } } private void updateState150101(T150101Entity t150101Entity, CallBackMessage callBackMessage, GateEntity entity) { PostDataBaseService mPostDataBaseService = (PostDataBaseService) FactoryBean.getBean("postDataBaseService"); try { SpObserver.setDBtoInstance("_" + entity.getDbid()); mPostDataBaseService.getSimpleJdbcTemplate().queryForObject("update a set a.YeJiBaoPushStatus=" + callBackMessage.getState() + ",a.YeJiBaoPushDate=getdate(),a.YeJiBaoPushTimes=isnull(a.YeJiBaoPushTimes,0)+1,a.YeJiBaoPushMsg='" + callBackMessage.getSuccess() + "' from t150101H a where a.doccode='" + t150101Entity.getDocCode() + "' \n select @@rowcount", Integer.class); } catch (Exception ex) { mPostDataBaseService.doLogBy110565(new T110565Entity( 150101, t150101Entity.getDocCode(), null, "收款单150101", ex.getMessage().replaceAll("'", "''") )); } finally { SpObserver.setDBtoInstance(); } } @RequestMapping(value = "/push150109.do") public void push150109(HttpServletRequest request, HttpServletResponse response) { String docCode = null;//单号 CallBackMessage callBackMessage = new CallBackMessage(); try { Map map = null; DataSourceEntity dataSourceEntity = MultiDataSource.getDataSourceMap(request); try { SpObserver.setDBtoInstance("_" + dataSourceEntity.getDbId());//切换数据源 map = t22ifc.getParamMap(request); } catch (Exception e) { e.printStackTrace(); log.error(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(this.getErrorMsg(e))); return; } finally { SpObserver.setDBtoInstance(); } if (map != null) { docCode = map.get("doccode"); } if (docCode == null) { if (log.isDebugEnabled()) { log.error("通过22类型传进来组装出来的map:" + map.toString()); } this.printJson(response, callBackMessage.sendErrorMessage("单号不能为空")); return; } GateEntity gateEntity = new GateEntity(); gateEntity.setDocCode(docCode); gateEntity.setFormid(150109); gateEntity.setDbid(dataSourceEntity.getDbId() + ""); Task soTask = InitSystemTaks.getTask(gateEntity, "OP0072"); soTask.setCurrentDocStatus(100); call150109(gateEntity, soTask); this.printJson(response, callBackMessage.toJSONStringByMemo("同步成功:" + docCode)); } catch (Exception e) { //写错误日志 e.printStackTrace(); this.sendErrorLog(150109, docCode, e); String errorMsg = (e.getCause() != null ? (e.getCause().getMessage()).trim() : e.getMessage()); this.printJson(response, callBackMessage.sendErrorMessage(errorMsg)); } } public void call150109(GateEntity entity, Task task) throws Exception { T150109Entity result = this.yeJiBaoIfc.getT150109List(entity.getDocCode(), task); if (result != null) { for (T150109DetailEntity detail : result.getRefund()) { if (detail.getSoDocStatus() != null && detail.getSoDocStatus() != 100) { //推送不是确认状态销售订单 GateEntity gateEntity = new GateEntity(); gateEntity.setDocCode(detail.getSoDoccode()); gateEntity.setFormid(120201); gateEntity.setDbid(entity.getDbid()); Task soTask = InitSystemTaks.getTask(gateEntity, "OP0070"); soTask.setCurrentDocStatus(detail.getSoDocStatus()); yeJiBaoController.pushT120201(gateEntity, soTask); } } String data = JSON.toJSONString(result, SerializerFeature.SortField); CallBackMessage callBackMessage = yeJiBaoController.doPost(task.getApiUrl(), result.getCompanyID(), data); if (callBackMessage.getState() == 0) { Map map = JSON.parseObject(callBackMessage.getData(), Map.class); if (String.valueOf(map.get("code")).equals("1")) { //成功 callBackMessage.sendSuccessMessage("推送成功"); updateState150109(result, callBackMessage, entity); } else { throw new ApplicationException(map.get("msg")); } } else { throw new ApplicationException(callBackMessage.getError()); } } } private void updateState150109(T150109Entity t150109Entity, CallBackMessage callBackMessage, GateEntity entity) { PostDataBaseService mPostDataBaseService = (PostDataBaseService) FactoryBean.getBean("postDataBaseService"); try { SpObserver.setDBtoInstance("_" + entity.getDbid()); mPostDataBaseService.getSimpleJdbcTemplate().queryForObject("update a set a.YeJiBaoPushStatus=" + callBackMessage.getState() + ",a.YeJiBaoPushDate=getdate(),a.YeJiBaoPushTimes=isnull(a.YeJiBaoPushTimes,0)+1,a.YeJiBaoPushMsg='" + callBackMessage.getSuccess() + "' from t150109H a where a.doccode='" + t150109Entity.getDocCode() + "' \n select @@rowcount", Integer.class); } catch (Exception ex) { mPostDataBaseService.doLogBy110565(new T110565Entity( 150109, t150109Entity.getDocCode(), null, "退款单150109", ex.getMessage().replaceAll("'", "''") )); } finally { SpObserver.setDBtoInstance(); } } }