对比新文件 |
| | |
| | | package com.gk.firework.Scheduls.DL; |
| | | |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.gk.firework.Domain.CustomerInfo; |
| | | import com.gk.firework.Domain.Enterprise; |
| | | import com.gk.firework.Domain.SaleOrderDetailInfo; |
| | | import com.gk.firework.Domain.SaleOrderInfo; |
| | | import com.gk.firework.Domain.Utils.BeanUtils; |
| | | import com.gk.firework.Domain.Utils.HttpUtils; |
| | | import com.gk.firework.Domain.Utils.StringUtils; |
| | | import com.gk.firework.Service.*; |
| | | import org.apache.axis.client.Call; |
| | | import org.apache.axis.client.Service; |
| | | import org.apache.axis.encoding.XMLType; |
| | | import org.apache.log4j.LogManager; |
| | | import org.apache.log4j.Logger; |
| | | import org.joda.time.DateTime; |
| | | import org.joda.time.format.DateTimeFormat; |
| | | import org.joda.time.format.DateTimeFormatter; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.scheduling.annotation.EnableScheduling; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import sun.misc.BASE64Decoder; |
| | | import sun.misc.BASE64Encoder; |
| | | |
| | | import javax.xml.bind.annotation.XmlElement; |
| | | import javax.xml.bind.annotation.XmlRootElement; |
| | | import java.io.IOException; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author : jingjy |
| | | * @date : 2022/1/26 17:15 |
| | | */ |
| | | @Configuration |
| | | @EnableScheduling |
| | | //@ConditionalOnProperty(prefix = "scheduling",name = "enabled",havingValue = "true") |
| | | public class ReportOrderTask { |
| | | private Logger logger = LogManager.getLogger(com.gk.firework.Scheduls.WarningTask.StockWarnTask.class); |
| | | private static final String url = "http://118.190.117.180:8888"; |
| | | @Value("${com.gk.firework.schedules.single.switch}") |
| | | private Boolean switchBtn; |
| | | @Autowired |
| | | EnterpriseService enterpriseService; |
| | | @Autowired |
| | | SaleOrderService saleOrderService; |
| | | @Autowired |
| | | SaleOrderDetailService saleOrderDetailService; |
| | | @Autowired |
| | | StockService stockService; |
| | | @Autowired |
| | | CustomerService customerService; |
| | | |
| | | //@Scheduled(cron = "0 0 2 * * ?") //每天凌晨两点执行一次 |
| | | @Scheduled(cron = "0/10 * * * * ?") //每隔10秒执行一次 |
| | | private void reportOrder() { |
| | | if (!switchBtn) return; |
| | | //1.获取需要上传的企业信息 |
| | | List<Enterprise>enterprises = enterpriseService.selectSaleEnterpriseForUpload(); |
| | | for (Enterprise enterprise : enterprises){ |
| | | if (StringUtils.isBlank(enterprise.getDlcompanycode()) || StringUtils.isBlank(enterprise.getDeviceid())){ |
| | | continue; |
| | | } |
| | | |
| | | //2.获取握手密码 |
| | | DlResult result = getHandshake(enterprise); |
| | | if (result == null || StringUtils.isBlank(result.getFwdz()) || StringUtils.isBlank(result.getWsmm())){ |
| | | continue; |
| | | } |
| | | //获取企业未上传销售数据 |
| | | List<SaleOrderInfo> orderInfos = saleOrderService.getWaitUploadOrderByEnterprise(enterprise); |
| | | if (orderInfos == null || orderInfos.size() == 0){ |
| | | continue; |
| | | } |
| | | |
| | | uploadOrders(orderInfos,result,enterprise); |
| | | } |
| | | |
| | | //3.上传数据 |
| | | //4.处理上传结果 |
| | | |
| | | } |
| | | |
| | | private DlResult getHandshake(Enterprise enterprise){ |
| | | String respnse = null; |
| | | DlResult result = new DlResult(); |
| | | Map params = new HashMap();//请求参数 |
| | | params.put("sbid", enterprise.getDeviceid());// |
| | | params.put("dwdm", enterprise.getDlcompanycode());// |
| | | |
| | | try { |
| | | respnse = HttpUtils.net(url+"/lsjk/Sbrz", params, "GET"); |
| | | JSONObject jsonResult = JSONObject.parseObject(respnse); |
| | | String wsmm = jsonResult.getString("wsmm"); |
| | | String fwdz = jsonResult.getString("fwdz"); |
| | | result.setFwdz(fwdz); |
| | | result.setWsmm(wsmm); |
| | | return result; |
| | | }catch (Exception e){ |
| | | return result; |
| | | } |
| | | } |
| | | |
| | | public void uploadOrders(List<SaleOrderInfo>orderInfos, DlResult result, Enterprise enterprise){ |
| | | |
| | | String servicesUrl = url+result.getFwdz(); |
| | | for (SaleOrderInfo orderInfo : orderInfos){ |
| | | Service service = new Service(); |
| | | Call call = null; |
| | | /** |
| | | * <?xml version="1.0" encoding="GBK"?> |
| | | * <sb> |
| | | * <sjbs>YH</sjbs><!--数据标注 --> |
| | | * <jylx>XX</jylx><!-- 交易类型(03-运输入库、09-退货、10-零散销售) --> |
| | | * <sjscsj>20100630151617</sjscsj><!--数据生成时间(精确到秒) --> |
| | | * <dwdm>XXXX</dwdm><!--单位代码(和烟花系统确定对应关系) --> |
| | | * <cjsbid>XXXX</cjsbid ><!--条码采集设备ID(定长32,不足补0) --> |
| | | * <zjlx>1</zjlx><!--证件类型(1-身份证、2-其他) --> |
| | | * <zjhm>XXXX</zjhm><!--证件号码,定长18 --> |
| | | * <tms> |
| | | * <bh>XXX</bh><!--条码编号--> |
| | | * <sj>20100630151617</sj><!--采集时间(精确到秒)--> |
| | | * </tms> |
| | | * </sb> |
| | | */ |
| | | try { |
| | | List<SaleOrderDetailInfo> detailInfos = saleOrderDetailService.selectByOrderCode(orderInfo.getCode()); |
| | | CustomerInfo customerInfo = customerService.getById(orderInfo.getCustomer()); |
| | | String date = new DateTime(orderInfo.getCreatedat()).toString("yyyyMMddHHmmss"); |
| | | ReportEntity reportEntity = new ReportEntity(); |
| | | reportEntity.setSjbs("YH"); |
| | | reportEntity.setJylx("10"); |
| | | reportEntity.setSjscsj(date); |
| | | reportEntity.setDwdm(enterprise.getDlcompanycode()); |
| | | reportEntity.setCjsbid(enterprise.getDeviceid()); |
| | | reportEntity.setZjlx("1"); |
| | | reportEntity.setZjhm(customerInfo.getIdcardnum()); |
| | | |
| | | List<TmsEntity>tmsEntities = new ArrayList<>(); |
| | | for (SaleOrderDetailInfo detailInfo : detailInfos){ |
| | | TmsEntity tmsEntity = new TmsEntity(detailInfo.getDirectioncode(),date); |
| | | tmsEntities.add(tmsEntity); |
| | | } |
| | | reportEntity.setTms(tmsEntities); |
| | | String xml = BeanUtils.beanToXml(reportEntity,ReportEntity.class); |
| | | //String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sb><sjbs>YH</sjbs><jylx>03</jylx><sjscsj>20160203221055</sjscsj><dwdm>ADW000000008422</dwdm><cjsbid>ADW000000008422652722194006466</cjsbid><zjlx>1</zjlx><zjhm>220283198201021916</zjhm><tms><bh>11230I4WY0F62203824</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203819</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203822</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203826</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203820</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203823</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203818</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203817</bh><sj>20160114195153</sj></tms><tms><bh>11230I4WY0F62203821</bh><sj>20160114195153</sj></tms></sb>"; |
| | | BASE64Encoder encoder = new BASE64Encoder(); |
| | | //String str = encoder.encode(sb.toString().trim().getBytes("utf-8")); |
| | | String str = encoder.encode(xml.getBytes("UTF-8")); |
| | | String cjsbid = enterprise.getDeviceid();//设备ID |
| | | String dwdm = enterprise.getDlcompanycode();//单位代码 |
| | | String wsmm = result.getWsmm();//握手密码 |
| | | call = (Call) service.createCall(); |
| | | call.setTargetEndpointAddress(servicesUrl); |
| | | call.setTimeout(5 * 60 * 1000);// 超时设定5分钟抛出异常 |
| | | call.setOperationName("lssjsb");// 调用方法 |
| | | call.setReturnType(XMLType.XSD_STRING);// 指定返回类型 |
| | | call.addParameter("str", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 |
| | | call.addParameter("sbid", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 |
| | | call.addParameter("dwdm", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 |
| | | call.addParameter("wsmm", org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);// 接口的参数 |
| | | String callResult = (String) call.invoke(new Object[] { str,cjsbid, dwdm,wsmm });// 调用服务并返回存在的对应数据 |
| | | BASE64Decoder decoder = new BASE64Decoder(); |
| | | String xmlCode = null; |
| | | try { |
| | | xmlCode = new String(decoder.decodeBuffer(callResult)); |
| | | DlReportResult reportResult = (DlReportResult) BeanUtils.xmlToBean(xmlCode,DlReportResult.class); |
| | | DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("yyyyMMddHHmmss"); |
| | | DateTime dateTime = dateTimeFormatter.parseDateTime(reportResult.getSjscsj()); |
| | | Date uploadAt = dateTime.toDate(); |
| | | orderInfo.setIsupload((byte)1); |
| | | orderInfo.setUploadat(uploadAt); |
| | | orderInfo.setReturncode(reportResult.getFhlx()); |
| | | } catch (IOException e1) { |
| | | e1.printStackTrace(); |
| | | orderInfo.setReturncode("999"); |
| | | orderInfo.setIsupload((byte)2); |
| | | } |
| | | } catch (Exception e) { |
| | | System.out.println("调用webservice失败!" + e.getMessage()); |
| | | orderInfo.setReturncode("998"); |
| | | orderInfo.setIsupload((byte)2); |
| | | } |
| | | saleOrderService.updateById(orderInfo); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | class DlResult{ |
| | | private String wsmm; |
| | | private String fwdz; |
| | | |
| | | DlResult() { |
| | | } |
| | | |
| | | public DlResult(String wsmm, String fwdz) { |
| | | this.wsmm = wsmm; |
| | | this.fwdz = fwdz; |
| | | } |
| | | |
| | | public String getWsmm() { |
| | | return wsmm; |
| | | } |
| | | |
| | | public void setWsmm(String wsmm) { |
| | | this.wsmm = wsmm; |
| | | } |
| | | |
| | | public String getFwdz() { |
| | | return fwdz; |
| | | } |
| | | |
| | | public void setFwdz(String fwdz) { |
| | | this.fwdz = fwdz; |
| | | } |
| | | |
| | | } |
| | | |
| | | @XmlRootElement(name="fh") |
| | | class ReportEntity{ |
| | | private String sjbs; |
| | | private String jylx; |
| | | private String sjscsj; |
| | | private String dwdm; |
| | | private String cjsbid; |
| | | private String zjlx; |
| | | private String zjhm; |
| | | private List<TmsEntity> tms; |
| | | |
| | | public String getSjbs() { |
| | | return sjbs; |
| | | } |
| | | |
| | | public void setSjbs(String sjbs) { |
| | | this.sjbs = sjbs; |
| | | } |
| | | |
| | | public String getJylx() { |
| | | return jylx; |
| | | } |
| | | |
| | | public void setJylx(String jylx) { |
| | | this.jylx = jylx; |
| | | } |
| | | |
| | | public String getSjscsj() { |
| | | return sjscsj; |
| | | } |
| | | |
| | | public void setSjscsj(String sjscsj) { |
| | | this.sjscsj = sjscsj; |
| | | } |
| | | |
| | | public String getDwdm() { |
| | | return dwdm; |
| | | } |
| | | |
| | | public void setDwdm(String dwdm) { |
| | | this.dwdm = dwdm; |
| | | } |
| | | |
| | | public String getCjsbid() { |
| | | return cjsbid; |
| | | } |
| | | |
| | | public void setCjsbid(String cjsbid) { |
| | | this.cjsbid = cjsbid; |
| | | } |
| | | |
| | | public String getZjlx() { |
| | | return zjlx; |
| | | } |
| | | |
| | | public void setZjlx(String zjlx) { |
| | | this.zjlx = zjlx; |
| | | } |
| | | |
| | | public String getZjhm() { |
| | | return zjhm; |
| | | } |
| | | |
| | | public void setZjhm(String zjhm) { |
| | | this.zjhm = zjhm; |
| | | } |
| | | |
| | | @XmlElement(name="tms") |
| | | public List<TmsEntity> getTms() { |
| | | return tms; |
| | | } |
| | | |
| | | public void setTms(List<TmsEntity> tms) { |
| | | this.tms = tms; |
| | | } |
| | | } |
| | | |
| | | @XmlRootElement(name="tms") |
| | | class TmsEntity{ |
| | | private String bh; |
| | | |
| | | private String sj; |
| | | |
| | | public String getBh() { |
| | | return bh; |
| | | } |
| | | |
| | | public void setBh(String bh) { |
| | | this.bh = bh; |
| | | } |
| | | |
| | | public TmsEntity() { |
| | | } |
| | | |
| | | public TmsEntity(String bh, String sj) { |
| | | this.bh = bh; |
| | | this.sj = sj; |
| | | } |
| | | |
| | | public String getSj() { |
| | | return sj; |
| | | } |
| | | |
| | | public void setSj(String sj) { |
| | | this.sj = sj; |
| | | } |
| | | } |
| | | |
| | | @XmlRootElement(name="fh") |
| | | class DlReportResult{ |
| | | private String sjbs; |
| | | |
| | | private String cjsbid; |
| | | |
| | | private String sjscsj; |
| | | |
| | | private String fhlx; |
| | | |
| | | private String fhsj; |
| | | |
| | | public String getSjbs() { |
| | | return sjbs; |
| | | } |
| | | |
| | | public void setSjbs(String sjbs) { |
| | | this.sjbs = sjbs; |
| | | } |
| | | |
| | | public String getCjsbid() { |
| | | return cjsbid; |
| | | } |
| | | |
| | | public void setCjsbid(String cjsbid) { |
| | | this.cjsbid = cjsbid; |
| | | } |
| | | |
| | | public String getSjscsj() { |
| | | return sjscsj; |
| | | } |
| | | |
| | | public void setSjscsj(String sjscsj) { |
| | | this.sjscsj = sjscsj; |
| | | } |
| | | |
| | | public String getFhlx() { |
| | | return fhlx; |
| | | } |
| | | |
| | | public void setFhlx(String fhlx) { |
| | | this.fhlx = fhlx; |
| | | } |
| | | |
| | | public String getFhsj() { |
| | | return fhsj; |
| | | } |
| | | |
| | | public void setFhsj(String fhsj) { |
| | | this.fhsj = fhsj; |
| | | } |
| | | } |