package com.uas.service.Impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.landray.kmss.km.review.webservice.AttachmentForm; import com.landray.kmss.km.review.webservice.IKmReviewWebserviceService; import com.landray.kmss.km.review.webservice.KmReviewParamterForm; import com.uas.core.config.AddSoapHeader; import com.uas.core.config.WebServiceConfig; import com.uas.dao.BaseDao; import com.uas.dao.SqlRowList; import com.uas.service.KmReviewWebserviceService; import org.apache.cxf.interceptor.LoggingInInterceptor; import org.apache.cxf.interceptor.LoggingOutInterceptor; import org.apache.cxf.jaxws.JaxWsProxyFactoryBean; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; /** * @author koul * @email koul@usoftchina.com * @date 2021-06-01 8:55 */ @Service public class KmReviewWebserviceServiceImpl implements KmReviewWebserviceService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Autowired private BaseDao baseDao; /** * 获取待办接入 WebService 对象 * @return */ private IKmReviewWebserviceService getService(){ // 定义组织架构接入 WebService 对象 IKmReviewWebserviceService iKmReviewWebserviceService=null; if(iKmReviewWebserviceService==null){ // WebService 配置信息对象(读取自 client.properties 配置文件) WebServiceConfig serviceConfig = WebServiceConfig.getInstance(); // 使用 Apache CXF 框架创建组织架构接入 WebService 对象 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); factory.getInInterceptors().add(new LoggingInInterceptor()); factory.getOutInterceptors().add(new LoggingOutInterceptor()); factory.getOutInterceptors().add(new AddSoapHeader()); factory.setServiceClass(serviceConfig.getOAServiceClass()); // 设置服务请求的 URL 地址 String servicePath = serviceConfig.getOAAddress(); factory.setAddress(servicePath); iKmReviewWebserviceService = (IKmReviewWebserviceService) factory.create(); } return iKmReviewWebserviceService; } /** * * @param setContext 信息接入上下文 * @return * @throws Exception */ private String syncOAData(KmReviewParamterForm setContext) throws Exception{ return getService().addReview(setContext); } /** * 上传用车申请 * @return */ @Override public String sendYCSQ(int id) { StringBuffer sb = new StringBuffer(); try { SqlRowList rs; if (id==0){ rs = baseDao.queryForRowSet("select va_id,em_code,em_mobile,dp_landrayid,va_employee,to_char(va_time,'yyyy-MM-dd HH24:mi:ss') va_time,to_char(va_endtime,'yyyy-MM-dd HH24:mi:ss') va_endtime,va_area,va_othername,va_driver,va_vecard,va_address,va_vecode,va_vetype,va_reason from Vehicleapply left join employee on va_employee=em_name left join department on em_departmentcode=dp_code where va_sendstatus='待上传' and va_status='已审核' and em_islandray=-1"); }else { rs = baseDao.queryForRowSet("select va_id,em_code,em_mobile,dp_landrayid,va_employee,to_char(va_time,'yyyy-MM-dd HH24:mi:ss') va_time,to_char(va_endtime,'yyyy-MM-dd HH24:mi:ss') va_endtime,va_area,va_othername,va_driver,va_vecard,va_address,va_vecode,va_vetype,va_reason from Vehicleapply left join employee on va_employee=em_name left join department on em_departmentcode=dp_code where va_sendstatus='待上传' and va_status='已审核' and em_islandray=-1 and va_id="+id); } while (rs.next()) { KmReviewParamterForm form = new KmReviewParamterForm(); // 文档模板id form.setFdTemplateId("169b2adf6223f052d80d6bc4d1bbcd48"); // 文档标题 form.setDocSubject("用车申请"); // 流程发起人 form.setDocCreator("{\"LoginName\": \""+rs.getString("em_mobile")+"\"}"); // 文档关键字 form.setFdKeyword("[\""+rs.getString("va_vetype")+"\"]"); form.setDocStatus("20"); form.setFlowParam(new JSONObject().toString()); // 流程表单 /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH24:mi:ss");*/ JSONObject json = new JSONObject(); JSONObject object = new JSONObject(); object.put("Id",rs.getString("dp_landrayid")); json.put("fd_3730d421cbfb0a",object); JSONObject LoginName = new JSONObject(); LoginName.put("LoginName",rs.getString("em_mobile")); json.put("fd_3730d4225fbd78",LoginName); json.put("fd_3730d4352f148c",rs.getString("va_time")); json.put("fd_3730d441a0c6c8",rs.getString("va_endtime")); json.put("fd_3730d41ece1a68",rs.getString("va_area")); json.put("fd_3730d45920884a",rs.getString("va_othername")); /*String driver = rs.getString("va_driver"); JSONObject person = new JSONObject(); if (driver!=null&&!"".equals(driver)){ Object data = baseDao.getFieldDataByCondition("employee", "em_mobile", "em_name='" + driver + "'"); person.put("LoginName",data.toString()); }else { person.put("LoginName",""); }*/ json.put("fd_3730d464dd0726",rs.getString("va_driver")); json.put("fd_3730d46eca287c",rs.getString("va_vecard")); json.put("fd_3730d48679d568",rs.getString("va_address")); json.put("fd_3730d48bc4df32",rs.getString("va_vecode")); json.put("fd_3730d4a9ee835e",rs.getString("va_reason")); SqlRowList rowSet = baseDao.queryForRowSet("select jn_name, jn_dealmanid, jn_dealmanname, jn_dealtime, " + "jn_dealresult from jprocess left join jnode on jp_processinstanceid=jn_processinstanceid and jp_nodename=jn_name " + "where jp_caller='Vehicleapply' and jp_status='已审批' and jp_keyvalue=" + rs.getGeneralInt("va_id")); JSONArray array = new JSONArray(); while (rowSet.next()){ List strings = new ArrayList<>(); strings.add(rowSet.getString("jn_name")); strings.add(rowSet.getString("jn_dealmanid")); strings.add(rowSet.getString("jn_dealmanname")); strings.add(rowSet.getString("jn_dealtime")); strings.add(rowSet.getString("jn_dealresult")); array.add(strings); } json.put("fd_399a7935cb1dec",array.toString()); form.setFormValues(json.toString()); /*List attForms = createAllAtts(); form.getAttachmentForms().addAll(attForms);*/ String s = syncOAData(form); logger.info(s); baseDao.execute("update vehicleapply set va_sendstatus='已上传' where va_id="+rs.getGeneralInt("va_id")); } sb.append("上传成功"); }catch (Exception e){ sb.append(e.getMessage()); e.printStackTrace(); } return sb.toString(); } /** * 上传接待安排 * @return */ @Override public String sendJDAP(int id) { StringBuffer sb = new StringBuffer(); try { SqlRowList rs; if (id==0){ rs = baseDao.queryForRowSet("select ct_id,em_code,em_mobile,ct_varchar50_2,ct_varchar50_3,ct_varchar500_1,to_char(ct_date_1,'yyyy-MM-dd HH24:mi:ss') ct_date_1,ct_number_1,ct_number_2,ct_varchar50_5,ct_varchar50_7,ct_varchar50_12,ct_varchar50_13,ct_varchar50_14,ct_varchar50_10,ct_varchar50_11,ct_varchar50_6,ct_varchar50_15 from customtable left join employee on ct_recorder=em_name where ct_caller='JDAPSQB' and ct_status='已审核' and ct_sendstatus='待上传' and em_islandray=-1"); }else { rs = baseDao.queryForRowSet("select ct_id,em_code,em_mobile,ct_varchar50_2,ct_varchar50_3,ct_varchar500_1,to_char(ct_date_1,'yyyy-MM-dd HH24:mi:ss') ct_date_1,ct_number_1,ct_number_2,ct_varchar50_5,ct_varchar50_7,ct_varchar50_12,ct_varchar50_13,ct_varchar50_14,ct_varchar50_10,ct_varchar50_11,ct_varchar50_6,ct_varchar50_15 from customtable left join employee on ct_recorder=em_name where ct_caller='JDAPSQB' and ct_status='已审核' and ct_sendstatus='待上传' and em_islandray=-1 and ct_id="+id); } while (rs.next()) { KmReviewParamterForm form = new KmReviewParamterForm(); // 文档模板id form.setFdTemplateId("170eb52acb158643c542f8149e68e3a1"); // 文档标题 form.setDocSubject("业务接待安排申请"); // 流程发起人 form.setDocCreator("{\"LoginName\": \""+rs.getString("em_mobile")+"\"}"); // 文档关键字 form.setFdKeyword("[\""+rs.getString("CT_VARCHAR500_1")+"\"]"); form.setDocStatus("20"); form.setFlowParam(new JSONObject().toString()); // 流程表单 JSONObject json = new JSONObject(); String varchar502 = rs.getString("ct_varchar50_2"); JSONObject object = new JSONObject(); JSONObject person = new JSONObject(); if (varchar502!=null&&!"".equals(varchar502)){ Object[] employees = baseDao.getFieldsDataByCondition("employee left join department on em_departmentcode=dp_code", "em_mobile,dp_landrayid", "em_name" + "='" + varchar502 + "'"); object.put("Id",employees[1].toString()); person.put("LoginName",employees[0].toString()); }else { object.put("Id",""); person.put("LoginName",""); } json.put("fd_36f09e73a165e8",object); json.put("fd_36f09e6d85247c",person); json.put("fd_36f09e7f4364f6",rs.getString("ct_varchar500_1")); json.put("fd_36f09e8870640a",rs.getString("ct_date_1")); json.put("fd_36f09ea1da7e76",rs.getGeneralInt("ct_number_1")); json.put("fd_3933adfbc05cfa",rs.getGeneralDouble("ct_number_2")); json.put("fd_36f09ea73c4c4e",rs.getString("ct_varchar50_5")); json.put("fd_391d09cdeaaa08",rs.getString("ct_varchar50_7")); json.put("fd_390f6d757ee064",rs.getGeneralInt("ct_varchar50_12")); json.put("fd_390f58e3fbb220",rs.getGeneralInt("ct_varchar50_13")); json.put("fd_390f58e529e612",rs.getGeneralInt("ct_varchar50_14")); json.put("fd_39654793e6dd30",rs.getGeneralInt("ct_varchar50_10")); json.put("fd_3965479644c3ca",rs.getGeneralInt("ct_varchar50_11")); json.put("fd_396547989cd0f4",rs.getGeneralInt("ct_varchar50_6")); json.put("fd_36f09ec3749e40",rs.getString("ct_varchar50_15")); json.put("fd_3932161743da4a",0); SqlRowList rowSet = baseDao.queryForRowSet("select jn_name, jn_dealmanid, jn_dealmanname, jn_dealtime, " + "jn_dealresult from jprocess left join jnode on jp_processinstanceid=jn_processinstanceid and jp_nodename=jn_name " + "where jp_caller='JDAPSQB' and jp_status='已审批' and jp_keyvalue=" + rs.getGeneralInt("ct_id")); JSONArray array = new JSONArray(); while (rowSet.next()){ List strings = new ArrayList<>(); strings.add(rowSet.getString("jn_name")); strings.add(rowSet.getString("jn_dealmanid")); strings.add(rowSet.getString("jn_dealmanname")); strings.add(rowSet.getString("jn_dealtime")); strings.add(rowSet.getString("jn_dealresult")); array.add(strings); } json.put("fd_399a7c5bdb5d7a",array.toString()); form.setFormValues(json.toString()); /*List attForms = createAllAtts(); form.getAttachmentForms().addAll(attForms);*/ String s = syncOAData(form); logger.info(s); baseDao.execute("update customtable set ct_sendstatus='已上传' where ct_id="+rs.getGeneralInt("ct_id")); } sb.append("上传成功"); }catch (Exception e){ sb.append(e.getMessage()); e.printStackTrace(); } return sb.toString(); } /** * 创建附件列表 */ List createAllAtts() throws Exception { List attForms = new ArrayList (); String fileName = "采购订单说明书1.doc"; AttachmentForm attForm01 = createAtt(fileName); fileName = "采购订单说明书2.doc"; AttachmentForm attForm02 = createAtt(fileName); attForms.add(attForm01); attForms.add(attForm02); return attForms; } /** * 创建附件对象 */ AttachmentForm createAtt(String fileName) throws Exception { AttachmentForm attForm = new AttachmentForm(); attForm.setFdFileName(fileName); // 设置附件关键字,表单模式下为附件控件的id attForm.setFdKey("fd_2eddbf161a3268"); byte[] data = file2bytes("C:\\" + fileName); attForm.setFdAttachment(data); return attForm; } /** * 将文件转换为字节编码 */ byte[] file2bytes(String fileName) throws Exception { InputStream in = new FileInputStream(fileName); byte[] data = new byte[in.available()]; try { in.read(data); } finally { try { in.close(); } catch (IOException ex) { } } return data; } }