¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.timer; |
| | | |
| | | import com.bstek.bdf2.core.model.DefaultCompany; |
| | | import com.ld.igds.common.CoreCommonService; |
| | | import com.ld.igds.view.manager.TempManager; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * åºç¡æ¨¡åæ å宿¶å¨ä¸å¡é
ç½® |
| | | */ |
| | | @Slf4j |
| | | @Component(ScheduledBasic.BEAN_ID) |
| | | public class ScheduledBasic { |
| | | |
| | | public static final String BEAN_ID = "basic.scheduled"; |
| | | |
| | | @Resource |
| | | private TempManager thManager; |
| | | @Resource |
| | | private CoreCommonService coreCommonService; |
| | | |
| | | @Resource |
| | | private WeatherTimerService weatherTimerService; |
| | | |
| | | |
| | | /** |
| | | * æ¯é´é30åéæ§è¡ä¸æ¬¡ |
| | | */ |
| | | @Scheduled(cron = "0 0/30 * * * ?") |
| | | public void scheduled30() { |
| | | |
| | | //宿¶è·ååæºçæ¸©æ¹¿åº¦æ£æµç»æ |
| | | doExeTh(); |
| | | |
| | | //宿¶è·åæ°è±¡ä¿¡æ¯ |
| | | weatherTimerService.doExe(); |
| | | } |
| | | |
| | | /** |
| | | * 宿¶è·ååæºçæ¸©æ¹¿åº¦æ£æµç»æ |
| | | */ |
| | | private void doExeTh() { |
| | | List<DefaultCompany> list = coreCommonService.getCompanyList(); |
| | | if (null == list || list.isEmpty()) return; |
| | | |
| | | try { |
| | | for (DefaultCompany company : list) { |
| | | log.info("===================ç³»ç»å®æ¶è·ååæºä¸ç温湿度信æ¯-{}=======================", company.getId()); |
| | | thManager.scheduledCheck(company.getId()); |
| | | |
| | | Thread.sleep(500); |
| | | } |
| | | } catch (Exception e) { |
| | | e.getStackTrace(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.timer; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.constant.RedisConst; |
| | | import com.ld.igds.data.ConfigData; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | | import com.ld.igds.models.WeatherConf; |
| | | import com.ld.igds.models.WeatherInfo; |
| | | import com.ld.igds.timer.rk.RkData; |
| | | import com.ld.igds.timer.rk.RkDto; |
| | | import com.ld.igds.timer.rk.RkResult; |
| | | import com.ld.igds.util.HttpUtils; |
| | | import com.ld.igds.util.RedisUtil; |
| | | import com.ld.igds.weather.CoreWeatherService; |
| | | import com.ld.igds.weather.WeatherUtil; |
| | | import com.ld.igds.weather.notify.NotifyWeatherService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.converter.StringHttpMessageConverter; |
| | | import org.springframework.stereotype.Component; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.nio.charset.StandardCharsets; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @author: andy.jia |
| | | * @description: æ°è±¡ä¿¡æ¯è·å宿¶å¨ |
| | | * @version: <p> |
| | | * <p> |
| | | * 飿£è´è¿è´ä¹°å¤ç½æ°è±¡æå¡ï¼ |
| | | * æ°è±¡æå¡ï¼http://www.yiketianqi.com/ |
| | | * |
| | | * |
| | | * <p> 建大ä»ç§ç4Gåè®® |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class WeatherTimerService { |
| | | |
| | | @Resource(name = NotifyWeatherService.BEAN_ID) |
| | | private NotifyWeatherService notifyService; |
| | | |
| | | @Resource(name = CoreWeatherService.BEAN_ID) |
| | | private CoreWeatherService weatherService; |
| | | |
| | | @Autowired |
| | | private ConfigData configData; |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | public static String DEFAULT_URL = "https://v0.yiketianqi.com/api?unescape=1&version=v61&appid=49421971&appsecret=JmJE48Fv&cityid={cityid}"; |
| | | public static String DEFAULT_APP_ID = "49421971"; |
| | | public static String DEFAULT_APP_SECRET = "JmJE48Fv"; |
| | | |
| | | /** |
| | | * 建大ä»ç§4Gå¹³å°ç¼åkey |
| | | */ |
| | | public static String RK_WEATHER_V30_4G = "RK_WEATHER_V30_4G"; |
| | | |
| | | |
| | | /** |
| | | * 宿¶è·åæ°è±¡ä¿¡æ¯ï¼è¯·æ³¨æï¼ç±äºæ°è±¡æ¯æå¤ç½åèªå®ä¹æ°è±¡ç«ï¼ç³»ç»é»è®¤åªæ§è¡å
¶ä¸ä¸ç§æ¹å¼ |
| | | */ |
| | | public void doExe() { |
| | | |
| | | log.info("===========================ç³»ç»å®æ¶è·è·åæ°è±¡ä¿¡æ¯======================"); |
| | | |
| | | // è·åæ°è±¡ä¿¡æ¯é
ç½® |
| | | List<WeatherConf> list = weatherService.getConfData(null, null); |
| | | |
| | | if (null == list || list.isEmpty()) return; |
| | | |
| | | Date date = new Date(); |
| | | |
| | | for (WeatherConf conf : list) { |
| | | |
| | | if (null == conf.getWanTag()) conf.setWanTag(Constant.YN_N); |
| | | if (null == conf.getProtocol()) conf.setProtocol(ProtocolEnum.TCP_DEFAULT.getCode()); |
| | | |
| | | |
| | | //è°ç¨é£æ£è´è¿é»è®¤å¤ç½æ°è±¡ |
| | | if (Constant.YN_Y.equals(conf.getWanTag())) { |
| | | getWeatherByWeb(date, conf); |
| | | continue; |
| | | } |
| | | |
| | | //è°ç¨å»ºå¤§ä»ç§çæ°è±¡ |
| | | if (ProtocolEnum.RK_WEATHER_V30.getCode().equals(conf.getProtocol())) { |
| | | getWeatherByRkV30(date, conf); |
| | | continue; |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * ç³»ç»è°ç¨é£æ£è´è¿è´ä¹°çå¤ç½å¤©æ°æ°è±¡åè®® |
| | | * |
| | | * @param date |
| | | * @param conf |
| | | * @return |
| | | */ |
| | | public WeatherInfo getWeatherByWeb(Date date, WeatherConf conf) { |
| | | |
| | | if (StringUtils.isEmpty(conf.getCityId())) return null; |
| | | |
| | | try { |
| | | |
| | | if (null != configData.getWeatherPath()) { |
| | | DEFAULT_URL = configData.getWeatherPath(); |
| | | } |
| | | |
| | | String url = DEFAULT_URL.replace("{cityid}", conf.getCityId()) |
| | | .replace("{appid}", DEFAULT_APP_ID) |
| | | .replace("{appsecret}", DEFAULT_APP_SECRET); |
| | | |
| | | log.info("æ°è±¡è°ç¨è·å-url = {}", url); |
| | | |
| | | String result = HttpUtils.doGet(url); |
| | | if (null == result) { |
| | | log.error("å½åå¤ç½è·åæ°è±¡ä¿¡æ¯å¤±è´¥â¦â¦"); |
| | | return null; |
| | | } |
| | | |
| | | WeatherWebDto dto = JSON.parseObject(result, WeatherWebDto.class); |
| | | |
| | | if (StringUtils.isNotEmpty(dto.getErrcode())) { |
| | | log.error("å½åå¤ç½è·åæ°è±¡ä¿¡æ¯å¼å¸¸:{}", dto.getErrmsg()); |
| | | return null; |
| | | } |
| | | log.info("æ°è±¡è¿åç»æ={}", dto.toString()); |
| | | |
| | | WeatherInfo info = new WeatherInfo(); |
| | | info.setId(WeatherUtil.buildWeatherId(conf.getDeptId(), date)); |
| | | info.setAirLevel(dto.getAir_level()); |
| | | info.setCompanyId(conf.getCompanyId()); |
| | | info.setDeptId(conf.getDeptId()); |
| | | info.setHumidity(dto.getHumidity()); |
| | | info.setPm25(dto.getAir_pm25()); |
| | | info.setPressure(dto.getPressure()); |
| | | info.setSource(WeatherUtil.SOURCE_02); |
| | | info.setTemp(dto.getTem()); |
| | | info.setWeather(dto.getWea()); |
| | | info.setWindDirection(dto.getWin()); |
| | | info.setWindSpeed(dto.getWin_speed()); |
| | | info.setWindMeter(dto.getWin_meter()); |
| | | info.setCity(dto.getCity()); |
| | | info.setUpdateTime(date); |
| | | |
| | | notifyService.notify(info); |
| | | return info; |
| | | } catch (Exception e) { |
| | | log.error("æ°è±¡ä¿¡æ¯è·åå¼å¸¸:{}", e.getMessage(), e); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * æ ¹æ®å»ºå¤§ä»ç§äºV30åè®®è·åæ°è±¡ä¿¡æ¯ |
| | | * |
| | | * @param date |
| | | * @param conf |
| | | */ |
| | | private void getWeatherByRkV30(Date date, WeatherConf conf) { |
| | | |
| | | //è¥ç¨æ·ãå¯ç ãIPå°åæä¸ä¸ºç©ºåè¿å |
| | | if (StringUtils.isEmpty(conf.getAccount()) |
| | | || StringUtils.isEmpty(conf.getPassword()) |
| | | || StringUtils.isEmpty(conf.getIp())) { |
| | | return; |
| | | } |
| | | |
| | | //è·å身份认è¯token |
| | | String token = getToken(conf); |
| | | |
| | | //设置请æ±å¤´åæ° |
| | | HttpHeaders httpHeaders = new HttpHeaders(); |
| | | httpHeaders.set("authorization", token); |
| | | |
| | | String url = conf.getIp() + "/api/data/getRealTimeData"; |
| | | restTemplate.getMessageConverters().set(1, new StringHttpMessageConverter(StandardCharsets.UTF_8)); |
| | | HttpEntity<String> ans = restTemplate.exchange(url, HttpMethod.GET, |
| | | new HttpEntity<>(null, httpHeaders), String.class); |
| | | String body = ans.getBody(); |
| | | log.debug("-----å½å建大ä»ç§å¹³å°è·åæ°è±¡ä¿¡æ¯-----ï¼è¿åæ°æ®={}", body); |
| | | RkResult response = JSONObject.parseObject(body, RkResult.class); |
| | | if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) { |
| | | log.error("å½å建大ä»ç§å¹³å°è·åæ°è±¡ä¿¡æ¯å¤±è´¥......"); |
| | | return; |
| | | } |
| | | List<JSONObject> result = JSON.parseArray(JSONObject.toJSONString(response.getData()), JSONObject.class); |
| | | |
| | | JSONArray lists = (JSONArray) result.get(0).get("dataItem"); |
| | | List<RkDto> list = JSON.parseArray(JSONObject.toJSONString(lists), RkDto.class); |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | WeatherInfo info = new WeatherInfo(); |
| | | info.setId(WeatherUtil.buildWeatherId(conf.getDeptId(), date)); |
| | | info.setCompanyId(conf.getCompanyId()); |
| | | info.setDeptId(conf.getDeptId()); |
| | | info.setSource(WeatherUtil.SOURCE_01); |
| | | |
| | | List<RkData> dataList; |
| | | List<RkData> weatherList = new ArrayList<>(); |
| | | //æ ¹æ®å°å夿é项 |
| | | for (RkDto rkDto : list) { |
| | | //温湿度 |
| | | if ("11".equals(rkDto.getNodeId())) { |
| | | dataList = rkDto.getRegisterItem(); |
| | | for (RkData rkData : dataList) { |
| | | //温度 |
| | | if ("1".equals(rkData.getRegisterId())) { |
| | | info.setTemp(rkData.getData()); |
| | | } |
| | | //湿度 |
| | | if ("2".equals(rkData.getRegisterId())) { |
| | | info.setHumidity(rkData.getData()); |
| | | } |
| | | } |
| | | } |
| | | //é£åé£é |
| | | if ("1".equals(rkDto.getNodeId())) { |
| | | dataList = rkDto.getRegisterItem(); |
| | | for (RkData rkData : dataList) { |
| | | //é£å |
| | | if ("1".equals(rkData.getRegisterId())) { |
| | | info.setWindSpeed(rkData.getData() + "级"); |
| | | } |
| | | //é£é |
| | | if ("2".equals(rkData.getRegisterId())) { |
| | | info.setWindMeter(rkData.getData()); |
| | | } |
| | | } |
| | | } |
| | | //é£å |
| | | if ("2".equals(rkDto.getNodeId())) { |
| | | dataList = rkDto.getRegisterItem(); |
| | | for (RkData rkData : dataList) { |
| | | //é£å |
| | | if ("1".equals(rkData.getRegisterId())) { |
| | | info.setWindDirection(rkData.getData()); |
| | | } |
| | | } |
| | | } |
| | | //大æ°å |
| | | if ("14".equals(rkDto.getNodeId())) { |
| | | dataList = rkDto.getRegisterItem(); |
| | | for (RkData rkData : dataList) { |
| | | //大æ°å |
| | | if ("2".equals(rkData.getRegisterId())) { |
| | | info.setPressure(rkData.getData()); |
| | | } |
| | | } |
| | | } |
| | | //é¨é |
| | | if ("21".equals(rkDto.getNodeId())) { |
| | | dataList = rkDto.getRegisterItem(); |
| | | for (RkData rkData : dataList) { |
| | | // //ç¬æ¶é¨é |
| | | // if("1".equals(rkData.getRegisterId())){ |
| | | // info.setRainfall(rkData.getData()); |
| | | // } |
| | | //å½åé¨é |
| | | if ("2".equals(rkData.getRegisterId())) { |
| | | info.setRainfall(rkData.getData()); |
| | | } |
| | | } |
| | | } |
| | | //ææ é¨éª |
| | | if ("16".equals(rkDto.getNodeId())) { |
| | | weatherList = rkDto.getRegisterItem(); |
| | | } |
| | | } |
| | | for (RkData rkData : weatherList) { |
| | | //å¤©æ° |
| | | if ("1".equals(rkData.getRegisterId())) { |
| | | info.setWeather(rkData.getData()); |
| | | //æé¨éªæ¶å¤æå½åé¨é |
| | | if ("æé¨éª".equals(rkData.getData())) { |
| | | Double rainfall = Double.valueOf(info.getRainfall()); |
| | | if (rainfall <= 10) { |
| | | info.setWeather("å°é¨"); |
| | | } |
| | | if (rainfall > 10 && rainfall <= 25) { |
| | | info.setWeather("ä¸é¨"); |
| | | } |
| | | if (rainfall > 25 && rainfall <= 50) { |
| | | info.setWeather("大é¨"); |
| | | } |
| | | if (rainfall > 50) { |
| | | info.setWeather("æ´é¨"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | info.setUpdateTime(date); |
| | | info.setCity(conf.getCity()); |
| | | notifyService.notify(info); |
| | | } |
| | | |
| | | /** |
| | | * è·å身份认è¯çææaccessToken |
| | | * |
| | | * @param conf |
| | | * @return |
| | | */ |
| | | private String getToken(WeatherConf conf) { |
| | | //é»è®¤å
ä»ç¼åè·å |
| | | String key = RedisConst.buildKey(conf.getCompanyId(), RK_WEATHER_V30_4G, conf.getAccount()); |
| | | String token = (String) redisUtil.get(key); |
| | | |
| | | //è¥ç¼åè·å为空ï¼åéè¿æ¥å£è·åtoken |
| | | if (null == token) { |
| | | String url = conf.getIp() + "/api/getToken?loginName=" + conf.getAccount() + "&password=" + conf.getPassword(); |
| | | RkResult response = restTemplate.getForObject(url, RkResult.class); |
| | | if (null == response) { |
| | | log.error("å½å建大ä»ç§å¹³å°è·å身份认è¯ä¿¡æ¯å¤±è´¥..."); |
| | | return null; |
| | | } |
| | | log.info("è·åç身份认è¯ä¿¡æ¯={}", response); |
| | | |
| | | if (StringUtils.isEmpty(response.getCode()) || !"1000".equals(response.getCode())) { |
| | | log.error("å½å建大ä»ç§å¹³å°è·å身份认è¯ä¿¡æ¯å¤±è´¥......"); |
| | | return null; |
| | | } |
| | | JSONObject result = JSON.parseObject(JSONObject.toJSONString(response.getData())); |
| | | if (null == result) { |
| | | return null; |
| | | } |
| | | token = (String) result.get("token"); |
| | | |
| | | //å°tokenåå
¥ç¼å, |
| | | redisUtil.set(key, token, 2 * 60 * 60); |
| | | } |
| | | return token; |
| | | } |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.timer.zcl.service.impl; |
| | | |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | import com.ld.igds.models.InteGrain5328; |
| | | import com.ld.igds.timer.zcl.dto.InteGrainDto; |
| | | import com.ld.igds.timer.zcl.service.InteGrainService; |
| | | import org.hibernate.Session; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @Desc: 5328 æ¥å£ |
| | | * @author: czt |
| | | * @update-time: 2023/10/19 |
| | | */ |
| | | @Component |
| | | public class InteGrain5328ServiceImpl extends HibernateDao implements InteGrainService { |
| | | |
| | | @Override |
| | | public String getCompanyId() { |
| | | return "5328"; |
| | | } |
| | | |
| | | @Override |
| | | public void toSaveGrain(InteGrainDto dto) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | |
| | | InteGrain5328 data = new InteGrain5328(); |
| | | |
| | | data.setUuid(dto.getUuid()); |
| | | data.setBatchId(dto.getBatchId()); |
| | | data.setCompanyId(dto.getCompanyId()); |
| | | data.setDepotId(dto.getDepotId()); |
| | | data.setDepotName(dto.getDepotName()); |
| | | data.setHumidityIn(dto.getHumidityIn()); |
| | | data.setHumidityOut(dto.getHumidityOut()); |
| | | data.setTempIn(dto.getTempIn()); |
| | | data.setTempOut(dto.getTempOut()); |
| | | data.setReceiveDate(dto.getReceiveDate()); |
| | | data.setTempList(dto.getTempList()); |
| | | |
| | | data.setCheckUser(dto.getCheckUser()); |
| | | data.setCable(dto.getCable()); |
| | | data.setCableCir(dto.getCableCir()); |
| | | data.setRemark(dto.getRemark()); |
| | | data.setWeather(dto.getWeather()); |
| | | |
| | | |
| | | session.saveOrUpdate(data); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.timer.zcl.service.impl; |
| | | |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | import com.ld.igds.models.InteGrain5332; |
| | | import com.ld.igds.timer.zcl.dto.InteGrainDto; |
| | | import com.ld.igds.timer.zcl.service.InteGrainService; |
| | | import org.hibernate.Session; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * @Desc: 5332 æ¥å£ |
| | | * @author: czt |
| | | * @update-time: 2023/10/19 |
| | | */ |
| | | @Component |
| | | public class InteGrain5332ServiceImpl extends HibernateDao implements InteGrainService { |
| | | |
| | | @Override |
| | | public String getCompanyId() { |
| | | return "5332"; |
| | | } |
| | | |
| | | @Override |
| | | public void toSaveGrain(InteGrainDto dto) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | |
| | | InteGrain5332 data = new InteGrain5332(); |
| | | |
| | | data.setUuid(dto.getUuid()); |
| | | data.setBatchId(dto.getBatchId()); |
| | | data.setCompanyId(dto.getCompanyId()); |
| | | data.setDepotId(dto.getDepotId()); |
| | | data.setDepotName(dto.getDepotName()); |
| | | data.setHumidityIn(dto.getHumidityIn()); |
| | | data.setHumidityOut(dto.getHumidityOut()); |
| | | data.setTempIn(dto.getTempIn()); |
| | | data.setTempOut(dto.getTempOut()); |
| | | data.setReceiveDate(dto.getReceiveDate()); |
| | | data.setTempList(dto.getTempList()); |
| | | |
| | | data.setCheckUser(dto.getCheckUser()); |
| | | data.setCable(dto.getCable()); |
| | | data.setCableCir(dto.getCableCir()); |
| | | data.setRemark(dto.getRemark()); |
| | | data.setWeather(dto.getWeather()); |
| | | |
| | | |
| | | session.saveOrUpdate(data); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.inout.service; |
| | | |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.check.dto.CheckItemData; |
| | | import com.ld.igds.constant.RedisConst; |
| | | import com.ld.igds.m.InoutManageUtil; |
| | | import com.ld.igds.models.*; |
| | | import com.ld.igds.models.InoutSettle; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.DateUtil; |
| | | import com.ld.igds.util.RedisUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.hibernate.Session; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Component |
| | | public class HSettleService extends HibernateDao { |
| | | |
| | | public static final String BEAN_ID = "hSettleServiceImpl"; |
| | | |
| | | public static final String CACHE_SETTLE_ID = "SETTLE_ID"; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | |
| | | public void pageList(Page<InoutSettle> page, Map<String, Object> param) |
| | | throws Exception { |
| | | |
| | | String hql = " from " + InoutSettle.class.getName() |
| | | + " where companyId =:companyId and deptId =:deptId"; |
| | | Map<String, Object> args = new HashMap<String, Object>(); |
| | | args.put("companyId", ContextUtil.getCompanyId()); |
| | | args.put("deptId", ContextUtil.subDeptId(null)); |
| | | |
| | | if (null != param) { |
| | | String str = (String) param.get("depotId"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql += " and depotId=:depotId "; |
| | | args.put("depotId", str); |
| | | } |
| | | |
| | | str = (String) param.get("contractId"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql += " and contractId=:contractId "; |
| | | args.put("contractId", str); |
| | | } |
| | | |
| | | str = (String) param.get("bizType"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql += " and bizType=:bizType "; |
| | | args.put("bizType", str); |
| | | } |
| | | |
| | | Date date = (Date) param.get("start"); |
| | | if (null != date) { |
| | | hql += " and payTime >= :start "; |
| | | args.put("start", DateUtil.getCurZero(date)); |
| | | } |
| | | |
| | | date = (Date) param.get("end"); |
| | | if (null != date) { |
| | | hql += " and payTime <= :end "; |
| | | args.put("end", DateUtil.getNextZero(date)); |
| | | } |
| | | |
| | | } |
| | | String countHql = "select count(*) " + hql; |
| | | hql += " order by id desc "; |
| | | this.pagingQuery(page, hql, countHql, args); |
| | | } |
| | | |
| | | |
| | | public void saveData(InoutSettle data) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | if (StringUtils.isEmpty(data.getCompanyId())) { |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if (StringUtils.isEmpty(data.getDeptId())) { |
| | | data.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | if (null == data.getPayTime()) { |
| | | data.setPayTime(new Date()); |
| | | } |
| | | try { |
| | | data.setUpdateTime(new Date()); |
| | | if (StringUtils.isEmpty(data.getId())) { |
| | | String id = createId(data.getPayTime(), data.getCompanyId()); |
| | | data.setId(id); |
| | | session.save(data); |
| | | } else { |
| | | session.update(data); |
| | | } |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | public void delData(InoutSettle data) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | if (null != data.getId()) { |
| | | session.delete(data); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | public String createId(Date date, String companyId) { |
| | | // æ¶é´æ³æ ç¾ |
| | | String timeKey = DateFormatUtils.format(date, "yyyyMMdd"); |
| | | |
| | | // ä»ç¼åä¸è·åå·²æçç»ç»ç¼ç |
| | | String cacheKey = RedisConst.buildKey(companyId, this.CACHE_SETTLE_ID); |
| | | |
| | | String cacheId = (String) redisUtil.get(cacheKey); |
| | | |
| | | if (null != cacheId && cacheId.indexOf(timeKey) >= 0) { |
| | | String temp = cacheId.substring(cacheId.length() - 4); |
| | | Integer i = Integer.valueOf(temp); |
| | | i++; |
| | | cacheId = timeKey + String.format("%04d", i); |
| | | } else { |
| | | Map<String, Object> args = new HashMap<>(); |
| | | args.put("timeKey", timeKey + "%"); |
| | | List<InoutSettle> result = getMaxId(args); |
| | | |
| | | if (null == result || result.size() == 0) { |
| | | cacheId = timeKey + "0001"; |
| | | } else { |
| | | String temp = result.get(0).getId(); |
| | | String tempNum = temp.substring(temp.length() - 4); |
| | | Integer i = Integer.valueOf(tempNum); |
| | | cacheId = timeKey + String.format("%04d", ++i); |
| | | } |
| | | } |
| | | // æ´æ°ç¼å |
| | | redisUtil.set(cacheKey, cacheId); |
| | | |
| | | return cacheId; |
| | | } |
| | | |
| | | public List<InoutSettle> getMaxId(Map<String, Object> param) { |
| | | |
| | | String hql = "from " + InoutSettle.class.getName() + " where 1 = 1 "; |
| | | Map<String, Object> args = new HashMap<String, Object>(); |
| | | if (null != param) { |
| | | String str = (String) param.get("timeKey"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql += " and id like :timeKey"; |
| | | args.put("timeKey", str); |
| | | } |
| | | } |
| | | hql += " order by id desc "; |
| | | return this.query(hql, args); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo; |
| | | |
| | | import com.ld.igds.data.ConfigData; |
| | | import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.boot.CommandLineRunner; |
| | | import org.springframework.core.annotation.Order; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * é
ç½®éç³»ç»èªå¨å¯å¨æå¡ -- æ§è¡é¡ºåº20-29 |
| | | */ |
| | | @Component(ServerRunner.BEAN_ID) |
| | | @Order(value = 25) |
| | | public class ServerRunner implements CommandLineRunner { |
| | | |
| | | public static final String BEAN_ID = "beibo.serverRunnerV1"; |
| | | |
| | | @Autowired |
| | | private ConfigData configData; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine; |
| | | |
| | | @Override |
| | | public void run(String... strings) throws Exception { |
| | | |
| | | if (configData.getActive().indexOf("pro") >= 0) { |
| | | |
| | | beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT); |
| | | } |
| | | if (configData.getActive().indexOf("dev") >= 0) { |
| | | beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT); |
| | | } |
| | | if (configData.getActive().indexOf("uat") >= 0) { |
| | | beiboGrainV1ServerEngine.start(BeiboGrainV1ServerEngine.PORT); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1; |
| | | |
| | | import com.ld.igds.io.RemoteGrainService; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | | import com.ld.igds.io.request.CheckGrainRequest; |
| | | import com.ld.igds.io.response.GrainResponse; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.CommandBuild; |
| | | import com.ld.igds.protocol.beibo.grainv1.server.BeiboGrainV1ServerEngine; |
| | | import com.ld.io.api.InvokeResult; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * è´åç²®æ
åæºåè®® |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Component(RemoteGrainServiceImpl.BEAN_ID) |
| | | public class RemoteGrainServiceImpl implements RemoteGrainService { |
| | | |
| | | public static final String BEAN_ID = "beiboGrain.remoteGrainService"; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1ServerEngine beiboGrainV1ServerEngine; |
| | | |
| | | @Override |
| | | public String getProtocol() { |
| | | return ProtocolEnum.TCP_BEIBO_GRAIN_V1.getCode(); |
| | | } |
| | | |
| | | @Override |
| | | public GrainResponse checkGrain(CheckGrainRequest request) { |
| | | try { |
| | | //çæç²®æ
å½ä»¤ |
| | | String hexStr = CommandBuild.getInstance().getMsgCheck(request.getSerId()); |
| | | |
| | | // åéå½ä»¤ |
| | | InvokeResult result = beiboGrainV1ServerEngine.pushByMin(hexStr); |
| | | |
| | | log.error("å¹³å°------>>>>åæºï¼ç²®æ
æ£æµ-{}", hexStr); |
| | | |
| | | // å°è£
è¿åä¿¡æ¯ |
| | | if (InvokeResult.SUCCESS == result) { |
| | | return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(), |
| | | "ç²®æ
ééå½ä»¤åéæåï¼"); |
| | | } else { |
| | | log.error("å¹³å°------>>>>åæºï¼ç²®æ
æ£æµ-失败{}", result.getMessage()); |
| | | return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), |
| | | "å½ä»¤åéå¼å¸¸ï¼" + result.getMessage()); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("ç²®æ
æ£æµå¼å¸¸ï¼{}", e); |
| | | return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), "å端å¼å¸¸ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.analysis; |
| | | |
| | | import com.ld.igds.common.CoreCommonService; |
| | | import com.ld.igds.common.CoreSerService; |
| | | import com.ld.igds.constant.BizType; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.constant.DepotType; |
| | | import com.ld.igds.grain.GrainUtil; |
| | | import com.ld.igds.grain.dto.GrainItemInfo; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.notify.NotifyGrainInvoker; |
| | | import com.ld.igds.models.DepotConf; |
| | | import com.ld.igds.models.DeviceSer; |
| | | import com.ld.igds.models.DicSysConf; |
| | | import com.ld.igds.models.Grain; |
| | | import com.ld.igds.order.ExeOrderService; |
| | | import com.ld.igds.order.data.ExeRequest; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.ReMessage; |
| | | import com.ld.igds.protocol.beibo.grainv1.builder.ReMessageBuilder; |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.NumberUtil; |
| | | import com.ld.igds.warn.WarnUtils; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * å议解æ |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Component(AnalysisService.BEAN_ID) |
| | | public class AnalysisService { |
| | | |
| | | public static final String BEAN_ID = "beiboGrain.analysisService"; |
| | | |
| | | @Autowired |
| | | private CoreSerService coreSerService; |
| | | @Autowired |
| | | private CoreCommonService commonService; |
| | | @Autowired |
| | | private NotifyGrainInvoker notifyGrainInvoker; |
| | | @Autowired |
| | | private GrainUtil grainUtil; |
| | | @Autowired |
| | | private WarnUtils warnUtils; |
| | | @Autowired |
| | | private ExeOrderService exeOrderService; |
| | | |
| | | public static String result = ""; |
| | | |
| | | public static double ERROR_CHECK_TAG = -100.0; |
| | | |
| | | public static double FAULT_CHECK_TAG = 85.0; |
| | | |
| | | public static double ERROR_CHECK_TAG2 = 50; |
| | | public static String ERROR_HEX = "FFFF"; |
| | | |
| | | public static double MAX_TEMP = -50.0; |
| | | public static double MIN_TEMP = 50.0; |
| | | |
| | | /* |
| | | * 00000000FFEB90FEAA41D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFFDA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFFDF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFFD921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFFDD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFFE021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFFE021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFFE221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFFE321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFFE421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFFE621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF40013D10101039014110101010101010101000000000000000E5113500031A4C |
| | | * |
| | | * 00000000FFEB90FEAA |
| | | * 41 |
| | | * D821DD21DB21DE21DE21DA21DD21DE21DC21DC21DC21DC21DB21D821D721CE21D121 |
| | | * DD21DC21DF21DE21DE21DD21DA21DD21D921DD21DC21DA21D921D921D721D521D321 |
| | | * DD21DE21DF21DC21DF21DC21DA21DD21DD21DD21DC21DC21DC21DB21D821D721D121 |
| | | * DC21DF21DF21DD21DD21DA21DE21DD21DC21DE21DB21D821DA21DB21D821D721D321 |
| | | * DE21E021DD21DF21DF21DE21DB21DC21DF21DF21DD21DF21DB21DC21DB21FFFFFFFF |
| | | * DA21DC21D721DB21DB21DA21DB21D421DB21D921DC21D821D921D621D321FFFFFFFF |
| | | * DF21E021DE21DE21DB21DD21DC21E021DF21DD21DD21DC21DC21DC21DA21FFFFFFFF |
| | | * D921DD21DD21DE21DB21DD21DA21DB21DF21DD21DC21DB21DB21DB21D921FFFFFFFF |
| | | * DD21DC21DE21DD21DE21DC21DB21DC21DE21DE21DC21DC21DB21D921D921FFFFFFFF |
| | | * E021DD21DB21E021DF21DB21DB21D821DE21DE21DD21DD21DB21DB21DB21FFFFFFFF |
| | | * E021E021E021E221DC21DE21DF21DD21DD21DF21DF21DB21DC21DD21DC21FFFFFFFF |
| | | * |
| | | * E221E321E321E521E421DF21E321E321E321E521E321E121D921DE21FFFFFFFFFFFF |
| | | * E321E421E321E621E521E321E621E021E521E321E221E321DF21DE21FFFFFFFFFFFF |
| | | * E421E621E521E521E621E321E521E121E621E121E321E421E121DE21FFFFFFFFFFFF |
| | | * E621E421E521E521E521E321E521E421E121E321E521E321DF21E021FFFFFFFFFFFF |
| | | * FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF |
| | | * 40013D 101010 390141 101010101010101010 |
| | | * 00000000000000E51135 |
| | | * 00031A4C |
| | | * |
| | | * |
| | | * |
| | | * |
| | | * |
| | | * */ |
| | | /** |
| | | * |
| | | * |
| | | * @param hexStr |
| | | */ |
| | | public void analysis(String ip, int port, String hexStr) { |
| | | |
| | | result += hexStr; |
| | | if (result.length() < 1066 * 2) { |
| | | log.info("åæº------->>å¹³å°ï¼æ¥æé¿åº¦ä¸å¤ï¼çå¾
ä¸ä¸å
æ°æ®"); |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | |
| | | |
| | | //å°è£
æ°æ® |
| | | ReMessage reMessage = ReMessageBuilder.getInstance().buildMessage(result); |
| | | reMessage.setIp(ip); |
| | | reMessage.setPort(port); |
| | | log.info("åæº------->>å¹³å°ï¼ç²®æ
宿´æ¥æä¿¡æ¯={}", reMessage); |
| | | result = ""; |
| | | if (!BeiboGrainServerUtils.MSG_START.startsWith(reMessage.getStartStr())) { |
| | | log.error("åæº------->>å¹³å°ï¼è§£æç²®æ
å¤±è´¥ï¼æ¥æèµ·å§ç¬¦={}é误ï¼ä¸è§£æ", reMessage.getStartStr()); |
| | | return; |
| | | } |
| | | |
| | | //æ ¹æ®åæºå°åè·ååæºä¿¡æ¯ |
| | | DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), reMessage.getSerId()); |
| | | if (ser == null) { |
| | | log.error("åæº-------->>å¹³å°ï¼è§£æç²®æ
å¤±è´¥ï¼æªè·åå°ç³»ç»ç²®æ
主æºé
ç½®ï¼" + reMessage.getSerId()); |
| | | return; |
| | | } |
| | | |
| | | List<ExeRequest> list = exeOrderService.getInProgressOrderBySerId(BizType.GRAIN.getCode(), ser.getId()); |
| | | if (null == list || list.isEmpty()) { |
| | | String info = "ç²®æ
è§£æå¤±è´¥:åæº=" + ser.getName() + "没æè·åå°æå±ä»åºä¿¡æ¯ã"; |
| | | log.error("åæº------>>>å¹³å°ï¼" + info); |
| | | notifyGrainInvoker.notifyWeb(ser.getCompanyId(), OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); |
| | | return; |
| | | } |
| | | |
| | | ExeRequest exeRequest = list.get(0); |
| | | log.info("è·åç²®æ
å½ä»¤ä¿¡æ¯={}", exeRequest); |
| | | if (null == exeRequest) { |
| | | String info = "ç²®æ
è§£æå¤±è´¥:åæº=" + ser.getName() + "没æè·ååå²å½ä»¤ã"; |
| | | log.error("è´ååæº------>>>å¹³å°ï¼" + info); |
| | | return; |
| | | } |
| | | |
| | | DepotConf depotConf = commonService.getCacheDepotConf(exeRequest.getCompanyId(), exeRequest.getDepotId()); |
| | | if (null == depotConf) { |
| | | String info = "ç²®æ
è§£æå¤±è´¥:åæº=" + ser.getName() + "没æè·åå°ç²®æ
åæ°é
置信æ¯ã"; |
| | | log.error("åæº------>>>å¹³å°ï¼" + info); |
| | | notifyGrainInvoker.notifyWeb(ser.getCompanyId(), |
| | | OrderRespEnum.MSG_ERROR, BizType.GRAIN, info); |
| | | return; |
| | | } |
| | | |
| | | // é¦å
è·åå°ç³»ç»åæ°ï¼å¤ææ¯å¦éè¦æ¹æ¬¡èªå¨ä¼å |
| | | DicSysConf sysConf = commonService.getCacheSysConf(ser.getCompanyId()); |
| | | |
| | | reMessage.setCompanyId(ser.getCompanyId()); |
| | | analysisGrain(depotConf, reMessage, ser, exeRequest, sysConf); |
| | | } catch (Exception e) { |
| | | result = ""; |
| | | log.error("åæº------->>å¹³å°ï¼è§£æç²®æ
å¼å¸¸ï¼åå ={}", e.toString()); |
| | | } |
| | | } |
| | | |
| | | |
| | | private void analysisGrain(DepotConf depotConf, ReMessage reMessage, DeviceSer ser, ExeRequest exeRequest, DicSysConf sysConf) { |
| | | // ç²®æ
çæ¹æ¬¡å·éæ°æ ¹æ®é¢çè°æ´ |
| | | reMessage.setBatchId(ContextUtil.getBatchIdByFireq(depotConf.getGrainFreq())); |
| | | String grainStr = reMessage.getGrainStr(); |
| | | |
| | | log.debug("{}-{}=æ¶å°çç²®æ
ä¿¡æ¯={}", ser.getCompanyId(), ser.getName(), grainStr); |
| | | |
| | | |
| | | analysisStep0(depotConf, reMessage, ser, exeRequest, sysConf); |
| | | |
| | | log.info("åæº------>>>å¹³å°ï¼å½ä»¤ç±»å=8817--ç²®æ
å
¨é¨æ¶å°ï¼å¼å§è§£æ-{}-{}", |
| | | ser.getCompanyId(), ser.getName()); |
| | | } |
| | | |
| | | private void analysisStep0(DepotConf depotConf, ReMessage reMessage, |
| | | DeviceSer ser, ExeRequest exeRequest, DicSysConf sysConf) { |
| | | |
| | | List<DepotConf> depotConfs = null; |
| | | |
| | | // ä¸åæºå¤ä»ï¼æèµ·å§åæ¾å°æå¤§è¿è¡éé |
| | | if (Constant.YN_Y.equals(sysConf.getGrainMoreTag())) { |
| | | depotConfs = commonService.getCacheDepotConfBySerId2( |
| | | depotConf.getCompanyId(), ser.getId()); |
| | | } |
| | | |
| | | if (null == depotConfs) {// ä¸ä¸ªåæº1ä¸ªä» |
| | | if (DepotType.TYPE_02.getCode().equals(depotConf.getDepotType())) { |
| | | analysisStep2(depotConf, ser, exeRequest, reMessage, sysConf); |
| | | } else if (DepotType.TYPE_04.getCode().equals(depotConf.getDepotType())) { |
| | | analysisStep2(depotConf, ser, exeRequest, reMessage, sysConf); |
| | | } else { |
| | | analysisStep1(depotConf, ser, exeRequest, reMessage, sysConf); |
| | | } |
| | | |
| | | return; |
| | | } |
| | | |
| | | // ä¸åå å¤ä»æ
åµï¼èèåä»ééåå¤ä»éé |
| | | |
| | | // æ¹éééææå
³èä¸èµ·ééï¼éåæ§è¡ |
| | | for (DepotConf depotConfTemp : depotConfs) { |
| | | if (DepotType.TYPE_02.getCode().equals(depotConfTemp.getDepotType())) { |
| | | analysisStep2(depotConfTemp, ser, exeRequest, reMessage, sysConf); |
| | | } else if (DepotType.TYPE_04.getCode().equals(depotConfTemp.getDepotType())) { |
| | | analysisStep2(depotConfTemp, ser, exeRequest, reMessage, sysConf); |
| | | } else { |
| | | analysisStep1(depotConfTemp, ser, exeRequest, reMessage, sysConf); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * åçä»çç²®æ
è§£æ |
| | | * |
| | | * @param depotConf |
| | | * @param ser |
| | | * @param exeRequest |
| | | * @param reMessage |
| | | */ |
| | | private void analysisStep2(DepotConf depotConf, |
| | | DeviceSer ser, ExeRequest exeRequest, |
| | | ReMessage reMessage, DicSysConf sysConf) { |
| | | if (StringUtils.isEmpty(depotConf.getCableRule()) |
| | | || StringUtils.isEmpty(depotConf.getCableCir())) { |
| | | log.error("åæº------>>>å¹³å°ï¼å½åä»åºï¼{}-{}ï¼æ²¡ææ²¡æé
ç½®å¸çº¿è§åï¼æ æ³è§£æç²®æ
ä¿¡æ¯â¦â¦", |
| | | ser.getCompanyId(), depotConf.getDepotName()); |
| | | return; |
| | | } |
| | | |
| | | String[] cableRuleAtt = depotConf.getCableRule().split("-"); |
| | | String[] cableCirAtt = depotConf.getCableCir().split("-"); |
| | | |
| | | if (cableRuleAtt.length != cableCirAtt.length) { |
| | | log.error("åæº------>>>å¹³å°ï¼å½åä»åºï¼{}-{}ï¼å¸çº¿è§å䏿£ç¡®ï¼æ æ³è§£æç²®æ
ä¿¡æ¯â¦â¦", ser.getCompanyId(), depotConf.getDepotName()); |
| | | return; |
| | | } |
| | | |
| | | |
| | | //é¿å
空æé |
| | | if (null == depotConf.getCableCone()) depotConf.setCableCone(Constant.CABLE_CONE_0); |
| | | |
| | | // è·åæå¤§çå±é
ç½®--é»è®¤æ¯ä¸åé½ä¸æ · |
| | | int layMax = Integer.valueOf(cableCirAtt[0]); |
| | | for (int i = 0; i < cableCirAtt.length; i++) { |
| | | if (Integer.valueOf(cableCirAtt[i]) >= layMax) layMax = Integer.valueOf(cableCirAtt[i]); |
| | | } |
| | | |
| | | //ç²®æ
ä¿¡æ¯ |
| | | String strPoints = reMessage.getGrainStr(); |
| | | |
| | | log.info("------çä»ç²®æ
æ¥æ={}------", strPoints); |
| | | |
| | | int sumNum = 0, cableZ = 1; // sumNum å
±å¤å°æ ¹çµç¼ï¼cableZ å±çæå¤§å¼ï¼é¥å½¢ä»è¡¥é½æå¤§å± |
| | | |
| | | for (int i = 0; i < cableCirAtt.length; i++) { |
| | | if (Integer.valueOf(cableCirAtt[i]) > cableZ) { |
| | | cableZ = Integer.valueOf(cableCirAtt[i]); |
| | | } |
| | | sumNum += Integer.valueOf(cableRuleAtt[i]); |
| | | } |
| | | int cableZTemp = 1;// å½åä»çæå¤§å± |
| | | cableZTemp = cableZ; |
| | | //夿æå¤§å±è·åæºç屿°æ¯å¦ä¸è´ |
| | | if(cableZ < ser.getCableZ()){ |
| | | cableZ = ser.getCableZ(); |
| | | } |
| | | |
| | | // æ ¹æ®å±è¡åè·åæå®é¿åº¦ |
| | | int start = 4 * (depotConf.getCableStart() - ser.getCableStart()) * cableZ; |
| | | int len = 4 * cableZ * sumNum; |
| | | |
| | | strPoints = strPoints.substring(start, start + len); |
| | | log.info("åæº------>>>å¹³å°ï¼è¿åç²®æ
宿´ä¿¡æ¯ï¼æå±ç»ç»={}ï¼åæº={}", ser.getCompanyId(), ser.getName()); |
| | | |
| | | // å°ç²®æ
è§£æææ°ç» |
| | | List<Double> temps = new ArrayList<>(); |
| | | double tempValue; |
| | | String temp; |
| | | int symbol = 0; //符å·ä½ |
| | | int num = 0; //æ è®°è§£æç屿° |
| | | for (int i = 0; i < strPoints.length() / 4; i++) { |
| | | if(num == cableZ){ |
| | | num = 0; |
| | | } |
| | | if(num < cableZTemp){ |
| | | temp = strPoints.substring(i * 4, i * 4 + 4); |
| | | if (temp == null) { |
| | | temp = "0000"; |
| | | } |
| | | //é«ä½ä½è½¬æ¢å转为16ä½äºè¿å¶å符串 |
| | | temp = BytesUtil.tran_LH(temp); |
| | | if(ERROR_HEX.equals(temp)){ |
| | | tempValue = Constant.ERROR_TEMP; |
| | | }else { |
| | | //10è¿å¶è½¬16ä½ç2è¿å¶ |
| | | temp = BytesUtil.hexString2binaryString(temp, 16); |
| | | //符å·ä½ |
| | | symbol = Integer.valueOf(temp.substring(0, 1)); |
| | | //è·åæ¸©åº¦å¼ |
| | | tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625; |
| | | //è¥ä¸ºè´ï¼åè¡¥ç ï¼ååå 1 |
| | | if (symbol == 1) { |
| | | tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625; |
| | | } |
| | | tempValue = NumberUtil.keepPrecision(tempValue, 1); |
| | | } |
| | | |
| | | //éæ£å¸¸å¼ |
| | | if (tempValue > ERROR_CHECK_TAG2) { |
| | | tempValue = Constant.ERROR_TEMP; |
| | | } |
| | | |
| | | // æ
éå¼å¤ç |
| | | if (tempValue >= FAULT_CHECK_TAG) { |
| | | tempValue = Constant.FAULT_TEMP; |
| | | } |
| | | temps.add(tempValue); |
| | | } |
| | | num ++; |
| | | } |
| | | |
| | | log.debug("-------CheckGrainRequest--={}", exeRequest.toString()); |
| | | |
| | | // å°éåè§£ææåæ æ°æ® |
| | | addPoint2(temps, reMessage, depotConf, exeRequest, sysConf); |
| | | } |
| | | |
| | | /** |
| | | * è·åå½åè·æå¨å |
| | | * |
| | | * @param curRoot |
| | | * @param cableRuleAtt |
| | | * @return |
| | | */ |
| | | private int getCurCir(int curRoot, String[] cableRuleAtt) { |
| | | |
| | | int sum = 0; |
| | | for (int i = 0; i < cableRuleAtt.length; i++) { |
| | | sum += Integer.valueOf(cableRuleAtt[i]); |
| | | if (curRoot <= sum) return i + 1; |
| | | } |
| | | |
| | | return 1; |
| | | } |
| | | |
| | | /** |
| | | * å¹³æ¹ä»çè§£æï¼è§£æéè¦èèå½åæ¯å¦å¯ç¨çä¸åæºå¤ä» |
| | | * |
| | | * @param depotConf |
| | | * @param ser |
| | | * @param exeRequest |
| | | * @param reMessage |
| | | */ |
| | | private void analysisStep1(DepotConf depotConf, DeviceSer ser, |
| | | ExeRequest exeRequest, ReMessage reMessage, DicSysConf sysConf) { |
| | | // ç²®æ
ä¿¡æ¯ |
| | | String strPoints = reMessage.getGrainStr(); |
| | | |
| | | String[] attCable = depotConf.getCableRule().split("-"); |
| | | int cableZ = Integer.valueOf(attCable[0]); |
| | | int cableY = Integer.valueOf(attCable[1]); |
| | | int cableX = Integer.valueOf(attCable[2]); |
| | | |
| | | // æ ¹æ®å±è¡åè·åæå®é¿åº¦ |
| | | int start = 4 * (depotConf.getCableStart() - ser.getCableStart()) |
| | | * cableZ * cableY; |
| | | int len = 4 * cableZ * cableY * cableX; |
| | | |
| | | log.info("åæº------>>>å¹³å°ï¼è¿åç²®æ
宿´ä¿¡æ¯ï¼æå±ç»ç»={}ï¼åæº={}", ser.getCompanyId(), ser.getName()); |
| | | |
| | | strPoints = strPoints.substring(start, start + len); |
| | | |
| | | // å°ç²®æ
è§£æææ°ç» |
| | | List<Double> temps = new ArrayList<>(); |
| | | double tempValue; |
| | | String temp; |
| | | int symbol = 0; |
| | | for (int i = 0; i < strPoints.length() / 4; i++) { |
| | | temp = strPoints.substring(i * 4, i * 4 + 4); |
| | | //é«ä½ä½è½¬æ¢å转为16ä½äºè¿å¶å符串 |
| | | temp = BytesUtil.tran_LH(temp); |
| | | if (temp == null) { |
| | | temp = "0000"; |
| | | } |
| | | |
| | | if(ERROR_HEX.equals(temp)){ |
| | | tempValue = Constant.ERROR_TEMP; |
| | | }else { |
| | | //10è¿å¶è½¬16ä½ç2è¿å¶ |
| | | temp = BytesUtil.hexString2binaryString(temp, 16); |
| | | //符å·ä½ |
| | | symbol = Integer.valueOf(temp.substring(0, 1)); |
| | | //è·åæ¸©åº¦å¼ |
| | | tempValue = BytesUtil.biannary2Decimal(temp.substring(6)) * 0.0625; |
| | | //è¥ä¸ºè´ï¼åè¡¥ç ï¼ååå 1 |
| | | if (symbol == 1) { |
| | | tempValue = ((~BytesUtil.biannary2Decimal(temp.substring(6))) + 1) * 0.0625; |
| | | } |
| | | tempValue = NumberUtil.keepPrecision(tempValue, 1); |
| | | } |
| | | |
| | | // 说æè§£æçæ°æ®æé®é¢ |
| | | if (tempValue == ERROR_CHECK_TAG || tempValue == ERROR_CHECK_TAG2) { |
| | | tempValue = Constant.ERROR_TEMP; |
| | | } |
| | | // æ
éå¼å¤ç |
| | | if (tempValue >= FAULT_CHECK_TAG) { |
| | | tempValue = Constant.FAULT_TEMP; |
| | | } |
| | | temps.add(tempValue); |
| | | } |
| | | |
| | | log.debug("-------CheckGrainRequest--={}", exeRequest.toString()); |
| | | |
| | | // å°éåè§£ææåæ æ°æ® |
| | | addPoint1(temps, reMessage, depotConf, ser, exeRequest, sysConf); |
| | | } |
| | | |
| | | /** |
| | | * å¹³æ¿ä»ï¼è§£æç¬¬äºæ¥ï¼è§£æå°åæ æ°æ® |
| | | * |
| | | * @param temps |
| | | * @throws Exception |
| | | */ |
| | | private void addPoint1(List<Double> temps, ReMessage msg, |
| | | DepotConf depotConf, DeviceSer ser, ExeRequest exeRequest, |
| | | DicSysConf sysConf) { |
| | | |
| | | //æ ¹æ®çµç¼èµ·å§æ¹ä½åå¸çº¿æ¹åï¼å¯¹ç²®æ
æ°æ®è¿è¡è°æ´ |
| | | if (null != depotConf.getStartOrientation()) { |
| | | temps = reversalGrainPoint(temps, depotConf); |
| | | } |
| | | |
| | | //è¥èµ·ç¹ç¹ä½ä¸ºåºé¨ï¼åå°ç²®æ
æ°æ®è¿è¡ç¿»è½¬ |
| | | if (null != depotConf.getStartPoint() |
| | | && Constant.GRAIN_START_POINT_BELOW.equals(depotConf.getStartPoint())) { |
| | | temps = grainUtil.reversalUpAndDown(temps, depotConf.getCableRule()); |
| | | } |
| | | |
| | | //è¥é
ç½®å±è¡è½¬æ¢ï¼åå°ç²®æ
æ°æ®è¿è¡å±è¡è½¬æ¢ |
| | | if (StringUtils.isNotEmpty(depotConf.getStartConvert())) { |
| | | temps = convertGrainPoint(temps, depotConf); |
| | | String[] cableRule = depotConf.getCableRule().split("-"); |
| | | //转æ¢å±è¡åé
ç½® |
| | | if (Constant.GRAIN_CONVERT_CLOCKWISE.equals(depotConf.getStartConvert()) |
| | | || Constant.GRAIN_CONVERT_ANTICLOCKWISE.equals(depotConf.getStartConvert())) { |
| | | depotConf.setCableRule(Integer.valueOf(cableRule[1]) + "-" + Integer.valueOf(cableRule[0]) + "-" + Integer.valueOf(cableRule[2])); |
| | | } |
| | | } |
| | | |
| | | String[] attCable = depotConf.getCableRule().split("-"); |
| | | int cableZ = Integer.valueOf(attCable[0]); |
| | | int cableY = Integer.valueOf(attCable[1]); |
| | | int cableX = Integer.valueOf(attCable[2]); |
| | | |
| | | Grain grain = new Grain(); |
| | | grain.setDepotId(depotConf.getDepotId()); |
| | | grain.setCompanyId(depotConf.getCompanyId()); |
| | | grain.setCable(depotConf.getCableRule()); |
| | | grain.setBatchId(msg.getBatchId()); |
| | | |
| | | int humidity = -100; |
| | | int tem = -100; |
| | | String substring = ""; |
| | | |
| | | //è§£æä»å
温ä»å
湿 |
| | | int thConf = Integer.valueOf(depotConf.getThConf()); |
| | | int start = 0, end = 6; |
| | | if(thConf > 1){ |
| | | start += 6*thConf; //12-18 |
| | | end += start; |
| | | } |
| | | String thStr = msg.getThStr().substring(start, end); |
| | | humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); |
| | | grain.setHumidityIn(humidity * 1.0); |
| | | substring = thStr.substring(2); |
| | | tem = BytesUtil.hexToInt(substring); |
| | | grain.setTempIn(tem * 0.1); |
| | | if(substring.startsWith("1")){ |
| | | grain.setTempIn(tem * -0.1); |
| | | } |
| | | |
| | | grain.setReceiveDate(new Date()); |
| | | grain.setRemark("粮温æ£å¸¸"); |
| | | |
| | | // è·åç¼åä¸çå½ä»¤ä¿¡æ¯ |
| | | grain.setCheckUser(exeRequest.getExeUser()); |
| | | |
| | | double max = MAX_TEMP, min = MIN_TEMP, sumT = 0.0, sumNum = cableX |
| | | * cableY * cableZ; |
| | | |
| | | // æ ¡éªåå®ç°ç»è®¡ï¼çæééç¹ä¿¡æ¯ |
| | | List<GrainItemInfo> listGrainItems = new ArrayList<>(); |
| | | int i = 1; |
| | | for (Double temp : temps) { |
| | | if (temp == Constant.ERROR_TEMP || temp == Constant.FAULT_TEMP || temp == Constant.ADD_TEMP) { |
| | | sumNum--; |
| | | } else { |
| | | sumT += temp; |
| | | if (temp > max) { |
| | | max = temp; |
| | | } |
| | | if (temp < min) { |
| | | min = temp; |
| | | } |
| | | } |
| | | listGrainItems.add(new GrainItemInfo(i, temp)); |
| | | i++; |
| | | } |
| | | |
| | | if (sumNum == 0) { |
| | | sumNum = 1; |
| | | grain.setRemark("å½åç²®æ
ééå¼å¸¸"); |
| | | } |
| | | //è¿æ»¤æ¯è¾ç¨çæå¤§æå°å¼ |
| | | if (max == MAX_TEMP) { |
| | | max = 0.0; |
| | | } |
| | | if (min == MIN_TEMP) { |
| | | min = 0.0; |
| | | } |
| | | if (null != depotConf.getTempMax() && max > depotConf.getTempMax()) { |
| | | grain.setRemark("ä»åºé
ç½®é«æ¸©è¦åå¼ï¼" + depotConf.getTempMax() + "ï¼å½åæ£æµé«æ¸©å¼ï¼" |
| | | + max); |
| | | warnUtils.addGrainWarn(depotConf, grain); |
| | | } |
| | | |
| | | grain.setTempAve(sumT / sumNum); |
| | | grain.setTempMax(max); |
| | | grain.setTempMin(min); |
| | | grain.setPoints(StringUtils.join(temps, ",")); |
| | | |
| | | String depotIds = exeRequest.getDepotIds(); |
| | | |
| | | boolean notifyWeb = true; |
| | | if (null != depotIds && depotIds.indexOf(depotConf.getDepotId()) == -1) { |
| | | notifyWeb = false; |
| | | } |
| | | // ç¨æ·å°è£
å¥½æ°æ®å³å¯ |
| | | notifyGrainInvoker.analysisSuccess(grain, listGrainItems, depotConf, |
| | | sysConf, notifyWeb, exeRequest); |
| | | } |
| | | |
| | | /** |
| | | * åçä»è§£ææ¥éª¤ |
| | | * |
| | | * @param temps |
| | | * @param msg |
| | | * @param depotConf |
| | | * @param exeRequest |
| | | */ |
| | | private void addPoint2(List<Double> temps, ReMessage msg, |
| | | DepotConf depotConf, ExeRequest exeRequest, |
| | | DicSysConf sysConf) { |
| | | |
| | | Grain grain = new Grain(); |
| | | grain.setDepotId(depotConf.getDepotId()); |
| | | grain.setCompanyId(depotConf.getCompanyId()); |
| | | grain.setCable(depotConf.getCableRule()); |
| | | grain.setCableCir(depotConf.getCableCir()); |
| | | grain.setBatchId(msg.getBatchId()); |
| | | |
| | | int humidity = -100; |
| | | int tem = -100; |
| | | String substring = ""; |
| | | |
| | | //è§£æä»å
温ä»å
湿 |
| | | int thConf = Integer.valueOf(depotConf.getThConf()); |
| | | int start = 0, end = 6; |
| | | if(thConf > 1){ |
| | | start += 6*thConf; //12-18 |
| | | end += start; |
| | | } |
| | | String thStr = msg.getThStr().substring(start, end); |
| | | humidity = BytesUtil.hexToInt(thStr.substring(0, 2)); |
| | | grain.setHumidityIn(humidity * 1.0); |
| | | substring = thStr.substring(2); |
| | | tem = BytesUtil.hexToInt(substring); |
| | | grain.setTempIn(tem * 0.1); |
| | | if(substring.startsWith("1")){ |
| | | grain.setTempIn(tem * -0.1); |
| | | } |
| | | |
| | | grain.setReceiveDate(new Date()); |
| | | grain.setRemark("粮温æ£å¸¸"); |
| | | grain.setCheckUser(exeRequest.getExeUser()); |
| | | |
| | | double max = MAX_TEMP, min = MIN_TEMP, sumT = 0.0; |
| | | |
| | | int sumNum = temps.size(); |
| | | List<GrainItemInfo> listGrainItems = new ArrayList<>(); |
| | | int i = 1; |
| | | for (Double temp : temps) { |
| | | if (temp == Constant.ERROR_TEMP || temp == Constant.FAULT_TEMP || temp == Constant.ADD_TEMP) { |
| | | sumNum--; |
| | | } else { |
| | | sumT += temp; |
| | | if (temp > max) { |
| | | max = temp; |
| | | } |
| | | if (temp < min) { |
| | | min = temp; |
| | | } |
| | | } |
| | | listGrainItems.add(new GrainItemInfo(i, temp)); |
| | | i++; |
| | | } |
| | | |
| | | if (sumNum == 0) { |
| | | sumNum = 1; |
| | | grain.setRemark("å½åç²®æ
ééå¼å¸¸"); |
| | | } |
| | | //è¿æ»¤æ¯è¾ç¨çæå¤§æå°å¼ |
| | | if (max == MAX_TEMP) { |
| | | max = 0.0; |
| | | } |
| | | if (min == MIN_TEMP) { |
| | | min = 0.0; |
| | | } |
| | | if (null != depotConf.getTempMax() && max > depotConf.getTempMax()) { |
| | | grain.setRemark("ä»åºé
ç½®é«æ¸©è¦åå¼ï¼" + depotConf.getTempMax() + "ï¼å½åæ£æµé«æ¸©å¼ï¼" |
| | | + max); |
| | | warnUtils.addGrainWarn(depotConf, grain); |
| | | } |
| | | |
| | | grain.setTempAve(sumT / sumNum); |
| | | grain.setTempMax(max); |
| | | grain.setTempMin(min); |
| | | grain.setPoints(StringUtils.join(temps, ",")); |
| | | //夿æ¯å¦æ¯é¥å½¢ä»ï¼æ¯çè¯è¿è¡é¥å½¢ä»è¡¥ç¹ |
| | | if(StringUtils.isNotEmpty(depotConf.getCableCone())){ |
| | | //ä¸é¥å½¢è¡¥ç¹ |
| | | if(Constant.CABLE_CONE_1.equals(depotConf.getCableCone())){ |
| | | grain.setPoints(upConePoints(depotConf, grain.getPoints())); |
| | | } |
| | | //ä¸é¥å½¢è¡¥ç¹ |
| | | if(Constant.CABLE_CONE_2.equals(depotConf.getCableCone())){ |
| | | grain.setPoints(downConePoints(depotConf, grain.getPoints())); |
| | | } |
| | | } |
| | | |
| | | String depotIds = exeRequest.getDepotIds(); |
| | | boolean notifyWeb = true; |
| | | if (null != depotIds && depotIds.indexOf(depotConf.getDepotId()) == -1) { |
| | | notifyWeb = false; |
| | | } |
| | | |
| | | // ç¨æ·å°è£
å¥½æ°æ®å³å¯ |
| | | notifyGrainInvoker.analysisSuccess(grain, listGrainItems, depotConf, |
| | | sysConf, notifyWeb, exeRequest); |
| | | } |
| | | |
| | | private List<Double> convertGrainPoint(List<Double> temps, DepotConf conf) { |
| | | if (Constant.GRAIN_CONVERT_DEFAULT.equals(conf.getStartConvert())) { |
| | | //è¥å±è¡è½¬æ¢ä¸ºé»è®¤ï¼åç´æ¥è¿å |
| | | return temps; |
| | | } |
| | | |
| | | //顺æ¶éè½¬æ¢ |
| | | if (Constant.GRAIN_CONVERT_CLOCKWISE.equals(conf.getStartConvert())) { |
| | | return grainUtil.convertRight(temps, conf.getCableRule()); |
| | | } |
| | | //éæ¶éè½¬æ¢ |
| | | if (Constant.GRAIN_CONVERT_ANTICLOCKWISE.equals(conf.getStartConvert())) { |
| | | return grainUtil.convertLeft(temps, conf.getCableRule()); |
| | | } |
| | | |
| | | return temps; |
| | | } |
| | | |
| | | private List<Double> reversalGrainPoint(List<Double> temps, DepotConf conf) { |
| | | if (StringUtils.isEmpty(conf.getStartOrientation())) { |
| | | //è¥èµ·å§æ¹ä½ä¸ºç©ºï¼åé»è®¤èµ·å§æ¹ä½åæ¹åï¼ç´æ¥è¿å |
| | | return temps; |
| | | } |
| | | //èµ·å§æ¹ä½ä¸ºå³è¾¹æ¶ |
| | | if (Constant.GRAIN_START_ORIENTATION_RIGHT.equals(conf.getStartOrientation())) { |
| | | if (StringUtils.isEmpty(conf.getStartDirection())) { |
| | | //å³è¾¹èµ·å§ï¼é»è®¤çºµåå¸çº¿ï¼ç´æ¥è¿å |
| | | return temps; |
| | | } |
| | | if (Constant.GRAIN_START_DIRECTION_TRANSVERSE.equals(conf.getStartDirection())) { |
| | | //å³è¾¹èµ·å§ï¼æ¨ªåå¸çº¿ |
| | | return grainUtil.reversalRight1(temps, conf.getCableRule()); |
| | | } |
| | | //å³è¾¹èµ·å§ï¼é»è®¤çºµåå¸çº¿ï¼ç´æ¥è¿å |
| | | return temps; |
| | | } |
| | | //èµ·å§æ¹ä½ä¸ºå³ä¸æ¶ |
| | | if (Constant.GRAIN_START_ORIENTATION_RIGHT_UP.equals(conf.getStartOrientation())) { |
| | | if (StringUtils.isEmpty(conf.getStartDirection())) { |
| | | //å³ä¸èµ·å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalRightUp2(temps, conf.getCableRule()); |
| | | } |
| | | if (Constant.GRAIN_START_DIRECTION_TRANSVERSE.equals(conf.getStartDirection())) { |
| | | //å³ä¸èµ·å§ï¼æ¨ªåå¸çº¿ |
| | | return grainUtil.reversalRightUp1(temps, conf.getCableRule()); |
| | | } |
| | | //å³ä¸èµ·å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalRightUp2(temps, conf.getCableRule()); |
| | | } |
| | | //èµ·å§æ¹ä½ä¸ºå·¦è¾¹æ¶ |
| | | if (Constant.GRAIN_START_ORIENTATION_LEFT.equals(conf.getStartOrientation())) { |
| | | if (StringUtils.isEmpty(conf.getStartDirection())) { |
| | | //左边起å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalLeft2(temps, conf.getCableRule()); |
| | | } |
| | | if (Constant.GRAIN_START_DIRECTION_TRANSVERSE.equals(conf.getStartDirection())) { |
| | | //左边起å§ï¼æ¨ªåå¸çº¿ |
| | | return grainUtil.reversalLeft1(temps, conf.getCableRule()); |
| | | } |
| | | //左边起å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalLeft2(temps, conf.getCableRule()); |
| | | } |
| | | //èµ·å§æ¹ä½ä¸ºå·¦ä¸æ¶ |
| | | if (Constant.GRAIN_START_ORIENTATION_LEFT_UP.equals(conf.getStartOrientation())) { |
| | | if (StringUtils.isEmpty(conf.getStartDirection())) { |
| | | //å·¦ä¸èµ·å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalLeftUp2(temps, conf.getCableRule()); |
| | | } |
| | | if (Constant.GRAIN_START_DIRECTION_TRANSVERSE.equals(conf.getStartDirection())) { |
| | | //å·¦ä¸èµ·å§ï¼æ¨ªåå¸çº¿ |
| | | return grainUtil.reversalLeftUp1(temps, conf.getCableRule()); |
| | | } |
| | | //å·¦ä¸èµ·å§ï¼é»è®¤çºµåå¸çº¿ |
| | | return grainUtil.reversalLeftUp2(temps, conf.getCableRule()); |
| | | } |
| | | |
| | | return temps; |
| | | } |
| | | |
| | | /** |
| | | * ä¸é¥å½¢è¡¥ç¹(ç¹ä½ä½ç½®æ£ç¡®ï¼éè¦è¡¥ç¹ä¸º-102) |
| | | * |
| | | * @param depotConf |
| | | * @param points |
| | | * @return |
| | | */ |
| | | private String upConePoints(DepotConf depotConf, String points){ |
| | | String[] cableRuleAtt = depotConf.getCableRule().split("-"); |
| | | String[] cableCirAtt = depotConf.getCableCir().split("-"); |
| | | //è·åæå¤§çå±é
ç½® |
| | | int layMax = Integer.valueOf(cableCirAtt[0]); |
| | | for (int i = 0; i < cableCirAtt.length; i++) { |
| | | if (Integer.valueOf(cableCirAtt[i]) >= layMax) { |
| | | layMax = Integer.valueOf(cableCirAtt[i]); |
| | | } |
| | | } |
| | | //æå¨å±ä»1å¼å§ |
| | | int curLay = 1; |
| | | //æå¨æ ¹ |
| | | int curRoot = 1; |
| | | //æå¨å |
| | | int curCir = 1; |
| | | //å½ååçå± |
| | | int cirLay = 1; |
| | | String[] array = points.split(","); |
| | | |
| | | for (int i = 0; i < array.length; i++) { |
| | | curLay = (i % layMax) + 1; |
| | | curRoot = (i / layMax) + 1; |
| | | curCir = getCurCir(curRoot, cableRuleAtt); |
| | | cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); |
| | | |
| | | //æ¯å¦é
ç½®äº5å±ä½æ¯å½åæ¯6å±ï¼è¯´æå½åç¹ä¸ºè¡¥å¿ç¹ |
| | | if (curLay <= (layMax - cirLay)) { |
| | | array[i] = String.valueOf(Constant.ADD_TEMP); |
| | | } |
| | | } |
| | | return StringUtils.join(array, ","); |
| | | } |
| | | |
| | | /** |
| | | * ä¸é¥å½¢è¡¥ç¹(ç¹ä½ä½ç½®æ£ç¡®ï¼éè¦è¡¥ç¹ä¸º-102) |
| | | * |
| | | * @param depotConf |
| | | * @param points |
| | | * @return |
| | | */ |
| | | private String downConePoints(DepotConf depotConf, String points){ |
| | | String[] cableRuleAtt = depotConf.getCableRule().split("-"); |
| | | String[] cableCirAtt = depotConf.getCableCir().split("-"); |
| | | //è·åæå¤§çå±é
ç½® |
| | | int layMax = Integer.valueOf(cableCirAtt[0]); |
| | | for (int i = 0; i < cableCirAtt.length; i++) { |
| | | if (Integer.valueOf(cableCirAtt[i]) >= layMax) { |
| | | layMax = Integer.valueOf(cableCirAtt[i]); |
| | | } |
| | | } |
| | | //æå¨å±ä»1å¼å§ |
| | | int curLay = 1; |
| | | //æå¨æ ¹ |
| | | int curRoot = 1; |
| | | //æå¨å |
| | | int curCir = 1; |
| | | //å½ååçå± |
| | | int cirLay = 1; |
| | | String[] array = points.split(","); |
| | | |
| | | for (int i = 0; i < array.length; i++) { |
| | | curLay = (i % layMax) + 1; |
| | | curRoot = (i / layMax) + 1; |
| | | curCir = getCurCir(curRoot, cableRuleAtt); |
| | | cirLay = Integer.valueOf(cableCirAtt[curCir - 1]); |
| | | |
| | | //æ¯å¦é
ç½®äº5å±ä½æ¯å½åæ¯6å±ï¼è¯´æå½åç¹ä¸ºè¡¥å¿ç¹ |
| | | if (curLay > cirLay) { |
| | | array[i] = String.valueOf(Constant.ADD_TEMP); |
| | | } |
| | | } |
| | | return StringUtils.join(array, ","); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | |
| | | /** |
| | | * å½ä»¤çæ |
| | | * |
| | | * @author czt |
| | | */ |
| | | public class CommandBuild { |
| | | |
| | | private final static CommandBuild instance = new CommandBuild(); |
| | | |
| | | private CommandBuild() { |
| | | } |
| | | |
| | | public static CommandBuild getInstance() { |
| | | return instance; |
| | | } |
| | | |
| | | /** |
| | | * ç²®æ
ééå½ä»¤ |
| | | * |
| | | * @param grainAddr ç²®æ
åæºå°å |
| | | * @return |
| | | */ |
| | | public static String getMsgCheck(String grainAddr) { |
| | | |
| | | StringBuffer sb = new StringBuffer(); |
| | | |
| | | //èµ·å§ç¬¦ |
| | | sb.append(BeiboGrainServerUtils.MSG_START); |
| | | |
| | | //å®é
åæºå°å |
| | | int addr = Integer.parseInt(grainAddr); |
| | | //ç²®æ
åæºå°å=æ¨ç å¼å
³å°å+40H |
| | | addr += BeiboGrainServerUtils.BM; |
| | | sb.append(BytesUtil.intToHexStr1(addr)); |
| | | |
| | | //æ§å¶å½ä»¤ |
| | | sb.append("82"); |
| | | |
| | | //åæºå°å |
| | | sb.append(BytesUtil.intToHexStr1(addr)); |
| | | |
| | | //æµæ¸©çµç¼å±æ°ï¼ä¸ç¥éçµç¼éé屿°æ¶ï¼é»è®¤00æè
FF |
| | | sb.append("00"); |
| | | |
| | | //ç»å°¾ç¬¦ |
| | | sb.append(BeiboGrainServerUtils.MSG_END); |
| | | |
| | | return sb.toString(); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import lombok.Data; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * è¿åæ¶æ¯å°è£
|
| | | * |
| | | * @author czt |
| | | * |
| | | */ |
| | | @Data |
| | | public class ReMessage { |
| | | |
| | | |
| | | private String ip; |
| | | |
| | | private int port; |
| | | |
| | | private String startStr; //èµ·å§ç¬¦ |
| | | |
| | | private String serId; //åæºå°å |
| | | |
| | | private String grainStr; //ç²®æ¸©æ°æ® |
| | | |
| | | private String thStr; //æ¸©æ¹¿åº¦æ°æ® |
| | | |
| | | private String expand; //æ©å
æ°æ® |
| | | |
| | | private String hexCrc16; //æ£éªç |
| | | |
| | | private String batchId; |
| | | |
| | | private String companyId; |
| | | |
| | | private Date receiveDate; |
| | | |
| | | // å¼å¸¸ä¿¡æ¯ |
| | | private String error; |
| | | |
| | | private String strMsg;// å½åå½ä»¤è½¬æ¢ä¸ºå符串çä¿¡æ¯ |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.builder; |
| | | |
| | | import com.ld.igds.protocol.beibo.grainv1.util.BeiboGrainServerUtils; |
| | | import com.ld.igds.util.BytesUtil; |
| | | |
| | | /** |
| | | * æ ¹æ®æ¥æ¶å°çä¿¡æ¯è¿è¡å°è£
|
| | | * |
| | | * @author czt |
| | | */ |
| | | public class ReMessageBuilder { |
| | | |
| | | private final static ReMessageBuilder instance = new ReMessageBuilder(); |
| | | |
| | | private ReMessageBuilder() { |
| | | } |
| | | |
| | | public static ReMessageBuilder getInstance() { |
| | | return instance; |
| | | } |
| | | |
| | | /** |
| | | * @param strMsg |
| | | * @return |
| | | */ |
| | | public ReMessage buildMessage(String strMsg) { |
| | | |
| | | ReMessage message = new ReMessage(); |
| | | message.setStrMsg(strMsg); |
| | | //设置起å§ç¬¦ |
| | | message.setStartStr(strMsg.substring(0, 9*2)); |
| | | |
| | | //设置粮æ
åæºå°å |
| | | String str = strMsg.substring(9*2, 10*2); |
| | | int i = BytesUtil.hexToInt(str); |
| | | str = String.valueOf(i - BeiboGrainServerUtils.BM); |
| | | message.setSerId(str); |
| | | |
| | | //ç²®æ
æ°æ® |
| | | str = strMsg.substring(10*2, 1034*2); |
| | | message.setGrainStr(str); |
| | | |
| | | //æ¸©åº¦æ°æ® |
| | | str = strMsg.substring(1034*2, 1052*2); |
| | | message.setThStr(str); |
| | | |
| | | //æ©å
æ°æ® |
| | | str = strMsg.substring(1052*2, 1062*2); |
| | | message.setExpand(str); |
| | | |
| | | //æ£éªç |
| | | str = strMsg.substring(1062*2); |
| | | message.setHexCrc16(str); |
| | | |
| | | return message; |
| | | } |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.client; |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.InvokeResult; |
| | | import io.netty.bootstrap.Bootstrap; |
| | | import io.netty.buffer.Unpooled; |
| | | import io.netty.channel.*; |
| | | import io.netty.channel.oio.OioEventLoopGroup; |
| | | import io.netty.channel.socket.SocketChannel; |
| | | import io.netty.channel.socket.oio.OioSocketChannel; |
| | | import io.netty.handler.codec.bytes.ByteArrayDecoder; |
| | | import io.netty.handler.codec.bytes.ByteArrayEncoder; |
| | | import io.netty.util.internal.logging.InternalLogger; |
| | | import io.netty.util.internal.logging.InternalLoggerFactory; |
| | | |
| | | /** |
| | | * è´åç²®æ
åè®®ï¼åæºä¸ºæå¡ç«¯ï¼å¹³å°ä¸ºå®¢æ·ç«¯ä¸»å¨è¿æ¥ |
| | | * |
| | | * @author czt |
| | | */ |
| | | public class BeiboClientEngine implements Runnable { |
| | | |
| | | private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass()); |
| | | |
| | | private String host; |
| | | private int port; |
| | | // public ChannelFuture channelFuture; |
| | | public Channel channel; |
| | | |
| | | public BeiboClientEngine(String host, int port) { |
| | | this.host = host; |
| | | this.port = port; |
| | | } |
| | | public void start() { |
| | | Thread thread = new Thread(this); |
| | | thread.start(); |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | startRun(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public void startRun() throws Exception { |
| | | EventLoopGroup group = new OioEventLoopGroup(); |
| | | Bootstrap b = new Bootstrap(); |
| | | // b.option(ChannelOption.SO_KEEPALIVE, true); |
| | | b.group(group).channel(OioSocketChannel.class) |
| | | .handler(new ChannelInitializer<SocketChannel>() { |
| | | @Override |
| | | protected void initChannel(SocketChannel ch) |
| | | throws Exception { |
| | | ChannelPipeline p = ch.pipeline(); |
| | | // å符串解ç åç¼ç |
| | | p.addLast("decoder", new ByteArrayDecoder()); |
| | | p.addLast("encoder", new ByteArrayEncoder()); |
| | | // èªå·±çé»è¾Handler |
| | | p.addLast("handler", new ClientHandler()); |
| | | } |
| | | }); |
| | | |
| | | // åèµ·å¼æ¥è¿æ¥è¯·æ±ï¼ç»å®è¿æ¥ç«¯å£åhostä¿¡æ¯ |
| | | ChannelFuture channelFuture = b.connect(host, port); |
| | | this.channel = channelFuture.channel(); |
| | | // channelFuture.channel().closeFuture().sync(); |
| | | |
| | | channelFuture.addListener(new ChannelFutureListener() { |
| | | @Override |
| | | public void operationComplete(ChannelFuture arg0) throws Exception { |
| | | if (channelFuture.isSuccess()) { |
| | | log.info("è¿æ¥æå¡å¨æå"); |
| | | } else { |
| | | log.info("è¿æ¥æå¡å¨å¤±è´¥"); |
| | | channelFuture.cause().printStackTrace(); |
| | | group.shutdownGracefully(); // å
³é线ç¨ç» |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public InvokeResult send(byte[] array) throws InterruptedException { |
| | | if (null == channel) { |
| | | return InvokeResult.SOCKET_NOT_CREATE; |
| | | } |
| | | if (!channel.isActive()) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | channel.writeAndFlush(Unpooled.copiedBuffer(array)).sync(); |
| | | |
| | | return InvokeResult.SUCCESS; |
| | | } |
| | | |
| | | public static void main(String[] args) { |
| | | try { |
| | | |
| | | String msg = "000000000006010600070012"; |
| | | BeiboClientEngine test = new BeiboClientEngine( |
| | | "192.168.1.95", 9999); |
| | | |
| | | test.start(); |
| | | |
| | | msg = "BB BB BB BB"; |
| | | |
| | | // Thread.sleep(3000L); |
| | | |
| | | test.send(BytesUtil.hexStrToBytes(msg)); |
| | | |
| | | } catch (InterruptedException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public Channel getChannel() { |
| | | return channel; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.client; |
| | | |
| | | import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.SpringUtil; |
| | | import io.netty.channel.ChannelHandlerContext; |
| | | import io.netty.channel.SimpleChannelInboundHandler; |
| | | import io.netty.util.internal.logging.InternalLogger; |
| | | import io.netty.util.internal.logging.InternalLoggerFactory; |
| | | |
| | | import java.net.InetSocketAddress; |
| | | |
| | | /** |
| | | * Handles a client-side channel. |
| | | */ |
| | | |
| | | public class ClientHandler extends SimpleChannelInboundHandler<Object> { |
| | | |
| | | private AnalysisService analysisService; |
| | | |
| | | private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass()); |
| | | |
| | | @Override |
| | | public void channelActive(ChannelHandlerContext ctx) { |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | log.info("åæºæåè¿æ¥ï¼IP={},port={}", insocket.getAddress() |
| | | .getHostAddress(), insocket.getPort()); |
| | | } |
| | | |
| | | @Override |
| | | public void channelInactive(ChannelHandlerContext ctx) throws Exception { |
| | | super.channelInactive(ctx); |
| | | |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | |
| | | log.info("åæºæå¼è¿æ¥ï¼IP={},port={}", insocket.getAddress(),insocket.getPort()); |
| | | } |
| | | |
| | | @Override |
| | | public void channelRead0(ChannelHandlerContext ctx, Object msg) |
| | | throws Exception { |
| | | byte[] bytes = (byte[]) msg; |
| | | String result = BytesUtil.bytesToString(bytes); |
| | | log.info("åæºè¿åä¿¡æ¯=" + result); |
| | | |
| | | // InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); |
| | | |
| | | //è§£æ |
| | | if (null == analysisService) { |
| | | analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID); |
| | | } |
| | | // analysisService.analysis(result); |
| | | } |
| | | |
| | | @Override |
| | | public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { |
| | | ctx.close(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * è´åç²®æ
åè®®-åæºä¸ºæå¡ç«¯ |
| | | */ |
| | | package com.ld.igds.protocol.beibo.grainv1; |
| | | |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.io.api.HeartbeatProvider; |
| | | import com.ld.io.api.IoSession; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * æä¾å¿è·³ä¿¡æ¯ |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1HeartbeatImpl implements HeartbeatProvider { |
| | | |
| | | @Override |
| | | public byte[] provide(IoSession session) { |
| | | |
| | | |
| | | //ç´æ¥æ ¹æ®ä¸»æºSESSIOn夿 |
| | | IoSession session1 = BeiboGrainV1ServerUtils.getSession(); |
| | | |
| | | Long lastBeatTime = BeiboGrainV1ServerUtils.getHearBeat(session1); |
| | | |
| | | if (null == lastBeatTime) { |
| | | return null; |
| | | } |
| | | |
| | | //妿æå䏿¬¡ç»ç«¯å¿è·³æ¶é´è·ç¦»å½åæ¶é´å¤§äº ç»ç«¯å¿è·³æ¶é´ç3次ï¼åå¤æä¸ºç¦»çº¿ |
| | | long deTime = System.currentTimeMillis() - lastBeatTime; |
| | | |
| | | if (deTime > (BeiboGrainV1ServerUtils.HEART_BEAT_TIME * 3 * 1000)) { |
| | | log.info("-----------è¶
è¿{}ç§æªè·åå°å¿è·³ä¿¡æ¯ï¼å¤å®ç»ç«¯ç¦»çº¿ï¼è¸¢åºè¿æ¥------------{}-{}", deTime, session.getAddress(), session.getPort()); |
| | | |
| | | session.destroy(); |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.protocol.beibo.grainv1.analysis.AnalysisService; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.IoMsgConsumer; |
| | | import com.ld.io.api.IoSession; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1MessageConsumer implements IoMsgConsumer { |
| | | |
| | | |
| | | @Autowired |
| | | private AnalysisService analysisService; |
| | | |
| | | /** |
| | | * å¤çæ¶æ¯ |
| | | * |
| | | * @param ioSession |
| | | * @param bytes |
| | | */ |
| | | @Override |
| | | public void consume(IoSession ioSession, byte[] bytes) { |
| | | if (null == bytes) { |
| | | log.error("Reply bytes is null"); |
| | | return; |
| | | } |
| | | |
| | | //æ·»å ä¿¡æ¯å¿è·³æ è®° |
| | | BeiboGrainV1ServerUtils.addHeartBeat(ioSession); |
| | | |
| | | //é»è®¤è®¾ç½®ä¸»é讯æå¡ |
| | | BeiboGrainV1ServerUtils.addSession(ioSession); |
| | | |
| | | try { |
| | | String hexStr = BytesUtil.bytesToString(bytes); |
| | | log.info("主æºè¿åæ¥æ------->>å¹³å°ï¼" + hexStr); |
| | | |
| | | analysisService.analysis(ioSession.getAddress(), ioSession.getPort(), hexStr); |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.*; |
| | | import com.ld.io.netty.NettyServer; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * @Desc: è´åç²®æ
åè®®-䏲壿å¡å¨å®¢æ·ç«¯ |
| | | * @author: czt |
| | | * @update-time: 2023/09/27 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1ServerEngine { |
| | | |
| | | public static final Integer PORT = 9311; |
| | | |
| | | @Autowired |
| | | private BeiboGrainV1MessageConsumer defaultMessageConsumer; |
| | | @Autowired |
| | | private BeiboGrainV1SessionListener defaultSessionListener; |
| | | // å¿è·³æä¾ |
| | | private static HeartbeatProvider heartbeatProvider = new BeiboGrainV1HeartbeatImpl(); |
| | | |
| | | private IoSessionQuery sessionQuery; |
| | | |
| | | public void start(Integer port) { |
| | | IoServerOption ioServerOption = new IoServerOption(); |
| | | |
| | | if (null != port) { |
| | | ioServerOption.setPort(port); |
| | | } else { |
| | | ioServerOption.setPort(PORT); |
| | | } |
| | | ioServerOption.setSplitDecoderType(SplitByteDecoderType.NO_LIMIT); |
| | | // //确认ç»å°¾æ å¿ |
| | | // ioServerOption.setDelimiter(); |
| | | |
| | | // é
置系ç»å¿è·³é´é |
| | | ioServerOption.setReaderIdleTime(5 * 60); |
| | | |
| | | NettyServer ioServer = new NettyServer(ioServerOption, defaultMessageConsumer, defaultSessionListener, heartbeatProvider); |
| | | ioServer.startup(); |
| | | |
| | | sessionQuery = ioServer.getSessionQuery(); |
| | | |
| | | |
| | | log.info("* "); |
| | | log.info("* ========================"); |
| | | log.info("* "); |
| | | log.info("* [GRAIN-SERVERï¼BEIBO_GRAIN,PORT={}]", PORT); |
| | | log.info("* "); |
| | | log.info("* ========================"); |
| | | log.info("* "); |
| | | |
| | | System.out.println("* ========================"); |
| | | System.out.println("* "); |
| | | System.out.println("* [GRAIN-SERVERï¼BEIBO_GRAIN,PORT={}]" + port); |
| | | System.out.println("* "); |
| | | System.out.println("* ========================"); |
| | | } |
| | | |
| | | public IoSessionQuery getSessionQuery() { |
| | | return sessionQuery; |
| | | } |
| | | |
| | | /** |
| | | * åéä¿¡æ¯ |
| | | * |
| | | * @param ip |
| | | * @param port |
| | | * @param msg |
| | | * @return |
| | | */ |
| | | public InvokeResult push(String ip, int port, byte[] msg) { |
| | | IoSessionQuery sessionFactory = getSessionQuery(); |
| | | List<IoSession> sessions = sessionFactory.getAllSession(); |
| | | IoSession session = null; |
| | | for (IoSession ioSession : sessions) { |
| | | if (BeiboGrainV1ServerUtils.getServerKey(ip, port).equals(ioSession.getBusinessKey())) { |
| | | session = ioSession; |
| | | break; |
| | | } |
| | | } |
| | | if (null == session) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | return session.invoke(msg); |
| | | } |
| | | |
| | | /** |
| | | * ç´æ¥ä½¿ç¨å
åçSessionæ§è¡ |
| | | */ |
| | | public InvokeResult pushByMin(String hexStr) { |
| | | |
| | | IoSession session = BeiboGrainV1ServerUtils.getSession(); |
| | | |
| | | if (null == session) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | byte[] msg = BytesUtil.hexStrToBytes(hexStr); |
| | | return session.invoke(msg); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.io.api.IoSession; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å·¥å
·ç±» |
| | | * |
| | | * @author vince |
| | | */ |
| | | public class BeiboGrainV1ServerUtils { |
| | | |
| | | |
| | | /** |
| | | * è®°å½æ¯ä¸ªè¿æ¥çæå䏿¬¡ä¿¡æ¯æ¶é´ key = è¿æ¥çKYEï¼data =å½åæ¶é´æ³ |
| | | */ |
| | | public static Map<String, Long> contextMapHeart = new HashMap<>(); |
| | | |
| | | public static Map<String, IoSession> contextIoSession = new HashMap<>(); |
| | | |
| | | |
| | | public static int HEART_BEAT_TIME = 30;//å¿è·³é´éæ¶é´ |
| | | |
| | | /** |
| | | * é对æ 线粮æ
主æºçé»è®¤IDé
ç½® |
| | | */ |
| | | public static String DEFAULT_MAC_ID = "6550"; |
| | | |
| | | /** |
| | | * çæTCPè¿æ¥çKEY |
| | | * |
| | | * @param ip |
| | | * @param port |
| | | * @return |
| | | */ |
| | | public static String getServerKey(String ip, Integer port) { |
| | | return ip + ":" + port; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ·»å ææ°å¿è·³æ¶é´æ³ |
| | | * |
| | | * @param session |
| | | */ |
| | | public static void addHeartBeat(IoSession session) { |
| | | contextMapHeart.put(getServerKey(session.getAddress(), session.getPort()), System.currentTimeMillis()); |
| | | } |
| | | |
| | | public static Long getHearBeat(IoSession session) { |
| | | return contextMapHeart.get(getServerKey(session.getAddress(), session.getPort())); |
| | | } |
| | | |
| | | public static void addSession(IoSession session) { |
| | | contextIoSession.put(DEFAULT_MAC_ID, session); |
| | | } |
| | | |
| | | public static IoSession getSession() { |
| | | return contextIoSession.get(DEFAULT_MAC_ID); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.server; |
| | | |
| | | import com.ld.igds.common.CoreSerService; |
| | | import com.ld.igds.constant.Constant; |
| | | import com.ld.igds.models.DeviceSer; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.io.api.IoSession; |
| | | import com.ld.io.api.IoSessionListener; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | /** |
| | | * |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class BeiboGrainV1SessionListener implements IoSessionListener { |
| | | |
| | | @Autowired |
| | | private CoreSerService coreSerService; |
| | | /** |
| | | * 设å¤å建å¨çº¿ï¼éè¦æ³¨æå½å使ç¨ä¸»æºæ¨¡å¼ï¼ä¸»æºä¸çº¿é»è®¤ææç¸åSNé
ç½®çåæºå
¨é¨ä¸çº¿ |
| | | * |
| | | * @param session |
| | | */ |
| | | @Override |
| | | public void onCreate(IoSession session) { |
| | | |
| | | //æ·»å å°å
å |
| | | BeiboGrainV1ServerUtils.addSession(session); |
| | | |
| | | log.info("++++æ°å»ºè¿æ¥++++-IP={}ï¼PORT={}", session.getAddress(), session.getPort()); |
| | | |
| | | // æ·»å èªå®ä¹ä¸å¡ID |
| | | session.setBusinessKey(BeiboGrainV1ServerUtils.getServerKey(session.getAddress(), session.getPort())); |
| | | |
| | | //项ç®éç¨æ çº¿ä¸»æºæ¨¡å¼ï¼ç´æ¥è·åé»è®¤è®¾å¤ |
| | | DeviceSer deviceSer = coreSerService.getCacheSerBySn(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID); |
| | | if (null == deviceSer) return; |
| | | coreSerService.onlineBySn(session.getAddress(), session.getPort(), deviceSer.getSn(), Constant.YN_Y); |
| | | //æ´æ°ç¼å |
| | | coreSerService.refreshCache(deviceSer.getCompanyId()); |
| | | } |
| | | |
| | | /** |
| | | * 注æï¼å½åéç¨ä¸»æºæ¨¡å¼ï¼ä¸»æºç¦»çº¿ææç¸åSNé
ç½®çåæºå
¨é¨ç¦»çº¿ |
| | | * |
| | | * @param session |
| | | */ |
| | | @Override |
| | | public void onDestroy(IoSession session) { |
| | | log.info("----è¿æ¥æå¼-----IP={}ï¼PORT={}", session.getAddress(), session.getPort()); |
| | | |
| | | //项ç®éç¨æ çº¿ä¸»æºæ¨¡å¼ï¼ç´æ¥è·åé»è®¤è®¾å¤ |
| | | DeviceSer deviceSer = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), BeiboGrainV1ServerUtils.DEFAULT_MAC_ID); |
| | | |
| | | if (null == deviceSer) return; |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.beibo.grainv1.util; |
| | | |
| | | /** |
| | | * å·¥å
·ç±» |
| | | * |
| | | * @author czt |
| | | */ |
| | | public class BeiboGrainServerUtils { |
| | | |
| | | |
| | | public static String MSG_START = "00000000FFEB90FEAA"; //èµ·å§ç¬¦ |
| | | public static String MSG_END = "00000000000000000000000000"; //ç»å°¾ç¬¦ |
| | | |
| | | public static int BM = 64; //ç»å°¾ç¬¦ |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| | | xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> |
| | | <modelVersion>4.0.0</modelVersion> |
| | | <groupId>com.ld.igds</groupId> |
| | | <artifactId>igds-protocol-es</artifactId> |
| | | <version>4.0.0-RELEASE</version> |
| | | <packaging>jar</packaging> |
| | | |
| | | <properties> |
| | | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
| | | <java.version>1.8</java.version> |
| | | <igds.version>4.0.0-RELEASE</igds.version> |
| | | </properties> |
| | | |
| | | <dependencies> |
| | | |
| | | <!-- å¼å
¥ä¹å¡æ ¸å¿å
--> |
| | | <dependency> |
| | | <groupId>com.ld.igds</groupId> |
| | | <artifactId>igds-core</artifactId> |
| | | <version>${igds.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- å¼å
¥è½èå
--> |
| | | <dependency> |
| | | <groupId>com.ld.igds</groupId> |
| | | <artifactId>igds-es</artifactId> |
| | | <version>${igds.version}</version> |
| | | </dependency> |
| | | |
| | | <!-- å¼å
¥IOå
--> |
| | | <dependency> |
| | | <groupId>com.ld.base.io</groupId> |
| | | <artifactId>base-io-netty</artifactId> |
| | | <version>1.0.0-SNAPSHOT</version> |
| | | </dependency> |
| | | |
| | | </dependencies> |
| | | |
| | | <build> |
| | | <plugins> |
| | | <plugin> |
| | | <groupId>org.apache.maven.plugins</groupId> |
| | | <artifactId>maven-compiler-plugin</artifactId> |
| | | <configuration> |
| | | <source>1.8</source> |
| | | <target>1.8</target> |
| | | <compilerArguments> |
| | | <extdirs>src\main\webapp\WEB-INF\lib</extdirs> |
| | | </compilerArguments> |
| | | </configuration> |
| | | </plugin> |
| | | </plugins> |
| | | </build> |
| | | |
| | | </project> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645; |
| | | |
| | | import com.ld.igds.constant.RedisConst; |
| | | import com.ld.igds.io.RemoteEsService; |
| | | import com.ld.igds.io.constant.OrderRespEnum; |
| | | import com.ld.igds.io.constant.ProtocolEnum; |
| | | import com.ld.igds.io.request.BaseRequest; |
| | | import com.ld.igds.io.response.BaseResponse; |
| | | import com.ld.igds.io.response.GrainResponse; |
| | | import com.ld.igds.protocol.es.dlt645.builder.CommandBuild; |
| | | import com.ld.igds.protocol.es.dlt645.client.Dlt645ClientEngine; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.RedisUtil; |
| | | import com.ld.io.api.InvokeResult; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | /** |
| | | * å½ååè®®å®ç°ï¼è½èåè®® |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Component(RemoteEsServiceImpl.BEAN_ID) |
| | | public class RemoteEsServiceImpl implements RemoteEsService { |
| | | |
| | | public static final String BEAN_ID = "dlt645.remoteEsServiceImpl"; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Override |
| | | public String getProtocol() { |
| | | return ProtocolEnum.TCP_ES_DLT645_V1.getCode(); |
| | | } |
| | | |
| | | @Override |
| | | public BaseResponse checkEs(BaseRequest request) { |
| | | |
| | | try { |
| | | log.info("DL/T645å¤åè½çµè¡¨åæºå¼å§æ£æµï¼åæº{}çIP={},端å£={}",request.getSerId(),request.getIp(),request.getPort()); |
| | | |
| | | Dlt645ClientEngine clientEngine = new Dlt645ClientEngine(request.getIp(), request.getPort()); |
| | | clientEngine.start(); |
| | | Thread.sleep(1000); |
| | | |
| | | //ééå½ä»¤åå
¥ç¼åï¼è§£ææ¶å辨æ¯åªä¸ªä»çè½èï¼æ¶æ5åé |
| | | String key = RedisConst.buildKey(request.getCompanyId(), "ES-DLT645", request.getSerId()); |
| | | redisUtil.set(key, request.getDepotId(), 60*5); |
| | | |
| | | //çæå½ä»¤-æ¥è¯¢æ»çµè½çå½ä»¤ |
| | | String hexStr = CommandBuild.getInstance().getMsgCheck(request.getSerId()); |
| | | |
| | | InvokeResult result = clientEngine.send(BytesUtil.hexStrToBytes(hexStr)); |
| | | |
| | | log.info("result=" +result.getMessage()); |
| | | |
| | | // å°è£
è¿åä¿¡æ¯ |
| | | if (InvokeResult.SUCCESS == result) { |
| | | return new GrainResponse(OrderRespEnum.ORDER_SUCCESS.getCode(), |
| | | "è½èå½ä»¤åéæåï¼"); |
| | | } else { |
| | | log.error("å¹³å°------>>>>è½èåæºï¼è½èæ£æµ-失败{}", result.getMessage()); |
| | | return new GrainResponse(OrderRespEnum.ORDER_ERROR.getCode(), |
| | | "å½ä»¤åéå¼å¸¸ï¼" + result.getMessage()); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("è½èæ£æµå¼å¸¸ï¼{}", e); |
| | | return new BaseResponse(OrderRespEnum.ORDER_ERROR.getCode(), "å端å¼å¸¸ï¼" + e.getMessage()); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645.analysis; |
| | | |
| | | import com.ld.igds.common.CoreSerService; |
| | | import com.ld.igds.constant.RedisConst; |
| | | import com.ld.igds.es.dto.EsData; |
| | | import com.ld.igds.es.service.CoreEsService; |
| | | import com.ld.igds.models.DeviceSer; |
| | | import com.ld.igds.protocol.es.dlt645.util.Dlt645Utils; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.RedisUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * DLT645çµè¡¨å议解æ |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | @Component(AnalysisService.BEAN_ID) |
| | | public class AnalysisService { |
| | | |
| | | |
| | | public static final String BEAN_ID = "dlt645.analysisService"; |
| | | |
| | | @Autowired |
| | | private RedisUtil redisUtil; |
| | | @Autowired |
| | | private CoreSerService coreSerService; |
| | | @Autowired |
| | | private CoreEsService esService; |
| | | |
| | | /** |
| | | * |
| | | * @param result |
| | | */ |
| | | public void analysis(String result){ |
| | | log.info("è½èåæº------->>å¹³å°ï¼ä¿¡æ¯æ¥æ={}", result); |
| | | if(!result.startsWith(Dlt645Utils.MSG_START)){ |
| | | log.error("è½èåæº------->>å¹³å°ï¼è§£æè½èå¤±è´¥ï¼æ¥æèµ·å§ç¬¦é误ï¼ä¸è§£æ"); |
| | | return; |
| | | } |
| | | //å»é¤èµ·å§ç¬¦ |
| | | result = result.substring(8); |
| | | //è·åæ ¡éªä½ |
| | | String oldCheck = result.substring(result.length() - 4, result.length() - 2); |
| | | String check = Dlt645Utils.makeCheck(result.substring(0, result.length() - 4)); |
| | | |
| | | if(!check.equals(oldCheck)){ |
| | | log.error("è½èåæº------->>å¹³å°ï¼è§£æè½èå¤±è´¥ï¼æ ¡éªä½ä¸å¯¹ï¼ä¸è§£æ"); |
| | | return; |
| | | } |
| | | analysisGrain(result); |
| | | } |
| | | |
| | | |
| | | private void analysisGrain(String result) { |
| | | try { |
| | | |
| | | //è·åè½èåæºå°å |
| | | String serId = Dlt645Utils.addrToString(result.substring(2, 14)); |
| | | |
| | | //æ ¹æ®åæºå°åè·ååæºä¿¡æ¯ |
| | | DeviceSer ser = coreSerService.getCacheSer(ContextUtil.getDefaultCompanyId(), serId); |
| | | if (ser == null) { |
| | | log.error("è½èåæº-------->>å¹³å°ï¼è§£æè½èå¤±è´¥ï¼æªè·åå°ç³»ç»è½è主æºé
ç½®ï¼" + serId); |
| | | return; |
| | | } |
| | | |
| | | String key = RedisConst.buildKey(ser.getCompanyId(), "ES-DLT645", ser.getId()); |
| | | String depotId = (String) redisUtil.get(key); |
| | | if(null == depotId){ |
| | | log.error("è½èåæº-------->>å¹³å°ï¼è§£æè½èå¤±è´¥ï¼æªè·åå°ä»åºä¿¡æ¯ï¼" + depotId); |
| | | return; |
| | | } |
| | | |
| | | //è§£ææ»è½èæ°æ® |
| | | String dataStr = result.substring(28, 36); |
| | | |
| | | Double esNum = Dlt645Utils.parseData(dataStr); |
| | | EsData esData = new EsData(); |
| | | esData.setDeviceName("çµè¡¨"); |
| | | esData.setCompanyId(ser.getCompanyId()); |
| | | esData.setDepotId(depotId); |
| | | esData.setUpdateTime(new Date()); |
| | | |
| | | esData.setEp(esNum); |
| | | esData.setEs(esNum); |
| | | |
| | | log.info("DLT645çµè¡¨----->>>å¹³å°ï¼è½èæ°æ®è§£æå®æ-ä»åº={}", esData.getDepotId()); |
| | | esService.saveAndUpdateInc(esData); |
| | | |
| | | } catch (Exception e) { |
| | | log.error(e.getMessage(), e); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645.builder; |
| | | |
| | | import com.ld.igds.protocol.es.dlt645.util.Dlt645Utils; |
| | | |
| | | /** |
| | | * çµè¡¨å½ä»¤çæ |
| | | * |
| | | * @author czt |
| | | */ |
| | | public class CommandBuild { |
| | | |
| | | private final static CommandBuild instance = new CommandBuild(); |
| | | |
| | | private CommandBuild() { |
| | | } |
| | | |
| | | public static CommandBuild getInstance() { |
| | | return instance; |
| | | } |
| | | |
| | | /** |
| | | * è½èééå½ä»¤ |
| | | * |
| | | * @param esAddr çµè¡¨å°å |
| | | * @return |
| | | */ |
| | | public static String getMsgCheck(String esAddr) { |
| | | |
| | | //è·åå½ä»¤ |
| | | StringBuffer sb = new StringBuffer(); |
| | | |
| | | //帧起å§ç¬¦ |
| | | sb.append("68"); |
| | | //å°ååï¼ååæ¼æ¥ |
| | | sb.append(Dlt645Utils.addrToString(esAddr)); |
| | | //帧起å§ç¬¦ |
| | | sb.append("68"); |
| | | //æ§å¶ç å |
| | | sb.append("11"); |
| | | //æ°æ®åé¿åº¦ |
| | | sb.append("04"); |
| | | //æ°æ®å |
| | | sb.append("33333433"); |
| | | //æ ¡éªç |
| | | String checkNum = Dlt645Utils.makeCheck(sb.toString()); |
| | | sb.append(checkNum); |
| | | |
| | | StringBuffer sb0 = new StringBuffer(); |
| | | //èµ·å§ç¬¦ |
| | | sb0.append(Dlt645Utils.MSG_START); |
| | | sb0.append(sb); |
| | | //ç»å°¾ç¬¦ |
| | | sb0.append(Dlt645Utils.MSG_END); |
| | | |
| | | return sb0.toString(); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645.client; |
| | | |
| | | import com.ld.igds.protocol.es.dlt645.analysis.AnalysisService; |
| | | import com.ld.igds.util.BytesUtil; |
| | | import com.ld.igds.util.SpringUtil; |
| | | import io.netty.channel.ChannelHandlerContext; |
| | | import io.netty.channel.SimpleChannelInboundHandler; |
| | | import io.netty.util.internal.logging.InternalLogger; |
| | | import io.netty.util.internal.logging.InternalLoggerFactory; |
| | | import java.net.InetSocketAddress; |
| | | |
| | | |
| | | /** |
| | | * Handles a client-side channel. |
| | | */ |
| | | public class ClientHandler extends SimpleChannelInboundHandler<Object> { |
| | | |
| | | |
| | | private AnalysisService analysisService; |
| | | |
| | | private final InternalLogger log = InternalLoggerFactory.getInstance(this.getClass()); |
| | | @Override |
| | | public void channelActive(ChannelHandlerContext ctx) { |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | log.info("çµè¡¨æå¡å¨æåè¿æ¥ï¼IP={},port={}", insocket.getAddress() |
| | | .getHostAddress(), insocket.getPort()); |
| | | } |
| | | |
| | | @Override |
| | | public void channelInactive(ChannelHandlerContext ctx) throws Exception { |
| | | super.channelInactive(ctx); |
| | | |
| | | InetSocketAddress insocket = (InetSocketAddress) ctx.channel() |
| | | .remoteAddress(); |
| | | |
| | | log.info("çµè¡¨æå¡å¨æå¼è¿æ¥ï¼IP={},port={}", insocket.getAddress(),insocket.getPort()); |
| | | } |
| | | |
| | | @Override |
| | | public void channelRead0(ChannelHandlerContext ctx, Object msg) |
| | | throws Exception { |
| | | byte[] bytes = (byte[]) msg; |
| | | String result = BytesUtil.bytesToString(bytes); |
| | | log.info("çµè¡¨æå¡å¨åæºè¿åä¿¡æ¯=" + result); |
| | | |
| | | // InetSocketAddress insocket = (InetSocketAddress) ctx.channel().remoteAddress(); |
| | | |
| | | //è§£æ |
| | | //è°ç¨è§£ææ¥å£å¼å§è§£æ |
| | | if (null == analysisService) { |
| | | analysisService = (AnalysisService) SpringUtil.getBean(AnalysisService.BEAN_ID); |
| | | } |
| | | analysisService.analysis(result); |
| | | } |
| | | |
| | | @Override |
| | | public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) { |
| | | ctx.close(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645.client; |
| | | |
| | | import com.ld.io.api.InvokeResult; |
| | | import io.netty.bootstrap.Bootstrap; |
| | | import io.netty.buffer.Unpooled; |
| | | import io.netty.channel.*; |
| | | import io.netty.channel.oio.OioEventLoopGroup; |
| | | import io.netty.channel.socket.SocketChannel; |
| | | import io.netty.channel.socket.oio.OioSocketChannel; |
| | | import io.netty.handler.codec.bytes.ByteArrayDecoder; |
| | | import io.netty.handler.codec.bytes.ByteArrayEncoder; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | /** |
| | | * DL/T 645-2007å¤åè½çµè¡¨ |
| | | * |
| | | * @author czt |
| | | */ |
| | | @Slf4j |
| | | public class Dlt645ClientEngine implements Runnable { |
| | | |
| | | private String host; |
| | | private int port; |
| | | |
| | | public Channel channel; |
| | | |
| | | public Dlt645ClientEngine(String host, int port) { |
| | | this.host = host; |
| | | this.port = port; |
| | | } |
| | | public void start() { |
| | | Thread thread = new Thread(this); |
| | | thread.start(); |
| | | } |
| | | |
| | | @Override |
| | | public void run() { |
| | | try { |
| | | startRun(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | public void startRun() throws Exception { |
| | | EventLoopGroup group = new OioEventLoopGroup(); |
| | | Bootstrap b = new Bootstrap(); |
| | | // b.option(ChannelOption.SO_KEEPALIVE, true); |
| | | b.group(group).channel(OioSocketChannel.class) |
| | | .handler(new ChannelInitializer<SocketChannel>() { |
| | | @Override |
| | | protected void initChannel(SocketChannel ch) |
| | | throws Exception { |
| | | ChannelPipeline p = ch.pipeline(); |
| | | // å符串解ç å ç¼ç |
| | | p.addLast("decoder", new ByteArrayDecoder()); |
| | | p.addLast("encoder", new ByteArrayEncoder()); |
| | | // èªå·±çé»è¾Handler |
| | | p.addLast("handler", new ClientHandler()); |
| | | } |
| | | }); |
| | | |
| | | // åèµ·å¼æ¥è¿æ¥è¯·æ±ï¼ç»å®è¿æ¥ç«¯å£åhostä¿¡æ¯ |
| | | ChannelFuture channelFuture = b.connect(host, port); |
| | | this.channel = channelFuture.channel(); |
| | | // channelFuture.channel().closeFuture().sync(); |
| | | |
| | | channelFuture.addListener(new ChannelFutureListener() { |
| | | @Override |
| | | public void operationComplete(ChannelFuture arg0) throws Exception { |
| | | if (channelFuture.isSuccess()) { |
| | | log.info("-----è¿æ¥çµè¡¨æå¡å¨æåï¼IP={}ï¼PORT={}", host, port); |
| | | } else { |
| | | log.info("-----è¿æ¥çµè¡¨æå¡å¨å¤±è´¥ï¼IP={}ï¼PORT={}", host, port); |
| | | channelFuture.cause().printStackTrace(); |
| | | group.shutdownGracefully(); // å
³é线ç¨ç» |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | |
| | | public InvokeResult send(byte[] array) throws InterruptedException { |
| | | if (null == channel) { |
| | | return InvokeResult.SOCKET_NOT_CREATE; |
| | | } |
| | | if (!channel.isActive()) { |
| | | return InvokeResult.CHANNEL_CLOSED; |
| | | } |
| | | channel.writeAndFlush(Unpooled.copiedBuffer(array)).sync(); |
| | | |
| | | return InvokeResult.SUCCESS; |
| | | } |
| | | |
| | | public Channel getChannel() { |
| | | return channel; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | |
| | | |
| | | /** |
| | | * @Desc: DL/T 645å¤åè½çµè¡¨ |
| | | * @author: czt |
| | | */ |
| | | package com.ld.igds.protocol.bhzn; |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.protocol.es.dlt645.util; |
| | | |
| | | /** |
| | | * å·¥å
·ç±» |
| | | * |
| | | * @author czt |
| | | */ |
| | | public class Dlt645Utils { |
| | | |
| | | |
| | | public static String MSG_START = "FEFEFEFE"; //èµ·å§ç¬¦ |
| | | public static String MSG_END = "16"; //ç»å°¾ç¬¦ |
| | | |
| | | public static void main(String[] args) { |
| | | String s = makeCheck("6857141222000068110433333433"); |
| | | System.out.println(s); |
| | | } |
| | | |
| | | /** |
| | | * å°6个åèçå°ååï¼æ¯åè2ä½ BCDç ,转æ¢ä¸º12ä½10è¿å¶æ° |
| | | */ |
| | | public static String addrToString(String str) { |
| | | byte[] bytes = stringToBytes(str); |
| | | return String.format("%02x%02x%02x%02x%02x%02x", bytes[5], bytes[4], bytes[3], bytes[2], bytes[1], bytes[0]); |
| | | } |
| | | |
| | | /** |
| | | * DLT645æ ¡éªç |
| | | */ |
| | | public static String makeCheck(String data) { |
| | | |
| | | if (data == null || data.equals("")) { |
| | | return ""; |
| | | } |
| | | int total = 0; |
| | | int len = data.length(); |
| | | int num = 0; |
| | | while (num < len) { |
| | | String s = data.substring(num, num + 2); |
| | | total += Integer.parseInt(s, 16); |
| | | num = num + 2; |
| | | } |
| | | /** |
| | | * ç¨256æ±ä½æå¤§æ¯255ï¼å³16è¿å¶çFF |
| | | */ |
| | | int mod = total % 256; |
| | | String hex = Integer.toHexString(mod); |
| | | len = hex.length(); |
| | | // 妿ä¸å¤æ ¡éªä½çé¿åº¦ï¼è¡¥0,è¿éç¨çæ¯ä¸¤ä½æ ¡éª |
| | | if (len < 2) { |
| | | hex = "0" + hex; |
| | | } |
| | | return hex.toUpperCase(); |
| | | } |
| | | |
| | | /** |
| | | * å°Stringç±»åè½¬æ¢æbyteæ°ç» |
| | | */ |
| | | public static byte[] stringToBytes(String str) { |
| | | if (str == null || str.equals("")) { |
| | | return null; |
| | | } |
| | | byte[] bytes = new byte[str.length() / 2]; |
| | | for (int i = 0; i < bytes.length; i++) { |
| | | String subStr = str.substring(i * 2, i * 2 + 2); |
| | | bytes[i] = (byte) Integer.parseInt(subStr, 16); |
| | | } |
| | | return bytes; |
| | | } |
| | | |
| | | /** |
| | | * è§£æè¿åçå
·ä½æ°æ® |
| | | */ |
| | | public static Double parseData(String dataStr) { |
| | | byte[] data = stringToBytes(dataStr); |
| | | // æ¯ä¸ªåè-33Hå¤ç |
| | | for (int i = 0; i < data.length; i++) { |
| | | data[i] = (byte) (data[i] - 0x33); |
| | | } |
| | | StringBuilder str = new StringBuilder(); |
| | | // BCDç è½¬æ¢æ10è¿å¶ |
| | | for (byte b : data) { |
| | | str.insert(0, String.format("%02x", b)); |
| | | } |
| | | return Double.parseDouble(str.toString()) * 0.01; |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <RuleSet version="1.1"><PackageInfos> |
| | | <PackageInfo name="dorado-core" version="7.6.0.2.190128.1750"/> |
| | | <PackageInfo name="bdf2-orm" version="2.1.0"/> |
| | | <PackageInfo name="bdf2-core" version="2.0.9"/> |
| | | <PackageInfo name="dorado-uploader" version="1.0.20-SNAPSHOT"/> |
| | | <PackageInfo name="bdf2-job" version="2.0.5-SNAPSHOT"/> |
| | | <PackageInfo name="dorado-intro" version="0.2.1.140715.2255"/> |
| | | <PackageInfo name="bdf2-swfviewer" version="2.0.6-SNAPSHOT"/> |
| | | <PackageInfo name="bdf2-export" version="2.0.8"/> |
| | | <PackageInfo name="dorado-vidor"/></PackageInfos><Rule name="Auxiliary"><Children><Child rule="Import" name="Import"></Child><Child rule="GroupStart" name="GroupStart"></Child><Child rule="GroupEnd" name="GroupEnd"></Child><Child rule="PlaceHolder" name="PlaceHolder"></Child><Child rule="PlaceHolderStart" name="PlaceHolderStart"></Child><Child rule="PlaceHolderEnd" name="PlaceHolderEnd"></Child></Children></Rule><Rule name="Import" scope="public" sortFactor="9001" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/Import.png"><PrimitiveProps> |
| | | <Prop name="id"/> |
| | | <Prop name="src"/></PrimitiveProps></Rule><Rule name="GroupStart" scope="public" sortFactor="9002" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/GroupStart.png"><PrimitiveProps> |
| | | <Prop name="id"/></PrimitiveProps></Rule><Rule name="GroupEnd" scope="public" sortFactor="9003" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/GroupEnd.png"></Rule><Rule name="PlaceHolder" scope="public" sortFactor="9004" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolder.png"><PrimitiveProps> |
| | | <Prop name="id"/></PrimitiveProps></Rule><Rule name="PlaceHolderStart" parents="PlaceHolder" scope="public" sortFactor="9005" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolderStart.png"></Rule><Rule name="PlaceHolderEnd" scope="public" sortFactor="9006" category="Auxiliary" icon="/com/bstek/dorado/idesupport/icons/PlaceHolderEnd.png"></Rule><Rule name="Model" icon="/com/bstek/dorado/view/manager/Model.png"><Children><Child rule="AbstractDataType" name="DataType" aggregated="true"></Child><Child rule="AbstractDataProvider" name="DataProvider" aggregated="true"></Child><Child rule="AbstractDataResolver" name="DataResolver" aggregated="true"></Child></Children></Rule><Rule name="AbstractDataType" abstract="true" nodeName="DataType" type="com.bstek.dorado.data.type.AbstractDataType"><PrimitiveProps> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="creationType" type="java.lang.Class"/> |
| | | <Prop name="matchType" type="java.lang.Class"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tags"/></Props></Rule><Rule name="AbstractDataProvider" abstract="true" nodeName="DataProvider" type="com.bstek.dorado.data.provider.AbstractDataProvider"><PrimitiveProps> |
| | | <Prop name="impl"/> |
| | | <Prop name="parent"/> |
| | | <Prop name="scope" enumValues="instant,thread,singleton,session,request"/> |
| | | <Prop name="listener"/> |
| | | <Prop name="overwrite" type="boolean"/> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="interceptor"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="parameter" editor="pojo" type="java.lang.Object"/></Props></Rule><Rule name="AbstractDataResolver" abstract="true" nodeName="DataResolver" type="com.bstek.dorado.data.resolver.AbstractDataResolver"><PrimitiveProps> |
| | | <Prop name="impl"/> |
| | | <Prop name="parent"/> |
| | | <Prop name="scope" enumValues="instant,thread,singleton,session,request"/> |
| | | <Prop name="listener"/> |
| | | <Prop name="overwrite" type="boolean"/> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="interceptor"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="parameter" type="java.lang.Object"/></Props></Rule><Rule name="ViewConfig" label="ViewConfig" type="com.bstek.dorado.view.manager.ViewConfig" icon="/com/bstek/dorado/view/manager/ViewConfig.png"><PrimitiveProps> |
| | | <Prop name="listener"/> |
| | | <Prop name="template"/></PrimitiveProps><Props><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="scope" defaultValue="thread" enumValues="instant,thread,singleton,session,request"/></Props><Children><Child name="Arguments"><Rule name="Arguments" nodeName="Arguments" icon="/com/bstek/dorado/view/manager/Arguments.png"><Children><Child name="Argument" aggregated="true"><Rule name="Argument" nodeName="Argument" icon="/com/bstek/dorado/view/manager/Argument.png"><PrimitiveProps> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="value" type="java.lang.Object"/></Props></Rule></Child></Children></Rule></Child><Child name="Context"><Rule name="Context" nodeName="Context" icon="/com/bstek/dorado/view/manager/ViewContext.png"><Children><Child name="Attribute" aggregated="true"><Rule name="Attribute" nodeName="Attribute" icon="/com/bstek/dorado/view/manager/Attribute.png"><PrimitiveProps> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="value" type="java.lang.Object"/></Props></Rule></Child></Children></Rule></Child><Child rule="Model" name="Model"></Child><Child rule="View" name="View"></Child></Children></Rule><Rule name="LayoutHolder"><Children><Child rule="AnchorLayout" name="anchor"></Child><Child rule="DockLayout" name="dock"></Child><Child rule="HboxLayout" name="hbox"></Child><Child rule="VboxLayout" name="vbox"></Child><Child rule="FormLayout" name="form"></Child><Child rule="NativeLayout" name="native"></Child></Children></Rule><Rule name="View" parents="Container" abstract="true" type="com.bstek.dorado.view.View" scope="private" clientTypes="desktop"><PrimitiveProps> |
| | | <Prop name="listener"/></PrimitiveProps><Props><Prop name="cache" type="com.bstek.dorado.view.ViewCache" compositeType="Fixed"> |
| | | <Prop name="maxAge" type="long"/> |
| | | <Prop name="mode" enumValues="none,clientSide"/></Prop> |
| | | <Prop name="javaScriptFile"/> |
| | | <Prop name="packages"/> |
| | | <Prop name="pageTemplate"/> |
| | | <Prop name="pageUri"/> |
| | | <Prop name="renderMode" defaultValue="onCreate" enumValues="onCreate,onDataLoaded,manual"/> |
| | | <Prop name="skin"/> |
| | | <Prop name="styleSheetFile"/> |
| | | <Prop name="title" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="onLoadData" parameters="self,arg"/> |
| | | <ClientEvent name="onComponentRegistered" parameters="self,arg"/> |
| | | <ClientEvent name="onComponentUnregistered" parameters="self,arg"/></ClientEvents><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule><Rule name="DataType" parents="EntityDataTypeSupport" label="DataType" type="com.bstek.dorado.data.type.DefaultEntityDataType" scope="public" sortFactor="1" robots="datatype-reflection|èªå¨å建PropertyDefs" icon="/com/bstek/dorado/data/type/DefaultEntityDataType.png" reserve="default"><Children><Child rule="Reference" name="Reference" aggregated="true"></Child><Child rule="BasePropertyDef" name="PropertyDef" aggregated="true"></Child></Children></Rule><Rule name="NonAggregationDataType" parents="AbstractDataType" abstract="true" type="com.bstek.dorado.data.type.NonAggregationDataType"></Rule><Rule name="EntityDataTypeSupport" parents="NonAggregationDataType" abstract="true" nodeName="DataType" type="com.bstek.dorado.data.type.EntityDataTypeSupport"><PrimitiveProps> |
| | | <Prop name="impl"/> |
| | | <Prop name="parent"/> |
| | | <Prop name="listener"/> |
| | | <Prop name="overwrite" type="boolean"/></PrimitiveProps><Props> |
| | | <Prop name="cachable" type="java.lang.Boolean"/> |
| | | <Prop name="acceptUnknownProperty" type="boolean"/> |
| | | <Prop name="acceptValidationState" defaultValue="ok" enumValues="info,ok,warn,error"/> |
| | | <Prop name="autoCreatePropertyDefs" type="boolean"/> |
| | | <Prop name="defaultDisplayProperty"/> |
| | | <Prop name="userData" editor="any" type="java.lang.Object"/></Props><ClientEvents> |
| | | <ClientEvent name="onEntityToText" parameters="self,arg"/> |
| | | <ClientEvent name="onAttributeChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeInsert" parameters="self,arg"/> |
| | | <ClientEvent name="beforeDataChange" parameters="self,arg"/> |
| | | <ClientEvent name="onDataChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCurrentChange" parameters="self,arg"/> |
| | | <ClientEvent name="onCurrentChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeStateChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeRemove" parameters="self,arg"/> |
| | | <ClientEvent name="onMessageChange" parameters="self,arg"/> |
| | | <ClientEvent name="onStateChange" parameters="self,arg"/> |
| | | <ClientEvent name="onRemove" parameters="self,arg"/> |
| | | <ClientEvent name="onEntityLoad" parameters="self,arg"/> |
| | | <ClientEvent name="onInsert" parameters="self,arg"/></ClientEvents></Rule><Rule name="Reference" parents="LazyPropertyDef" label="Reference" type="com.bstek.dorado.data.type.property.Reference" scope="protected" icon="/com/bstek/dorado/data/type/property/Reference.png"><Props> |
| | | <Prop name="activeOnNewEntity" type="boolean"/> |
| | | <Prop name="dataProvider" highlight="1" type="com.bstek.dorado.data.provider.DataProvider"/> |
| | | <Prop name="pageSize" type="int"/> |
| | | <Prop name="parameter" highlight="1" editor="pojo" type="java.lang.Object"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeLoadData" parameters="self,arg"/> |
| | | <ClientEvent name="onLoadData" parameters="self,arg"/></ClientEvents></Rule><Rule name="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDef"><PrimitiveProps> |
| | | <Prop name="name"/></PrimitiveProps><Props> |
| | | <Prop name="acceptUnknownMapKey" type="boolean"/> |
| | | <Prop name="dataType" highlight="1" type="com.bstek.dorado.data.type.DataType"/> |
| | | <Prop name="defaultValue" type="java.lang.Object"/> |
| | | <Prop name="displayFormat"/> |
| | | <Prop name="ignored" type="boolean"/> |
| | | <Prop name="label" highlight="1"/><Prop name="mapping" type="com.bstek.dorado.data.type.property.Mapping" compositeType="Fixed"> |
| | | <Prop name="keyProperty"/> |
| | | <Prop name="mapValues" editor="collection[pojo]" type="java.lang.Object"/> |
| | | <Prop name="valueProperty"/></Prop><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="required" type="boolean"/> |
| | | <Prop name="submittable" defaultValue="true" type="boolean"/> |
| | | <Prop name="tags"/> |
| | | <Prop name="userData" editor="any" type="java.lang.Object"/> |
| | | <Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onGet" parameters="self,arg"/> |
| | | <ClientEvent name="onSet" parameters="self,arg"/> |
| | | <ClientEvent name="onValidate" parameters="self,arg"/> |
| | | <ClientEvent name="onGetText" parameters="self,arg"/></ClientEvents><Children><Child rule="Validator" name="Validators" aggregated="true"></Child></Children></Rule><Rule name="Validator" abstract="true" nodeName="Validator" type="com.bstek.dorado.data.type.validator.Validator" icon="/com/bstek/dorado/view/type/property/validator/Validator.png"><PrimitiveProps> |
| | | <Prop name="name"/></PrimitiveProps></Rule><Rule name="BasePropertyDef" parents="PropertyDefSupport" label="PropertyDef" nodeName="PropertyDef" type="com.bstek.dorado.data.type.property.BasePropertyDef" icon="/com/bstek/dorado/data/type/property/BasePropertyDef.png"><Props> |
| | | <Prop name="propertyPath"/></Props></Rule><Rule name="PropertyDefSupport" parents="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDefSupport"></Rule><Rule name="com.bstek.dorado.data.type.property.PropertyDefSupport" parents="PropertyDef" abstract="true" type="com.bstek.dorado.data.type.property.PropertyDefSupport"></Rule><Rule name="LazyPropertyDef" parents="PropertyDefSupport" abstract="true" type="com.bstek.dorado.data.type.property.LazyPropertyDef"><Props> |
| | | <Prop name="activeAtClient" defaultValue="true" type="boolean"/> |
| | | <Prop name="cacheMode" enumValues="noCache,serverSide,clientSide,bothSides"/></Props></Rule><Rule name="DirectDataProvider" parents="AbstractDataProvider" label="DirectDataProvider" type="com.bstek.dorado.data.provider.DirectDataProvider" scope="public" sortFactor="2" icon="/com/bstek/dorado/data/provider/DirectDataProvider.png" reserve="direct"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="direct" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="result" editor="pojo" type="java.lang.Object"/></Props></Rule><Rule name="DirectDataResolver" parents="AbstractDataResolver" label="DirectDataResolver" type="com.bstek.dorado.data.resolver.DirectDataResolver" scope="public" sortFactor="3" icon="/com/bstek/dorado/data/resolver/DirectDataResolver.png" reserve="direct"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="direct" fixed="true" visible="false"/></PrimitiveProps></Rule><Rule name="AbstractValidator" parents="Validator" abstract="true" nodeName="Validator" type="com.bstek.dorado.view.type.property.validator.AbstractValidator" icon="/com/bstek/dorado/view/type/property/validator/Validator.png"><Props> |
| | | <Prop name="name"/> |
| | | <Prop name="defaultResultState" defaultValue="error" enumValues="info,ok,warn,error"/> |
| | | <Prop name="revalidateOldValue" defaultValue="true" type="boolean"/> |
| | | <Prop name="runAt" enumValues="server,client,both"/></Props></Rule><Rule name="RequiredValidator" parents="BaseValidator" label="RequiredValidator" type="com.bstek.dorado.view.type.property.validator.RequiredValidator" scope="public" sortFactor="4" reserve="required"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="required" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="acceptZeroOrFalse" type="boolean"/> |
| | | <Prop name="trimBeforeValid" defaultValue="true" type="boolean"/></Props></Rule><Rule name="BaseValidator" parents="AbstractValidator" abstract="true" type="com.bstek.dorado.view.type.property.validator.BaseValidator"><Props> |
| | | <Prop name="resultMessage"/></Props></Rule><Rule name="LengthValidator" parents="BaseValidator" label="LengthValidator" type="com.bstek.dorado.view.type.property.validator.LengthValidator" scope="public" sortFactor="5" reserve="length"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="length" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="maxLength" defaultValue="-1" type="int"/> |
| | | <Prop name="minLength" defaultValue="-1" type="int"/></Props></Rule><Rule name="CharLengthValidator" parents="BaseValidator" label="CharLengthValidator" type="com.bstek.dorado.view.type.property.validator.CharLengthValidator" scope="public" sortFactor="6" reserve="charLength"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="charLength" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="maxLength" type="int"/> |
| | | <Prop name="minLength" type="int"/></Props></Rule><Rule name="RangeValidator" parents="BaseValidator" label="RangeValidator" type="com.bstek.dorado.view.type.property.validator.RangeValidator" scope="public" sortFactor="7" reserve="range"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="range" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="maxValue" defaultValue="-1" type="double"/> |
| | | <Prop name="maxValueValidateMode" defaultValue="ignore" enumValues="allowEquals,notAllowEquals,ignore"/> |
| | | <Prop name="minValue" defaultValue="-1" type="double"/> |
| | | <Prop name="minValueValidateMode" defaultValue="ignore" enumValues="allowEquals,notAllowEquals,ignore"/></Props></Rule><Rule name="EnumValidator" parents="BaseValidator" label="EnumValidator" type="com.bstek.dorado.view.type.property.validator.EnumValidator" scope="public" sortFactor="8" reserve="enum"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="enum" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="enumValues" highlight="1" editor="collection[value]" type="java.util.List"/></Props></Rule><Rule name="RegExpValidator" parents="BaseValidator" label="RegExpValidator" type="com.bstek.dorado.view.type.property.validator.RegExpValidator" scope="public" sortFactor="9" reserve="regExp"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="regExp" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="blackRegExp"/> |
| | | <Prop name="validateMode" enumValues="whiteBlack,blackWhite"/> |
| | | <Prop name="whiteRegExp"/></Props></Rule><Rule name="AjaxValidator" parents="AbstractAjaxValidator" label="AjaxValidator" type="com.bstek.dorado.view.type.property.validator.AjaxValidator" scope="public" sortFactor="10" reserve="ajax"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="ajax" fixed="true" visible="false"/></PrimitiveProps><Props> |
| | | <Prop name="ajaxAction" reference="AjaxAction:id"/> |
| | | <Prop name="service" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeExecute" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractAjaxValidator" parents="AbstractValidator" abstract="true" type="com.bstek.dorado.view.type.property.validator.AbstractAjaxValidator"><Props> |
| | | <Prop name="async" defaultValue="true" type="boolean"/> |
| | | <Prop name="executingMessage"/></Props></Rule><Rule name="CustomValidator" parents="AbstractValidator" label="CustomValidator" type="com.bstek.dorado.view.type.property.validator.CustomValidator" scope="public" sortFactor="11" reserve="custom"><PrimitiveProps> |
| | | <Prop name="type" defaultValue="custom" fixed="true" visible="false"/></PrimitiveProps><ClientEvents> |
| | | <ClientEvent name="onValidate" parameters="self,arg"/></ClientEvents></Rule><Rule name="AnchorLayout" parents="Layout" label="AnchorLayout" nodeName="anchor" type="com.bstek.dorado.view.widget.layout.AnchorLayout" sortFactor="1001"></Rule><Rule name="Layout" abstract="true" type="com.bstek.dorado.view.widget.layout.Layout"><Props> |
| | | <Prop name="className"/> |
| | | <Prop name="padding" type="int"/></Props></Rule><Rule name="AnchorLayoutConstraint" parents="LayoutConstraintSupport" label="AnchorLayoutConstraint" type="com.bstek.dorado.view.widget.layout.AnchorLayoutConstraint"><Props> |
| | | <Prop name="anchorBottom" enumValues="auto,none,container,previous"/> |
| | | <Prop name="anchorLeft" enumValues="auto,none,container,previous"/> |
| | | <Prop name="anchorRight" enumValues="auto,none,container,previous"/> |
| | | <Prop name="anchorTop" enumValues="auto,none,container,previous"/> |
| | | <Prop name="bottom"/> |
| | | <Prop name="heightOffset" type="int"/> |
| | | <Prop name="left"/> |
| | | <Prop name="leftOffset" type="int"/> |
| | | <Prop name="right"/> |
| | | <Prop name="top"/> |
| | | <Prop name="topOffset" type="int"/> |
| | | <Prop name="widthOffset" type="int"/></Props></Rule><Rule name="LayoutConstraintSupport" abstract="true" type="com.bstek.dorado.view.widget.layout.LayoutConstraintSupport"><Props> |
| | | <Prop name="padding" type="int"/></Props></Rule><Rule name="DockLayout" parents="Layout" label="DockLayout" nodeName="dock" type="com.bstek.dorado.view.widget.layout.DockLayout" sortFactor="1002"><Props> |
| | | <Prop name="regionPadding" type="int"/></Props></Rule><Rule name="DockLayoutConstraint" parents="LayoutConstraintSupport" label="DockLayoutConstraint" type="com.bstek.dorado.view.widget.layout.DockLayoutConstraint"><Props> |
| | | <Prop name="type" highlight="1" enumValues="left,top,right,bottom,center"/></Props></Rule><Rule name="HboxLayout" parents="AbstractBoxLayout" label="HBoxLayout" nodeName="hbox" type="com.bstek.dorado.view.widget.layout.HBoxLayout" sortFactor="1003"><Props> |
| | | <Prop name="align" defaultValue="center" enumValues="top,center,bottom"/></Props></Rule><Rule name="AbstractBoxLayout" parents="Layout" abstract="true" type="com.bstek.dorado.view.widget.layout.AbstractBoxLayout"><Props> |
| | | <Prop name="pack" defaultValue="start" enumValues="start,center,end"/> |
| | | <Prop name="padding" defaultValue="2" type="int"/> |
| | | <Prop name="regionPadding" defaultValue="2" type="int"/> |
| | | <Prop name="stretch" defaultValue="true" type="boolean"/></Props></Rule><Rule name="HboxLayoutConstraint" parents="LayoutConstraintSupport" label="HBoxLayoutConstraintSupport" type="com.bstek.dorado.view.widget.layout.HBoxLayoutConstraintSupport"><Props> |
| | | <Prop name="align" defaultValue="center" enumValues="top,center,bottom"/></Props></Rule><Rule name="VboxLayout" parents="AbstractBoxLayout" label="VBoxLayout" nodeName="vbox" type="com.bstek.dorado.view.widget.layout.VBoxLayout" sortFactor="1004"><Props> |
| | | <Prop name="align" defaultValue="left" enumValues="left,center,right"/> |
| | | <Prop name="lazyRenderChild" type="boolean"/></Props></Rule><Rule name="VboxLayoutConstraint" parents="LayoutConstraintSupport" label="VBoxLayoutConstraintSupport" type="com.bstek.dorado.view.widget.layout.VBoxLayoutConstraintSupport"><Props> |
| | | <Prop name="align" defaultValue="left" enumValues="left,center,right"/></Props></Rule><Rule name="FormLayout" parents="Layout" label="FormLayout" nodeName="form" type="com.bstek.dorado.view.widget.layout.FormLayout" sortFactor="1005"><Props> |
| | | <Prop name="colPadding" defaultValue="6" type="int"/> |
| | | <Prop name="cols" highlight="1"/> |
| | | <Prop name="padding" defaultValue="8" type="int"/> |
| | | <Prop name="rowHeight" type="int"/> |
| | | <Prop name="rowPadding" defaultValue="6" type="int"/> |
| | | <Prop name="stretchWidth" type="boolean"/></Props></Rule><Rule name="FormLayoutConstraint" parents="LayoutConstraintSupport" label="FormLayoutConstraint" type="com.bstek.dorado.view.widget.layout.FormLayoutConstraint"><Props> |
| | | <Prop name="align" defaultValue="left" enumValues="left,center,right"/> |
| | | <Prop name="colSpan" type="int"/> |
| | | <Prop name="rowSpan" type="int"/> |
| | | <Prop name="vAlign" defaultValue="top" enumValues="top,center,bottom"/></Props></Rule><Rule name="NativeLayout" parents="Layout" label="NativeLayout" nodeName="native" type="com.bstek.dorado.view.widget.layout.NativeLayout" sortFactor="1006"><Props> |
| | | <Prop name="lazyRenderChild" type="boolean"/> |
| | | <Prop name="style"/></Props></Rule><Rule name="NativeLayoutConstraint" parents="HashMap" label="CommonLayoutConstraint" type="com.bstek.dorado.view.widget.layout.CommonLayoutConstraint"></Rule><Rule name="AbstractMap" abstract="true" type="java.util.AbstractMap"></Rule><Rule name="HashMap" parents="AbstractMap" label="HashMap" type="java.util.HashMap"></Rule><Rule name="DataSet" parents="Component" label="DataSet" nodeName="DataSet" type="com.bstek.dorado.view.widget.data.DataSet" sortFactor="2001" category="General" icon="/com/bstek/dorado/view/widget/data/DataSet.png" autoGenerateId="true" clientTypes="desktop,touch"><PrimitiveProps> |
| | | <Prop name="listener"/></PrimitiveProps><Props> |
| | | <Prop name="cacheable" type="boolean"/> |
| | | <Prop name="dataProvider" highlight="1" type="com.bstek.dorado.data.provider.DataProvider"/> |
| | | <Prop name="dataType" highlight="1" type="com.bstek.dorado.data.type.DataType"/> |
| | | <Prop name="loadMode" defaultValue="lazy" enumValues="preload,onCreate,onReady,lazy,manual"/> |
| | | <Prop name="pageSize" type="int"/> |
| | | <Prop name="parameter" highlight="1" editor="any" type="java.lang.Object"/> |
| | | <Prop name="readOnly" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onLoadData" parameters="self,arg"/> |
| | | <ClientEvent name="beforeLoadData" parameters="self,arg"/> |
| | | <ClientEvent name="onDataLoad" parameters="self,arg" deprecated="true"/></ClientEvents></Rule><Rule name="Control" parents="com.bstek.dorado.view.widget.Control" label="Control" nodeName="Control" type="com.bstek.dorado.view.widget.DefaultControl" sortFactor="2002" category="General" clientTypes="desktop,touch"></Rule><Rule name="Container" parents="com.bstek.dorado.view.widget.Control" label="Container" type="com.bstek.dorado.view.widget.Container" sortFactor="2003" category="General" icon="/com/bstek/dorado/view/widget/Container.png" clientTypes="desktop,touch"><PrimitiveProps> |
| | | <Prop name="listener"/></PrimitiveProps><Props> |
| | | <Prop name="containerUi" defaultValue="default" enumValues="default,optional1"/> |
| | | <Prop name="contentOverflow" enumValues="visible,hidden,scroll,auto"/> |
| | | <Prop name="contentOverflowX" enumValues="visible,hidden,scroll,auto"/> |
| | | <Prop name="contentOverflowY" enumValues="visible,hidden,scroll,auto"/> |
| | | <Prop name="layout" visible="false" type="com.bstek.dorado.view.widget.layout.Layout"/></Props><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule><Rule name="HtmlContainer" parents="Container" label="HtmlContainer" type="com.bstek.dorado.view.widget.HtmlContainer" sortFactor="2004" category="General" icon="/com/bstek/dorado/view/widget/HtmlContainer.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="containerExpression"/> |
| | | <Prop name="content" editor="multiLines"/> |
| | | <Prop name="contentFile"/></Props></Rule><Rule name="SubViewHolder" parents="com.bstek.dorado.view.widget.Control" label="SubViewHolder" type="com.bstek.dorado.view.widget.SubViewHolder" sortFactor="2005" category="General" icon="/com/bstek/dorado/view/widget/SubViewHolder.png" clientTypes="desktop,touch"><Props><Prop name="context" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="loadMode" enumValues="preload,lazy,manual"/> |
| | | <Prop name="subView"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeLoad" parameters="self,arg"/> |
| | | <ClientEvent name="onLoad" parameters="self,arg"/> |
| | | <ClientEvent name="onLoadFailure" parameters="self,arg"/></ClientEvents></Rule><Rule name="Action" parents="Component" label="Action" type="com.bstek.dorado.view.widget.action.Action" sortFactor="2006" category="Action" icon="/com/bstek/dorado/view/widget/action/Action.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="caption"/> |
| | | <Prop name="confirmMessage"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="hotkey" enumValues="f1,f2,ctrl+s,alt+s,shift+s,ctrl+alt+shift+s,return,space,backspace,left,right,up,down"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="parameter" editor="any" type="java.lang.Object"/> |
| | | <Prop name="successMessage"/> |
| | | <Prop name="tip"/></Props><ClientEvents> |
| | | <ClientEvent name="onExecute" parameters="self,arg"/> |
| | | <ClientEvent name="beforeExecute" parameters="self,arg"/> |
| | | <ClientEvent name="onFailure" parameters="self,arg"/> |
| | | <ClientEvent name="onSuccess" parameters="self,arg"/></ClientEvents></Rule><Rule name="AjaxAction" parents="AsyncAction" label="AjaxAction" type="com.bstek.dorado.view.widget.action.AjaxAction" sortFactor="2007" category="Action" icon="/com/bstek/dorado/view/widget/action/AjaxAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="batchable" defaultValue="true" type="boolean"/> |
| | | <Prop name="service" highlight="1"/> |
| | | <Prop name="supportsEntity" defaultValue="true" type="boolean"/> |
| | | <Prop name="timeout" type="long"/></Props></Rule><Rule name="UpdateAction" parents="AsyncAction" label="UpdateAction" type="com.bstek.dorado.view.widget.action.UpdateAction" sortFactor="2008" category="Action" icon="/com/bstek/dorado/view/widget/action/UpdateAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="alwaysExecute" type="boolean"/> |
| | | <Prop name="dataResolver" highlight="1" type="com.bstek.dorado.data.resolver.DataResolver"/> |
| | | <Prop name="executingMessage"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetUpdateData" parameters="self,arg"/></ClientEvents><Children><Child rule="UpdateItem" name="UpdateItems" aggregated="true"></Child></Children></Rule><Rule name="FormSubmitAction" parents="Action" label="FormSubmitAction" type="com.bstek.dorado.view.widget.action.FormSubmitAction" sortFactor="2009" category="Action" icon="/com/bstek/dorado/view/widget/action/FormSubmitAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="action"/> |
| | | <Prop name="method" defaultValue="post" enumValues="post,get"/> |
| | | <Prop name="target"/></Props></Rule><Rule name="LongTask" parents="Action" label="LongTask" type="com.bstek.dorado.view.widget.action.LongTask" sortFactor="2010" category="Action" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="appearence" defaultValue="daemonTask" enumValues="none,daemonTask,mainTask"/> |
| | | <Prop name="disableOnActive" defaultValue="true" type="boolean"/> |
| | | <Prop name="taskName" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="onTaskScheduled" parameters="self,arg"/> |
| | | <ClientEvent name="onTaskEnd" parameters="self,arg"/> |
| | | <ClientEvent name="onLog" parameters="self,arg"/> |
| | | <ClientEvent name="onStateChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="Button" parents="AbstractButton" label="Button" type="com.bstek.dorado.view.widget.base.Button" sortFactor="2011" category="General" icon="/com/bstek/dorado/view/widget/base/Button.png" clientTypes="desktop"><Props> |
| | | <Prop name="caption" highlight="1"/> |
| | | <Prop name="height" visible="false"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="showTrigger" type="boolean"/> |
| | | <Prop name="splitButton" type="boolean"/> |
| | | <Prop name="triggerToggled" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onTriggerClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="SimpleButton" parents="AbstractButton" label="SimpleButton" type="com.bstek.dorado.view.widget.base.SimpleButton" sortFactor="2012" category="General" icon="/com/bstek/dorado/view/widget/base/SimpleButton.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="disabledClassName"/> |
| | | <Prop name="hoverClassName"/> |
| | | <Prop name="mouseDownClassName"/> |
| | | <Prop name="toggledClassName"/></Props></Rule><Rule name="SimpleIconButton" parents="SimpleButton" label="SimpleIconButton" type="com.bstek.dorado.view.widget.base.SimpleIconButton" sortFactor="2013" category="General" icon="/com/bstek/dorado/view/widget/base/SimpleIconButton.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="icon" highlight="1"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="showTrigger" type="boolean"/></Props></Rule><Rule name="Panel" parents="AbstractPanel" label="Panel" type="com.bstek.dorado.view.widget.base.Panel" sortFactor="2014" category="General" icon="/com/bstek/dorado/view/widget/base/Panel.png" clientTypes="desktop"><Props> |
| | | <Prop name="background"/> |
| | | <Prop name="border" defaultValue="normal" enumValues="none,normal,curve" deprecated="true"/> |
| | | <Prop name="closeAction" defaultValue="hide" enumValues="hide,close"/> |
| | | <Prop name="closeable" type="boolean"/> |
| | | <Prop name="collapseable" defaultValue="false" type="boolean"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="maximizeable" type="boolean"/> |
| | | <Prop name="maximized" type="boolean"/> |
| | | <Prop name="showCaptionBar" type="java.lang.Boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onMaximize" parameters="self,arg"/> |
| | | <ClientEvent name="beforeMaximize" parameters="self,arg"/></ClientEvents><Children><Child name="Tools" fixed="true"><Rule name="Wrapper.Tools" label="Tools" nodeName="Tools" icon="/com/bstek/dorado/view/widget/base/Tools.png"><Children><Child rule="SimpleIconButton" name="Tools" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="GroupBox" parents="AbstractPanel" label="GroupBox" type="com.bstek.dorado.view.widget.base.GroupBox" sortFactor="2015" category="General" icon="/com/bstek/dorado/view/widget/base/GroupBox.png" clientTypes="desktop"></Rule><Rule name="FieldSet" parents="AbstractPanel" label="FieldSet" type="com.bstek.dorado.view.widget.base.FieldSet" sortFactor="2016" category="General" icon="/com/bstek/dorado/view/widget/base/FieldSet.png" clientTypes="desktop"></Rule><Rule name="IFrame" parents="com.bstek.dorado.view.widget.Control" label="IFrame" type="com.bstek.dorado.view.widget.base.IFrame" sortFactor="2017" category="General" icon="/com/bstek/dorado/view/widget/base/IFrame.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="name"/> |
| | | <Prop name="path"/></Props><ClientEvents> |
| | | <ClientEvent name="onLoad" parameters="self,arg"/></ClientEvents></Rule><Rule name="CardBook" parents="com.bstek.dorado.view.widget.Control" label="CardBook" type="com.bstek.dorado.view.widget.base.CardBook" sortFactor="2018" category="General" icon="/com/bstek/dorado/view/widget/base/CardBook.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="currentControl" deprecated="true" visible="false" type="int"/> |
| | | <Prop name="currentIndex" type="int"/> |
| | | <Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeCurrentChange" parameters="self,arg"/> |
| | | <ClientEvent name="onCurrentChange" parameters="self,arg"/></ClientEvents><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Controls" aggregated="true"></Child></Children></Rule><Rule name="TabControl" parents="TabBar" label="TabControl" type="com.bstek.dorado.view.widget.base.tab.TabControl" sortFactor="2019" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabControl.png" clientTypes="desktop"><Props> |
| | | <Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><Children><Child rule="IFrameTab" name="IFrameTab" aggregated="true"></Child><Child rule="ControlTab" name="ControlTab" aggregated="true"></Child></Children></Rule><Rule name="VerticalTabControl" parents="TabColumn" label="VerticalTabControl" type="com.bstek.dorado.view.widget.base.tab.VerticalTabControl" sortFactor="2020" category="General" icon="/com/bstek/dorado/view/widget/base/tab/VerticalTabControl.png" clientTypes="desktop"><Props> |
| | | <Prop name="tabColumnWidth" defaultValue="200" type="int"/></Props><Children><Child rule="IFrameTab" name="IFrameTab" aggregated="true"></Child><Child rule="ControlTab" name="ControlTab" aggregated="true"></Child></Children></Rule><Rule name="TabBar" parents="AbstractTabControl" label="TabBar" type="com.bstek.dorado.view.widget.base.tab.TabBar" sortFactor="2021" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabBar.png" clientTypes="desktop"><Props> |
| | | <Prop name="showMenuButton" type="boolean"/> |
| | | <Prop name="tabMinWidth" type="int"/> |
| | | <Prop name="tabPlacement" defaultValue="top" enumValues="top,bottom"/></Props><Children><Child rule="Tab" name="Tab" aggregated="true" public="false"></Child></Children></Rule><Rule name="TabColumn" parents="AbstractTabControl" label="TabColumn" type="com.bstek.dorado.view.widget.base.tab.TabColumn" sortFactor="2022" category="General" icon="/com/bstek/dorado/view/widget/base/tab/TabColumn.png" clientTypes="desktop"><Props> |
| | | <Prop name="tabPlacement" defaultValue="left" enumValues="left,right"/> |
| | | <Prop name="verticalText" type="boolean"/></Props><Children><Child rule="Tab" name="Tab" aggregated="true" public="false"></Child></Children></Rule><Rule name="ToolBar" parents="com.bstek.dorado.view.widget.Control" label="ToolBar" type="com.bstek.dorado.view.widget.base.toolbar.ToolBar" sortFactor="2023" category="General" icon="/com/bstek/dorado/view/widget/base/toolbar/ToolBar.png" clientTypes="desktop"><Props> |
| | | <Prop name="fixRight" type="boolean"/> |
| | | <Prop name="height" visible="false"/> |
| | | <Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="MenuButton" name="MenuButton" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Label" name="ToolBarLabel" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Separator" name="Separator" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.base.toolbar.Button" name="ToolBarButton" aggregated="true"></Child><Child rule="Fill" name="Fill" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Items" aggregated="true"></Child></Children></Rule><Rule name="SplitPanel" parents="com.bstek.dorado.view.widget.Control" label="SplitPanel" type="com.bstek.dorado.view.widget.base.SplitPanel" sortFactor="2024" category="General" icon="/com/bstek/dorado/view/widget/base/SplitPanel.png" clientTypes="desktop"><Props> |
| | | <Prop name="animate" type="java.lang.Boolean"/> |
| | | <Prop name="collapseBothSide" defaultValue="false" type="boolean"/> |
| | | <Prop name="collapseable" defaultValue="true" type="boolean"/> |
| | | <Prop name="collapsed" type="boolean"/> |
| | | <Prop name="direction" defaultValue="left" highlight="1" enumValues="left,top,right,bottom"/> |
| | | <Prop name="maxPosition" type="int"/> |
| | | <Prop name="minPosition" type="int"/> |
| | | <Prop name="openPreviewOnHover" defaultValue="false" type="boolean"/> |
| | | <Prop name="position" defaultValue="100" highlight="1"/> |
| | | <Prop name="previewable" type="boolean"/> |
| | | <Prop name="resizeable" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onCollapsedChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCollapsedChange" parameters="self,arg"/></ClientEvents><Children><Child name="MainControl" fixed="true"><Rule name="Wrapper.MainControl" label="MainControl" nodeName="MainControl" icon="/com/bstek/dorado/view/widget/base/MainControl.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="MainControl"></Child></Children></Rule></Child><Child name="SideControl" fixed="true"><Rule name="Wrapper.SideControl" label="SideControl" nodeName="SideControl" icon="/com/bstek/dorado/view/widget/base/SideControl.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="SideControl"></Child></Children></Rule></Child></Children></Rule><Rule name="Accordion" parents="com.bstek.dorado.view.widget.Control" label="Accordion" type="com.bstek.dorado.view.widget.base.accordion.Accordion" sortFactor="2025" category="General" icon="/com/bstek/dorado/view/widget/base/accordion/Accordion.png" clientTypes="desktop"><Props> |
| | | <Prop name="animate" type="java.lang.Boolean"/> |
| | | <Prop name="currentSection" type="int"/> |
| | | <Prop name="dynaHeight" defaultValue="false" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeCurrentSectionChange" parameters="self,arg"/> |
| | | <ClientEvent name="onCurrentSectionChange" parameters="self,arg"/></ClientEvents><Children><Child rule="Section" name="Sections" aggregated="true"></Child></Children></Rule><Rule name="Slider" parents="com.bstek.dorado.view.widget.Control" label="Slider" type="com.bstek.dorado.view.widget.base.Slider" sortFactor="2026" category="General" icon="/com/bstek/dorado/view/widget/base/Slider.png" clientTypes="desktop"><Props> |
| | | <Prop name="maxValue" defaultValue="100" type="float"/> |
| | | <Prop name="minValue" type="float"/> |
| | | <Prop name="orientation" defaultValue="horizental" enumValues="horizontal,horizontal,vertical"/> |
| | | <Prop name="precision" type="int"/> |
| | | <Prop name="step" type="float"/> |
| | | <Prop name="value" type="float"/></Props><ClientEvents> |
| | | <ClientEvent name="onValueChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeValueChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="ProgressBar" parents="AbstractPropertyDataControl" label="ProgressBar" type="com.bstek.dorado.view.widget.base.ProgressBar" sortFactor="2027" category="General" icon="/com/bstek/dorado/view/widget/base/ProgressBar.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="effectEnable" type="boolean"/> |
| | | <Prop name="maxValue" defaultValue="100" type="float"/> |
| | | <Prop name="minValue" type="float"/> |
| | | <Prop name="showText" defaultValue="true" type="boolean"/> |
| | | <Prop name="textPattern" defaultValue="{percent}%"/> |
| | | <Prop name="value"/></Props></Rule><Rule name="Tip" parents="com.bstek.dorado.view.widget.Control,FloatControl" label="Tip" type="com.bstek.dorado.view.widget.base.Tip" sortFactor="2028" category="Floatable" icon="/com/bstek/dorado/view/widget/base/Tip.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> |
| | | <Prop name="anchorTarget" visible="false"/> |
| | | <Prop name="animateTarget" visible="false"/> |
| | | <Prop name="animateType" defaultValue="fade" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="arrowAlign" defaultValue="center" enumValues="center,top,right,bottom,left"/> |
| | | <Prop name="arrowDirection" defaultValue="none" enumValues="top,right,bottom,left,none"/> |
| | | <Prop name="arrowOffset" type="int"/> |
| | | <Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> |
| | | <Prop name="caption"/> |
| | | <Prop name="center" type="boolean"/> |
| | | <Prop name="closeable" type="boolean"/> |
| | | <Prop name="content" type="java.lang.Object"/> |
| | | <Prop name="continuedFocus" defaultValue="true" type="boolean"/> |
| | | <Prop name="floating" defaultValue="true" type="boolean"/> |
| | | <Prop name="floatingClassName"/> |
| | | <Prop name="focusAfterShow" defaultValue="false" type="boolean"/> |
| | | <Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> |
| | | <Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="icon" enumValues="INFO,WARNING,ERROR,QUESTION"/> |
| | | <Prop name="left" type="int"/> |
| | | <Prop name="modal" type="boolean"/> |
| | | <Prop name="modalType" enumValues="dark,transparent"/> |
| | | <Prop name="offsetLeft" type="int"/> |
| | | <Prop name="offsetTop" type="int"/> |
| | | <Prop name="shadowMode" defaultValue="drop" enumValues="drop,sides,frame,none"/> |
| | | <Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="showDuration" type="int"/> |
| | | <Prop name="text" editor="multilines"/> |
| | | <Prop name="top" type="int"/> |
| | | <Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> |
| | | <Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onShow" parameters="self,arg"/> |
| | | <ClientEvent name="beforeHide" parameters="self,arg"/> |
| | | <ClientEvent name="beforeClose" parameters="self,arg"/> |
| | | <ClientEvent name="beforeShow" parameters="self,arg"/> |
| | | <ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="FloatContainer" parents="Container,FloatControl" label="FloatContainer" type="com.bstek.dorado.view.widget.base.FloatContainer" sortFactor="2029" category="Floatable" icon="/com/bstek/dorado/view/widget/base/FloatContainer.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> |
| | | <Prop name="anchorTarget" visible="false"/> |
| | | <Prop name="animateTarget" visible="false"/> |
| | | <Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> |
| | | <Prop name="center" type="boolean"/> |
| | | <Prop name="continuedFocus" defaultValue="true" type="boolean"/> |
| | | <Prop name="floating" defaultValue="true" type="boolean"/> |
| | | <Prop name="floatingClassName"/> |
| | | <Prop name="focusAfterShow" defaultValue="true" type="boolean"/> |
| | | <Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> |
| | | <Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="left" type="int"/> |
| | | <Prop name="modal" type="boolean"/> |
| | | <Prop name="modalType" enumValues="dark,transparent"/> |
| | | <Prop name="offsetLeft" type="int"/> |
| | | <Prop name="offsetTop" type="int"/> |
| | | <Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> |
| | | <Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="top" type="int"/> |
| | | <Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> |
| | | <Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onShow" parameters="self,arg"/> |
| | | <ClientEvent name="beforeHide" parameters="self,arg"/> |
| | | <ClientEvent name="beforeClose" parameters="self,arg"/> |
| | | <ClientEvent name="beforeShow" parameters="self,arg"/> |
| | | <ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="FloatPanel" parents="Panel,FloatControl" label="FloatPanel" type="com.bstek.dorado.view.widget.base.FloatPanel" sortFactor="2030" category="Floatable" icon="/com/bstek/dorado/view/widget/base/FloatPanel.png" clientTypes="desktop"><Props> |
| | | <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> |
| | | <Prop name="anchorTarget" visible="false"/> |
| | | <Prop name="animateTarget" visible="false"/> |
| | | <Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> |
| | | <Prop name="center" highlight="1" type="boolean"/> |
| | | <Prop name="continuedFocus" defaultValue="true" type="boolean"/> |
| | | <Prop name="floating" defaultValue="true" type="boolean"/> |
| | | <Prop name="floatingClassName"/> |
| | | <Prop name="focusAfterShow" defaultValue="true" type="boolean"/> |
| | | <Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> |
| | | <Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="left" type="int"/> |
| | | <Prop name="modal" highlight="1" type="boolean"/> |
| | | <Prop name="modalType" enumValues="dark,transparent"/> |
| | | <Prop name="offsetLeft" type="int"/> |
| | | <Prop name="offsetTop" type="int"/> |
| | | <Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> |
| | | <Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="top" type="int"/> |
| | | <Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> |
| | | <Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onShow" parameters="self,arg"/> |
| | | <ClientEvent name="beforeHide" parameters="self,arg"/> |
| | | <ClientEvent name="beforeClose" parameters="self,arg"/> |
| | | <ClientEvent name="beforeShow" parameters="self,arg"/> |
| | | <ClientEvent name="onHide" parameters="self,arg"/></ClientEvents></Rule><Rule name="Dialog" parents="FloatPanel" label="Dialog" type="com.bstek.dorado.view.widget.base.Dialog" sortFactor="2031" category="Floatable" icon="/com/bstek/dorado/view/widget/base/Dialog.png" clientTypes="desktop"><Props> |
| | | <Prop name="center" defaultValue="true" type="boolean"/> |
| | | <Prop name="closeable" defaultValue="true" type="boolean"/> |
| | | <Prop name="dragOutside" type="boolean"/> |
| | | <Prop name="draggable" defaultValue="true" type="boolean"/> |
| | | <Prop name="maxHeight" type="int"/> |
| | | <Prop name="maxWidth" type="int"/> |
| | | <Prop name="minHeight" type="int"/> |
| | | <Prop name="minWidth" type="int"/> |
| | | <Prop name="minimizeable" type="boolean"/> |
| | | <Prop name="minimized" type="boolean"/> |
| | | <Prop name="modal" defaultValue="true" type="boolean"/> |
| | | <Prop name="resizeable" defaultValue="true" type="boolean"/> |
| | | <Prop name="shadowMode" defaultValue="frame" enumValues="drop,sides,frame,none"/></Props><ClientEvents> |
| | | <ClientEvent name="onMinimize" parameters="self,arg"/> |
| | | <ClientEvent name="beforeMinimize" parameters="self,arg"/></ClientEvents></Rule><Rule name="Menu" parents="com.bstek.dorado.view.widget.Control,FloatControl" label="Menu" type="com.bstek.dorado.view.widget.base.menu.Menu" sortFactor="2032" category="Floatable" icon="/com/bstek/dorado/view/widget/base/menu/Menu.png" autoGenerateId="true" clientTypes="desktop"><Props> |
| | | <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> |
| | | <Prop name="anchorTarget" visible="false"/> |
| | | <Prop name="animateTarget" visible="false"/> |
| | | <Prop name="animateType" defaultValue="zoom" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="autoAdjustPosition" defaultValue="true" type="boolean"/> |
| | | <Prop name="center" type="boolean"/> |
| | | <Prop name="continuedFocus" defaultValue="true" type="boolean"/> |
| | | <Prop name="floating" defaultValue="true" type="boolean"/> |
| | | <Prop name="floatingClassName"/> |
| | | <Prop name="focusAfterShow" defaultValue="true" type="boolean"/> |
| | | <Prop name="handleOverflow" defaultValue="true" visible="false" type="boolean"/> |
| | | <Prop name="hideAnimateType" defaultValue="fade" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="iconPosition" defaultValue="left" enumValues="left,top"/> |
| | | <Prop name="left" type="int"/> |
| | | <Prop name="modal" type="boolean"/> |
| | | <Prop name="modalType" enumValues="dark,transparent"/> |
| | | <Prop name="offsetLeft" type="int"/> |
| | | <Prop name="offsetTop" type="int"/> |
| | | <Prop name="shadowMode" defaultValue="sides" enumValues="drop,sides,frame,none"/> |
| | | <Prop name="showAnimateType" defaultValue="slide" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="top" type="int"/> |
| | | <Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/> |
| | | <Prop name="visible" type="java.lang.Boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onShow" parameters="self,arg"/> |
| | | <ClientEvent name="beforeHide" parameters="self,arg"/> |
| | | <ClientEvent name="beforeClose" parameters="self,arg"/> |
| | | <ClientEvent name="beforeShow" parameters="self,arg"/> |
| | | <ClientEvent name="onHide" parameters="self,arg"/> |
| | | <ClientEvent name="onHideTopMenu" parameters="self,arg"/></ClientEvents><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="DatePicker" parents="com.bstek.dorado.view.widget.Control" label="DatePicker" nodeName="DatePicker" type="com.bstek.dorado.view.widget.base.DatePicker" sortFactor="2033" category="General" icon="/com/bstek/dorado/view/widget/base/DatePicker.png" clientTypes="desktop"><Props> |
| | | <Prop name="date" type="java.util.Date"/> |
| | | <Prop name="selectionMode" defaultValue="singleDate" enumValues="singleDate,multiDate"/> |
| | | <Prop name="showClearButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showConfirmButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showTimeSpinner" defaultValue="false" type="boolean"/> |
| | | <Prop name="showTodayButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="yearMonthFormat"/></Props><ClientEvents> |
| | | <ClientEvent name="onFilterDate" parameters="self,arg"/> |
| | | <ClientEvent name="onClear" parameters="self,arg"/> |
| | | <ClientEvent name="onCancel" parameters="self,arg"/> |
| | | <ClientEvent name="onConfirm" parameters="self,arg"/> |
| | | <ClientEvent name="onRefreshDateCell" parameters="self,arg"/> |
| | | <ClientEvent name="onPick" parameters="self,arg"/></ClientEvents></Rule><Rule name="YearMonthPicker" parents="com.bstek.dorado.view.widget.Control" label="YearMonthPicker" nodeName="YearMonthPicker" type="com.bstek.dorado.view.widget.base.YearMonthPicker" sortFactor="2034" category="General" icon="/com/bstek/dorado/view/widget/base/YearMonthPicker.png" clientTypes="desktop"><Props> |
| | | <Prop name="month" type="int"/> |
| | | <Prop name="year" type="int"/></Props><ClientEvents> |
| | | <ClientEvent name="onPick" parameters="self,arg"/> |
| | | <ClientEvent name="onCancel" parameters="self,arg"/></ClientEvents></Rule><Rule name="Label" parents="AbstractPropertyDataControl" label="Label" type="com.bstek.dorado.view.widget.form.Label" sortFactor="2035" category="Form" icon="/com/bstek/dorado/view/widget/form/Label.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="text" highlight="1"/> |
| | | <Prop name="ui" enumValues="default,bold,h1,h2,h3"/></Props></Rule><Rule name="DataLabel" parents="AbstractPropertyDataControl" label="DataLabel" type="com.bstek.dorado.view.widget.form.DataLabel" sortFactor="2036" category="Form" icon="/com/bstek/dorado/view/widget/form/DataLabel.png" clientTypes="desktop,touch" deprecated="true"></Rule><Rule name="Link" parents="Label" label="Link" type="com.bstek.dorado.view.widget.form.Link" sortFactor="2037" category="Form" icon="/com/bstek/dorado/view/widget/form/Link.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="href"/> |
| | | <Prop name="target"/></Props></Rule><Rule name="Image" parents="AbstractPropertyDataControl" label="Image" type="com.bstek.dorado.view.widget.form.Image" sortFactor="2038" category="Form" icon="/com/bstek/dorado/view/widget/form/Image.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="blankImage"/> |
| | | <Prop name="image" highlight="1"/> |
| | | <Prop name="packMode" defaultValue="center" enumValues="start,center,end"/> |
| | | <Prop name="stretchMode" defaultValue="keepRatio" enumValues="fitWidth,fitHeight,keepRatio,fill,stretch,none"/></Props></Rule><Rule name="TemplateField" parents="AbstractDataControl" label="TemplateField" type="com.bstek.dorado.view.widget.form.TemplateField" sortFactor="2039" category="Form" icon="/com/bstek/dorado/view/widget/form/TemplateField.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="template" highlight="1" editor="multiLines"/></Props></Rule><Rule name="TextEditor" parents="AbstractTextEditor" label="TextEditor" type="com.bstek.dorado.view.widget.form.TextEditor" sortFactor="2040" category="Form" icon="/com/bstek/dorado/view/widget/form/TextEditor.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="dataType" type="com.bstek.dorado.data.type.DataType"/> |
| | | <Prop name="displayFormat"/><Prop name="mapping" type="com.bstek.dorado.data.type.property.Mapping" compositeType="Fixed"> |
| | | <Prop name="keyProperty"/> |
| | | <Prop name="mapValues" editor="collection[pojo]" type="java.lang.Object"/> |
| | | <Prop name="valueProperty"/></Prop> |
| | | <Prop name="password" visible="false" type="boolean"/> |
| | | <Prop name="typeFormat"/></Props></Rule><Rule name="PasswordEditor" parents="AbstractTextEditor" label="PasswordEditor" type="com.bstek.dorado.view.widget.form.PasswordEditor" sortFactor="2041" category="Form" icon="/com/bstek/dorado/view/widget/form/PasswordEditor.png" clientTypes="desktop,touch"></Rule><Rule name="TextArea" parents="AbstractTextEditor" label="TextArea" type="com.bstek.dorado.view.widget.form.TextArea" sortFactor="2042" category="Form" icon="/com/bstek/dorado/view/widget/form/TextArea.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="maxLength" type="int"/> |
| | | <Prop name="minLength" type="int"/> |
| | | <Prop name="required" type="boolean"/> |
| | | <Prop name="selectTextOnFocus" defaultValue="false" type="boolean"/> |
| | | <Prop name="text" editor="multiLines"/></Props></Rule><Rule name="CheckBox" parents="AbstractDataEditor" label="CheckBox" type="com.bstek.dorado.view.widget.form.CheckBox" sortFactor="2043" category="Form" icon="/com/bstek/dorado/view/widget/form/CheckBox.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="caption"/> |
| | | <Prop name="mixedValue" type="java.lang.Object"/> |
| | | <Prop name="offValue" defaultValue="false" type="java.lang.Object"/> |
| | | <Prop name="onValue" defaultValue="true" type="java.lang.Object"/> |
| | | <Prop name="triState" type="boolean"/> |
| | | <Prop name="value" defaultValue="false" type="java.lang.Object"/></Props><ClientEvents> |
| | | <ClientEvent name="onValueChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="RadioGroup" parents="AbstractDataEditor" label="RadioGroup" type="com.bstek.dorado.view.widget.form.RadioGroup" sortFactor="2044" category="Form" icon="/com/bstek/dorado/view/widget/form/RadioGroup.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="columnCount" defaultValue="3" type="int"/> |
| | | <Prop name="layout" defaultValue="flow" enumValues="vertical,flow,grid"/> |
| | | <Prop name="value" type="java.lang.Object"/></Props><ClientEvents> |
| | | <ClientEvent name="onValueChange" parameters="self,arg"/></ClientEvents><Children><Child rule="RadioButton" name="RadioButtons" aggregated="true"></Child></Children></Rule><Rule name="DataMessage" parents="AbstractPropertyDataControl" label="DataMessage" type="com.bstek.dorado.view.widget.form.DataMessage" sortFactor="2045" category="Form" icon="/com/bstek/dorado/view/widget/form/DataMessage.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="showIconOnly" type="boolean"/> |
| | | <Prop name="showMultiMessage" type="boolean"/></Props></Rule><Rule name="FormProfile" parents="Component" label="FormProfile" type="com.bstek.dorado.view.widget.form.FormProfile" sortFactor="2046" category="Form" icon="/com/bstek/dorado/view/widget/form/FormProfile.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="className"/> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="editorWidth" type="int"/> |
| | | <Prop name="exClassName"/> |
| | | <Prop name="height"/> |
| | | <Prop name="hintPosition" enumValues="right,bottom"/> |
| | | <Prop name="hintSpacing" type="int"/> |
| | | <Prop name="hintWidth" type="int"/> |
| | | <Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> |
| | | <Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> |
| | | <Prop name="labelSeparator"/> |
| | | <Prop name="labelSpacing" type="int"/> |
| | | <Prop name="labelWidth" type="int"/> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="showHint" defaultValue="true" type="boolean"/> |
| | | <Prop name="showHintMessage" type="boolean"/> |
| | | <Prop name="showLabel" defaultValue="true" type="boolean"/> |
| | | <Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> |
| | | <Prop name="type" defaultValue="text" enumValues="text,password,textArea,checkBox,radioGroup"/> |
| | | <Prop name="ui"/> |
| | | <Prop name="width"/></Props></Rule><Rule name="FormElement" parents="com.bstek.dorado.view.widget.Control" label="FormElement" type="com.bstek.dorado.view.widget.form.FormElement" sortFactor="2047" category="Form" icon="/com/bstek/dorado/view/widget/form/FormElement.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="editable" defaultValue="true" type="boolean"/> |
| | | <Prop name="editorType" highlight="1" enumValues="TextEditor,PasswordEditor,TextArea,CheckBox,RadioGroup,Label,NumberSpinner"/> |
| | | <Prop name="editorWidth" type="int"/> |
| | | <Prop name="formProfile" reference="FormProfile:id"/> |
| | | <Prop name="hint"/> |
| | | <Prop name="hintPosition" defaultValue="right" enumValues="right,bottom"/> |
| | | <Prop name="hintSpacing" type="int"/> |
| | | <Prop name="hintWidth" type="int"/> |
| | | <Prop name="label" highlight="1"/> |
| | | <Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> |
| | | <Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> |
| | | <Prop name="labelSeparator"/> |
| | | <Prop name="labelSpacing" type="int"/> |
| | | <Prop name="labelWidth" type="int"/> |
| | | <Prop name="property" highlight="1"/> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="showHint" defaultValue="true" type="boolean"/> |
| | | <Prop name="showHintMessage" type="boolean"/> |
| | | <Prop name="showLabel" defaultValue="true" type="boolean"/> |
| | | <Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> |
| | | <Prop name="type" enumValues="text,password,textArea,checkBox,radioGroup" visible="false"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/form/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="AutoForm" parents="com.bstek.dorado.view.widget.Control" label="AutoForm" type="com.bstek.dorado.view.widget.form.autoform.AutoForm" sortFactor="2048" category="Form" icon="/com/bstek/dorado/view/widget/form/autoform/AutoForm.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="autoCreateElements" type="boolean"/> |
| | | <Prop name="colPadding" type="int"/> |
| | | <Prop name="cols" highlight="1"/> |
| | | <Prop name="createOwnEntity" defaultValue="true" type="boolean"/> |
| | | <Prop name="createPrivateDataSet" type="boolean"/> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="dataType" type="com.bstek.dorado.data.type.EntityDataType"/> |
| | | <Prop name="editorWidth" type="int"/> |
| | | <Prop name="formProfile" reference="FormProfile:id"/> |
| | | <Prop name="hintPosition" enumValues="right,bottom"/> |
| | | <Prop name="hintSpacing" type="int"/> |
| | | <Prop name="hintWidth" type="int"/> |
| | | <Prop name="labelAlign" defaultValue="left" enumValues="left,center,right"/> |
| | | <Prop name="labelPosition" defaultValue="left" enumValues="left,top"/> |
| | | <Prop name="labelSeparator"/> |
| | | <Prop name="labelSpacing" type="int"/> |
| | | <Prop name="labelWidth" type="int"/> |
| | | <Prop name="padding" type="int"/> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="rowHeight" type="int"/> |
| | | <Prop name="rowPadding" type="int"/> |
| | | <Prop name="showHint" defaultValue="true" type="boolean"/> |
| | | <Prop name="showHintMessage" type="boolean"/> |
| | | <Prop name="showLabel" defaultValue="true" type="boolean"/> |
| | | <Prop name="stretchWidth" type="boolean"/></Props><Children><Child rule="AutoFormElement" name="AutoFormElement" aggregated="true"></Child><Child rule="com.bstek.dorado.view.widget.Control" name="Elements" aggregated="true"></Child></Children></Rule><Rule name="NumberSpinner" parents="Spinner" label="NumberSpinner" type="com.bstek.dorado.view.widget.form.NumberSpinner" sortFactor="2049" category="Form" icon="/com/bstek/dorado/view/widget/form/NumberSpinner.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="max" defaultValue="2147483647" type="int"/> |
| | | <Prop name="min" defaultValue="-2147483648" type="int"/> |
| | | <Prop name="selectTextOnFocus" defaultValue="true" type="boolean"/></Props></Rule><Rule name="DateTimeSpinner" parents="Spinner" label="DateTimeSpinner" type="com.bstek.dorado.view.widget.form.DateTimeSpinner" sortFactor="2050" category="Form" icon="/com/bstek/dorado/view/widget/form/DateTimeSpinner.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="date" type="int"/> |
| | | <Prop name="hours" type="int"/> |
| | | <Prop name="minutes" type="int"/> |
| | | <Prop name="month" type="int"/> |
| | | <Prop name="seconds" type="int"/> |
| | | <Prop name="type" defaultValue="time" enumValues="date,time,dateTime,hours,minutes,dateHours,dateMinutes"/> |
| | | <Prop name="year" type="int"/></Props></Rule><Rule name="CustomSpinner" parents="Spinner" label="CustomSpinner" type="com.bstek.dorado.view.widget.form.CustomSpinner" sortFactor="2051" category="Form" icon="/com/bstek/dorado/view/widget/form/CustomSpinner.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="pattern" highlight="1"/> |
| | | <Prop name="text" visible="false"/> |
| | | <Prop name="value"/></Props></Rule><Rule name="Trigger" parents="Component" label="Trigger" type="com.bstek.dorado.view.widget.form.trigger.Trigger" sortFactor="2052" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/Trigger.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="buttonVisible" defaultValue="true" type="boolean"/> |
| | | <Prop name="editable" defaultValue="true" type="boolean"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass" enumValues="d-trigger-icon-drop,d-trigger-icon-search,d-trigger-icon-date,d-trigger-icon-custom"/></Props><ClientEvents> |
| | | <ClientEvent name="onExecute" parameters="self,arg"/> |
| | | <ClientEvent name="beforeExecute" parameters="self,arg"/></ClientEvents></Rule><Rule name="ListDropDown" parents="RowListDropDown" label="ListDropDown" type="com.bstek.dorado.view.widget.form.trigger.ListDropDown" sortFactor="2053" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/ListDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> |
| | | <Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataSetDropDown" parents="RowListDropDown" label="DataSetDropDown" type="com.bstek.dorado.view.widget.form.trigger.DataSetDropDown" sortFactor="2054" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/DataSetDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="filterMode" defaultValue="serverSide" enumValues="clientSide,serverSide"/> |
| | | <Prop name="filterOnTyping" defaultValue="false" type="boolean"/> |
| | | <Prop name="property" highlight="1"/> |
| | | <Prop name="reloadDataOnOpen" type="boolean"/> |
| | | <Prop name="useDataBinding" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onSetFilterParameter" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AutoMappingDropDown" parents="RowListDropDown" label="AutoMappingDropDown" type="com.bstek.dorado.view.widget.form.trigger.AutoMappingDropDown" sortFactor="2055" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/AutoMappingDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> |
| | | <Prop name="dynaFilter" defaultValue="true" type="boolean"/> |
| | | <Prop name="property" defaultValue="value"/></Props></Rule><Rule name="DateDropDown" parents="DropDown" label="DateDropDown" type="com.bstek.dorado.view.widget.form.trigger.DateDropDown" sortFactor="2056" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/DateDropDown.png" autoGenerateId="true" clientTypes="desktop"><Props> |
| | | <Prop name="selectionMode" defaultValue="singleDate" enumValues="singleDate,multiDate"/> |
| | | <Prop name="showConfirmButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showTimeSpinner" type="boolean"/> |
| | | <Prop name="showTodayButton" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onRefreshDateCell" parameters="self,arg"/> |
| | | <ClientEvent name="onFilterDate" parameters="self,arg"/></ClientEvents></Rule><Rule name="YearMonthDropDown" parents="DropDown" label="YearMonthDropDown" type="com.bstek.dorado.view.widget.form.trigger.YearMonthDropDown" sortFactor="2057" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/YearMonthDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="YearDropDown" parents="DropDown" label="YearDropDown" type="com.bstek.dorado.view.widget.form.trigger.YearDropDown" sortFactor="2058" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/YearDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="MonthDropDown" parents="DropDown" label="MonthDropDown" type="com.bstek.dorado.view.widget.form.trigger.MonthDropDown" sortFactor="2059" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/MonthDropDown.png" autoGenerateId="true" clientTypes="desktop"></Rule><Rule name="CustomDropDown" parents="DropDown" label="CustomDropDown" type="com.bstek.dorado.view.widget.form.trigger.CustomDropDown" sortFactor="2060" category="Trigger" icon="/com/bstek/dorado/view/widget/form/trigger/CustomDropDown.png" autoGenerateId="true" clientTypes="desktop"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="DataPilot" parents="AbstractDataControl" label="DataPilot" type="com.bstek.dorado.view.widget.datacontrol.DataPilot" sortFactor="2061" category="General" icon="/com/bstek/dorado/view/widget/datacontrol/DataPilot.png" clientTypes="desktop"><Props> |
| | | <Prop name="height" visible="false"/> |
| | | <Prop name="itemCodes" highlight="1" enumValues="pages,|<,<,>,>|,goto,pageSize,info,+,-,x,|"/></Props><ClientEvents> |
| | | <ClientEvent name="onSubControlAction" parameters="self,arg"/> |
| | | <ClientEvent name="onSubControlRefresh" parameters="self,arg"/></ClientEvents></Rule><Rule name="ListBox" parents="AbstractListBox" label="ListBox" type="com.bstek.dorado.view.widget.list.ListBox" sortFactor="2062" category="Collection" icon="/com/bstek/dorado/view/widget/list/ListBox.png" clientTypes="desktop"><Props> |
| | | <Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataListBox" parents="AbstractListBox" label="DataListBox" type="com.bstek.dorado.view.widget.list.DataListBox" sortFactor="2063" category="Collection" icon="/com/bstek/dorado/view/widget/list/DataListBox.png" clientTypes="desktop"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="Grid" parents="AbstractGrid" label="Grid" type="com.bstek.dorado.view.widget.grid.Grid" sortFactor="2064" category="Collection" icon="/com/bstek/dorado/view/widget/grid/Grid.png" clientTypes="desktop"><Props> |
| | | <Prop name="items" highlight="1" editor="collection[pojo]" type="java.util.List"/></Props></Rule><Rule name="DataGrid" parents="AbstractGrid" label="DataGrid" type="com.bstek.dorado.view.widget.grid.DataGrid" sortFactor="2065" category="Collection" icon="/com/bstek/dorado/view/widget/grid/DataGrid.png" clientTypes="desktop"><Props> |
| | | <Prop name="appendOnLastEnter" type="boolean"/> |
| | | <Prop name="autoCreateColumns" type="java.lang.Boolean"/> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="dataType" deprecated="true" type="com.bstek.dorado.data.type.EntityDataType"/> |
| | | <Prop name="filterMode" defaultValue="clientSide" enumValues="clientSide,serverSide"/> |
| | | <Prop name="rowSelectionProperty"/> |
| | | <Prop name="sortMode" defaultValue="clientSide" enumValues="clientSide,serverSide"/> |
| | | <Prop name="supportsPaging" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="Tree" parents="AbstractTree" label="Tree" type="com.bstek.dorado.view.widget.tree.Tree" sortFactor="2066" category="Collection" icon="/com/bstek/dorado/view/widget/tree/Tree.png" clientTypes="desktop"><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule><Rule name="DataTree" parents="AbstractTree" label="DataTree" type="com.bstek.dorado.view.widget.tree.DataTree" sortFactor="2067" category="Collection" icon="/com/bstek/dorado/view/widget/tree/DataTree.png" clientTypes="desktop"><Props> |
| | | <Prop name="currentNodeDataPath"/> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> |
| | | <ClientEvent name="onDataNodeCreate" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="beforeDataNodeCreate" parameters="self,arg"/></ClientEvents><Children><Child name="BindingConfigs" fixed="true"><Rule name="Wrapper.BindingConfigs" label="BindingConfigs" nodeName="BindingConfigs" icon="/com/bstek/dorado/view/widget/tree/BindingConfigs.png"><Children><Child rule="BindingConfig" name="BindingConfigs" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="BlockView" parents="AbstractBlockView" label="BlockView" type="com.bstek.dorado.view.widget.blockview.BlockView" sortFactor="2068" category="Collection" icon="/com/bstek/dorado/view/widget/blockview/BlockView.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="items" highlight="1" editor="collection[any]" type="java.util.List"/></Props></Rule><Rule name="DataBlockView" parents="AbstractBlockView" label="DataBlockView" type="com.bstek.dorado.view.widget.blockview.DataBlockView" sortFactor="2069" category="Collection" icon="/com/bstek/dorado/view/widget/blockview/DataBlockView.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="TreeGrid" parents="AbstractTreeGrid" label="TreeGrid" type="com.bstek.dorado.view.widget.treegrid.TreeGrid" sortFactor="2070" category="Collection" icon="/com/bstek/dorado/view/widget/treegrid/TreeGrid.png" clientTypes="desktop"><Children><Child name="Nodes" fixed="true"><Rule name="Wrapper.Nodes" label="Nodes" nodeName="Nodes" icon="/com/bstek/dorado/view/widget/treegrid/Nodes.png"><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="DataTreeGrid" parents="AbstractTreeGrid" label="DataTreeGrid" type="com.bstek.dorado.view.widget.treegrid.DataTreeGrid" sortFactor="2071" category="Collection" icon="/com/bstek/dorado/view/widget/treegrid/DataTreeGrid.png" clientTypes="desktop"><Props> |
| | | <Prop name="autoCreateColumns" type="java.lang.Boolean"/> |
| | | <Prop name="currentNodeDataPath"/> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="dataType" type="com.bstek.dorado.data.type.EntityDataType"/></Props><ClientEvents> |
| | | <ClientEvent name="onDataNodeCreate" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="beforeDataNodeCreate" parameters="self,arg"/></ClientEvents><Children><Child name="BindingConfigs" fixed="true"><Rule name="Wrapper.BindingConfigs" label="BindingConfigs" nodeName="BindingConfigs" icon="/com/bstek/dorado/view/widget/tree/BindingConfigs.png"><Children><Child rule="BindingConfig" name="BindingConfigs" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="TagEditor" parents="AbstractTextEditor" label="TagEditor" type="com.bstek.dorado.view.widget.advance.TagEditor" sortFactor="2072" category="Form" icon="/com/bstek/dorado/view/widget/advance/TagEditor.png" clientTypes="desktop"><Props> |
| | | <Prop name="acceptUnknownTag" defaultValue="true" type="boolean"/> |
| | | <Prop name="availableTags" highlight="1" type="[Ljava.lang.String;"/> |
| | | <Prop name="availableTagsDataPath" highlight="1"/> |
| | | <Prop name="availableTagsDataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="highlightRequiredTags" defaultValue="true" type="boolean"/> |
| | | <Prop name="requiredTags" highlight="1" type="[Ljava.lang.String;"/> |
| | | <Prop name="showAvailableTags" defaultValue="true" type="boolean"/> |
| | | <Prop name="textSeperator" defaultValue=","/></Props><ClientEvents> |
| | | <ClientEvent name="beforeTagAdd" parameters="self,arg"/> |
| | | <ClientEvent name="beforeUnknownTagAccept" parameters="self,arg"/> |
| | | <ClientEvent name="onUnknownTagAccept" parameters="self,arg"/> |
| | | <ClientEvent name="onTagAdd" parameters="self,arg"/> |
| | | <ClientEvent name="beforeTagRemove" parameters="self,arg"/> |
| | | <ClientEvent name="onTagRemove" parameters="self,arg"/></ClientEvents></Rule><Rule name="ColorPicker" parents="com.bstek.dorado.view.widget.Control" label="ColorPicker" type="com.bstek.dorado.view.widget.advance.ColorPicker" sortFactor="2073" category="Form" icon="/com/bstek/dorado/view/widget/advance/ColorPicker.png" clientTypes="desktop"><Props> |
| | | <Prop name="allowEmpty" type="boolean"/> |
| | | <Prop name="color"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="palette" enumValues="#sixteen,#websafe,#named" type="[Ljava.lang.String;"/> |
| | | <Prop name="preferredFormat" enumValues="none,hex,hex6,hsl,rgb,name"/> |
| | | <Prop name="showAlpha" type="boolean"/> |
| | | <Prop name="showButtons" defaultValue="true" type="boolean"/> |
| | | <Prop name="showInitial" type="boolean"/> |
| | | <Prop name="showInput" type="boolean"/> |
| | | <Prop name="showPalette" type="boolean"/> |
| | | <Prop name="showPaletteOnly" type="boolean"/></Props></Rule><Rule name="ColorEditor" parents="AbstractDataEditor" label="ColorEditor" type="com.bstek.dorado.view.widget.advance.ColorEditor" sortFactor="2074" category="Form" icon="/com/bstek/dorado/view/widget/advance/ColorEditor.png" clientTypes="desktop"><Props> |
| | | <Prop name="allowEmpty" type="boolean"/> |
| | | <Prop name="color"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="palette" enumValues="#sixteen,#websafe,#named" type="[Ljava.lang.String;"/> |
| | | <Prop name="preferredFormat" defaultValue="name" enumValues="none,hex,hex6,hsl,rgb,name"/> |
| | | <Prop name="showAlpha" type="boolean"/> |
| | | <Prop name="showButtons" defaultValue="true" type="boolean"/> |
| | | <Prop name="showInitial" type="boolean"/> |
| | | <Prop name="showInput" type="boolean"/> |
| | | <Prop name="showPalette" type="boolean"/> |
| | | <Prop name="showPaletteOnly" type="boolean"/></Props></Rule><Rule name="UploadAction" parents="Action" label="UploadAction" type="com.bstek.dorado.uploader.widget.UploadAction" sortFactor="2075" category="Action" icon="/com/bstek/dorado/uploader/widget/UploadAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="autoUpload" defaultValue="true" type="boolean"/> |
| | | <Prop name="confirmMessage" visible="false"/> |
| | | <Prop name="fileResolver" highlight="1"/> |
| | | <Prop name="headers" editor="pojo" type="java.util.Map"/> |
| | | <Prop name="hotkey" visible="false"/> |
| | | <Prop name="maxFileSize" defaultValue="100MB"/> |
| | | <Prop name="runtimes" defaultValue="html5,flash,silverlight,gears,browserplus,html4" visible="false"/> |
| | | <Prop name="selectionMode" defaultValue="singleFile" enumValues="singleFile,multiFiles"/> |
| | | <Prop name="url" defaultValue=">dorado/uploader/fileupload" visible="false"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeExecute" parameters="self,arg" deprecated="true"/> |
| | | <ClientEvent name="onStateChanged" parameters="self,arg"/> |
| | | <ClientEvent name="onError" parameters="self,arg"/> |
| | | <ClientEvent name="onRefresh" parameters="self,arg"/> |
| | | <ClientEvent name="onExecute" parameters="self,arg" deprecated="true"/> |
| | | <ClientEvent name="onChunkUploaded" parameters="self,arg"/> |
| | | <ClientEvent name="onFailure" parameters="self,arg" deprecated="true"/> |
| | | <ClientEvent name="beforeInit" parameters="self,arg"/> |
| | | <ClientEvent name="onFilesAdded" parameters="self,arg"/> |
| | | <ClientEvent name="onFilesRemoved" parameters="self,arg"/> |
| | | <ClientEvent name="onQueueChanged" parameters="self,arg"/> |
| | | <ClientEvent name="beforeFileUpload" parameters="self,arg"/> |
| | | <ClientEvent name="onInit" parameters="self,arg"/> |
| | | <ClientEvent name="beforeFileUploaded" parameters="self,arg"/> |
| | | <ClientEvent name="onUploadProgress" parameters="self,arg"/> |
| | | <ClientEvent name="onFileUploaded" parameters="self,arg"/> |
| | | <ClientEvent name="onUploadComplete" parameters="self,arg"/> |
| | | <ClientEvent name="onSuccess" parameters="self,arg" deprecated="true"/></ClientEvents><Children><Child name="Filters" fixed="true"><Rule name="Wrapper.Filters" label="Filters" nodeName="Filters"><Children><Child rule="Filter" name="Filters" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="DownloadAction" parents="FormSubmitAction" label="DownloadAction" type="com.bstek.dorado.uploader.widget.DownloadAction" sortFactor="2076" category="Action" icon="/com/bstek/dorado/uploader/widget/DownloadAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="action" defaultValue=">dorado/uploader/filedownload" visible="false"/> |
| | | <Prop name="fileProvider" highlight="1"/> |
| | | <Prop name="inlineMode" defaultValue="off" enumValues="none,off,browser"/></Props></Rule><Rule name="Intro" parents="Component" label="Intro" type="com.bstek.dorado.intro.Intro" sortFactor="2077" category="Advance" icon="/com/bstek/dorado/intro/Intro.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="doneLabel"/> |
| | | <Prop name="exitOnEsc" defaultValue="true" type="boolean"/> |
| | | <Prop name="exitOnOverlayClick" defaultValue="true" type="boolean"/> |
| | | <Prop name="name"/> |
| | | <Prop name="nextLabel"/> |
| | | <Prop name="prevLabel"/> |
| | | <Prop name="showNextButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showPrevButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showSkipButton" defaultValue="true" type="boolean"/> |
| | | <Prop name="showStepNumbers" defaultValue="true" type="boolean"/> |
| | | <Prop name="skipLabel"/> |
| | | <Prop name="tooltipClass"/> |
| | | <Prop name="tooltipPosition" highlight="1" enumValues="left,top,right,bottom" deprecated="true"/></Props><ClientEvents> |
| | | <ClientEvent name="onStart" parameters="self,arg"/> |
| | | <ClientEvent name="onChange" parameters="self,arg"/> |
| | | <ClientEvent name="onExit" parameters="self,arg"/> |
| | | <ClientEvent name="onBeforeStart" parameters="self,arg"/> |
| | | <ClientEvent name="onComplete" parameters="self,arg"/> |
| | | <ClientEvent name="onBeforeChange" parameters="self,arg"/></ClientEvents><Children><Child rule="Step" name="Step" aggregated="true"></Child><Child rule="Step" name="Steps" aggregated="true"></Child></Children></Rule><Rule name="Step" label="Step" type="com.bstek.dorado.intro.Step" sortFactor="2078" icon="/com/bstek/dorado/intro/Step.png" clientTypes="desktop,touch"><Props> |
| | | <Prop name="arrowAlign" enumValues="left,top,center,right,bottom"/> |
| | | <Prop name="arrowDirection" enumValues="left,top,right,bottom"/> |
| | | <Prop name="element" highlight="1"/> |
| | | <Prop name="ignored" type="boolean"/> |
| | | <Prop name="intro" editor="multiLines"/> |
| | | <Prop name="name"/> |
| | | <Prop name="position" enumValues="left,top,right,bottom" deprecated="true"/> |
| | | <Prop name="tags"/><Prop name="tooltipPosition" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="userData" type="java.lang.Object"/></Props></Rule><Rule name="SwfViewer" parents="com.bstek.dorado.view.widget.Control" label="SwfViewer" type="com.bstek.bdf2.swfviewer.widget.SwfViewer" sortFactor="2079" category="BDF2" clientTypes="desktop"><Props> |
| | | <Prop name="attributes"/> |
| | | <Prop name="expressInstallSwfurl"/> |
| | | <Prop name="flashvars"/> |
| | | <Prop name="handlerName"/> |
| | | <Prop name="height" defaultValue="400"/> |
| | | <Prop name="parameter"/> |
| | | <Prop name="params"/> |
| | | <Prop name="printEnabled" defaultValue="true" type="boolean"/> |
| | | <Prop name="showType" defaultValue="complex" enumValues="simple,complex"/> |
| | | <Prop name="swfUrl" highlight="1"/> |
| | | <Prop name="version"/> |
| | | <Prop name="width" defaultValue="400"/></Props></Rule><Rule name="Export2ReportAction" parents="AjaxAction" label="Export2ReportAction" type="com.bstek.bdf2.export.view.Export2ReportAction" sortFactor="2080" category="BDF2" icon="/com/bstek/bdf2/export/view/Export2ReportAction.png" autoGenerateId="true" clientTypes="desktop,touch"><Props> |
| | | <Prop name="autoDownload" defaultValue="true" type="boolean"/> |
| | | <Prop name="batchable" defaultValue="true" type="boolean"/> |
| | | <Prop name="dataBgColor" defaultValue="#FFFFFF"/> |
| | | <Prop name="dataFontColor" defaultValue="#000000"/> |
| | | <Prop name="dataFontSize" defaultValue="10" type="int"/> |
| | | <Prop name="dataScope" defaultValue="currentPage" enumValues="currentPage,serverAll"/> |
| | | <Prop name="extension" defaultValue="xls" enumValues="xls,xlsx,pdf,csv"/> |
| | | <Prop name="fileName"/> |
| | | <Prop name="headerBgColor" defaultValue="#D8D8D8"/> |
| | | <Prop name="headerFontColor" defaultValue="#000000"/> |
| | | <Prop name="headerFontSize" defaultValue="10" type="int"/> |
| | | <Prop name="interceptorName"/> |
| | | <Prop name="maxSize" defaultValue="1000" type="int"/> |
| | | <Prop name="rowSpace" defaultValue="1" type="int"/> |
| | | <Prop name="showPageNumber" defaultValue="true" type="boolean"/> |
| | | <Prop name="showTitle" defaultValue="false" type="boolean"/> |
| | | <Prop name="template" highlight="1"/> |
| | | <Prop name="timeout" type="long"/> |
| | | <Prop name="titleBgColor" defaultValue="#FFFFFF"/> |
| | | <Prop name="titleFontColor" defaultValue="#000000"/> |
| | | <Prop name="titleFontSize" defaultValue="18" type="int"/> |
| | | <Prop name="titleName"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetExportElement" parameters="self,arg"/> |
| | | <ClientEvent name="onGetExportData" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractViewElement" abstract="true" type="com.bstek.dorado.view.AbstractViewElement"><PrimitiveProps> |
| | | <Prop name="id" highlight="1"/></PrimitiveProps><Props> |
| | | <Prop name="ignored" type="boolean"/><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tags"/> |
| | | <Prop name="userData" type="java.lang.Object"/></Props></Rule><Rule name="ClientEventSupportedElement" parents="AbstractViewElement" abstract="true" type="com.bstek.dorado.view.ClientEventSupportedElement"></Rule><Rule name="Component" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.Component" scope="protected"><PrimitiveProps> |
| | | <Prop name="listener"/></PrimitiveProps><Props> |
| | | <Prop name="userData" editor="any" type="java.lang.Object"/></Props><ClientEvents> |
| | | <ClientEvent name="onCreate" parameters="self,arg"/> |
| | | <ClientEvent name="onAttributeChange" parameters="self,arg"/> |
| | | <ClientEvent name="onDestroy" parameters="self,arg"/> |
| | | <ClientEvent name="onReady" parameters="self,arg"/></ClientEvents></Rule><Rule name="com.bstek.dorado.view.widget.Control" parents="Component" abstract="true" type="com.bstek.dorado.view.widget.Control" scope="protected" icon="/com/bstek/dorado/view/widget/Control.png" clientTypes="desktop"><PrimitiveProps> |
| | | <Prop name="listener"/></PrimitiveProps><Props> |
| | | <Prop name="className"/> |
| | | <Prop name="dragTags"/> |
| | | <Prop name="draggable" type="boolean"/> |
| | | <Prop name="droppable" type="boolean"/> |
| | | <Prop name="droppableTags"/> |
| | | <Prop name="exClassName"/> |
| | | <Prop name="height"/> |
| | | <Prop name="hideMode" defaultValue="visibility" enumValues="visibility,display"/> |
| | | <Prop name="layoutConstraint" type="java.lang.Object"/> |
| | | <Prop name="lazyInit" type="java.lang.Boolean"/> |
| | | <Prop name="renderOn"/> |
| | | <Prop name="renderTo"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tip"/> |
| | | <Prop name="ui" defaultValue="default"/> |
| | | <Prop name="visible" type="java.lang.Boolean"/> |
| | | <Prop name="width"/></Props><ClientEvents> |
| | | <ClientEvent name="onKeyDown" parameters="self,arg"/> |
| | | <ClientEvent name="onClick" parameters="self,arg" clientTypes="desktop"/> |
| | | <ClientEvent name="onKeyPress" parameters="self,arg"/> |
| | | <ClientEvent name="beforeRefreshDom" parameters="self,arg"/> |
| | | <ClientEvent name="onRefreshDom" parameters="self,arg"/> |
| | | <ClientEvent name="onDragMove" parameters="self,arg"/> |
| | | <ClientEvent name="onSwipe" parameters="self,arg" clientTypes="touch"/> |
| | | <ClientEvent name="onDoubleClick" parameters="self,arg" clientTypes="desktop"/> |
| | | <ClientEvent name="onDraggingSourceOver" parameters="self,arg"/> |
| | | <ClientEvent name="onTap" parameters="self,arg" clientTypes="touch"/> |
| | | <ClientEvent name="onGetDraggingIndicator" parameters="self,arg"/> |
| | | <ClientEvent name="onDraggingSourceMove" parameters="self,arg"/> |
| | | <ClientEvent name="onCreateDom" parameters="self,arg"/> |
| | | <ClientEvent name="onDraggingSourceOut" parameters="self,arg"/> |
| | | <ClientEvent name="onDragStart" parameters="self,arg"/> |
| | | <ClientEvent name="onMouseDown" parameters="self,arg"/> |
| | | <ClientEvent name="onContextMenu" parameters="self,arg"/> |
| | | <ClientEvent name="beforeDraggingSourceDrop" parameters="self,arg"/> |
| | | <ClientEvent name="onTapHold" parameters="self,arg" clientTypes="touch"/> |
| | | <ClientEvent name="onDraggingSourceDrop" parameters="self,arg"/> |
| | | <ClientEvent name="onFocus" parameters="self,arg"/> |
| | | <ClientEvent name="onDoubleTap" parameters="self,arg" clientTypes="touch"/> |
| | | <ClientEvent name="onBlur" parameters="self,arg"/> |
| | | <ClientEvent name="onResize" parameters="self,arg"/> |
| | | <ClientEvent name="onDragStop" parameters="self,arg"/> |
| | | <ClientEvent name="onMouseUp" parameters="self,arg"/></ClientEvents></Rule><Rule name="AsyncAction" parents="Action" abstract="true" type="com.bstek.dorado.view.widget.action.AsyncAction" scope="protected"><Props> |
| | | <Prop name="async" defaultValue="true" type="boolean"/> |
| | | <Prop name="executingMessage"/> |
| | | <Prop name="modal" defaultValue="true" type="boolean"/></Props></Rule><Rule name="UpdateItem" label="UpdateItem" type="com.bstek.dorado.view.widget.action.UpdateItem" icon="/com/bstek/dorado/view/widget/action/UpdateItem.png"><Props> |
| | | <Prop name="alias"/> |
| | | <Prop name="autoResetEntityState" defaultValue="true" type="boolean"/> |
| | | <Prop name="dataPath" defaultValue="!DIRTY_TREE" enumValues="!DIRTY_TREE,!CASCADE_DIRTY,[#dirty],[#all],[#visible],[#current]"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="firstResultOnly" type="boolean"/> |
| | | <Prop name="refreshMode" defaultValue="value" enumValues="none,state,value,cascade"/> |
| | | <Prop name="submitDeletedEntity" type="java.lang.Boolean"/> |
| | | <Prop name="submitOldData" type="boolean"/> |
| | | <Prop name="submitSimplePropertyOnly" type="boolean"/> |
| | | <Prop name="validateData" defaultValue="true" type="boolean"/></Props></Rule><Rule name="AbstractButton" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.base.AbstractButton" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="action" highlight="1" reference="Action:id"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="menu" reference="Menu:id"/> |
| | | <Prop name="toggleOnShowMenu" defaultValue="true" type="boolean"/> |
| | | <Prop name="toggleable" type="boolean"/> |
| | | <Prop name="toggled" type="boolean"/></Props></Rule><Rule name="AbstractPanel" parents="Container" abstract="true" type="com.bstek.dorado.view.widget.base.AbstractPanel" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="buttonAlign" defaultValue="center" enumValues="left,center,right"/> |
| | | <Prop name="caption"/> |
| | | <Prop name="collapseable" defaultValue="true" type="boolean"/> |
| | | <Prop name="collapsed" defaultValue="false" type="boolean"/> |
| | | <Prop name="lazyInitChildren" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onCollapsedChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCollapsedChange" parameters="self,arg"/></ClientEvents><Children><Child name="Buttons" fixed="true"><Rule name="Wrapper.Buttons" label="Buttons" nodeName="Buttons" icon="/com/bstek/dorado/view/widget/base/Buttons.png"><Children><Child rule="Button" name="Buttons" aggregated="true"></Child></Children></Rule></Child><Child name="Children" fixed="true"><Rule name="Wrapper.Children" label="Children" nodeName="Children" icon="/com/bstek/dorado/view/widget/base/Children.png"><Children><Child rule="Component" name="Children" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="IFrameTab" parents="Tab" label="IFrameTab" type="com.bstek.dorado.view.widget.base.tab.IFrameTab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/IFrameTab.png"><Props> |
| | | <Prop name="iframeHeight" type="java.lang.Integer"/> |
| | | <Prop name="path" highlight="1"/></Props></Rule><Rule name="Tab" parents="ClientEventSupportedElement" label="Tab" type="com.bstek.dorado.view.widget.base.tab.Tab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/Tab.png"><Props> |
| | | <Prop name="caption" highlight="1"/> |
| | | <Prop name="className"/> |
| | | <Prop name="closeable" type="boolean"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="exClassName" deprecated="true"/> |
| | | <Prop name="height"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tip"/> |
| | | <Prop name="visible" defaultValue="true" type="boolean"/> |
| | | <Prop name="width"/></Props><ClientEvents> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onClick" parameters="self,arg"/> |
| | | <ClientEvent name="beforeClose" parameters="self,arg"/></ClientEvents></Rule><Rule name="ControlTab" parents="Tab" label="ControlTab" type="com.bstek.dorado.view.widget.base.tab.ControlTab" scope="protected" icon="/com/bstek/dorado/view/widget/base/tab/ControlTab.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="AbstractTabControl" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.base.tab.AbstractTabControl" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="alwaysShowNavButtons" type="boolean"/> |
| | | <Prop name="currentTab" type="int"/></Props><ClientEvents> |
| | | <ClientEvent name="onTabContextMenu" parameters="self,arg"/> |
| | | <ClientEvent name="onTabChange" parameters="self,arg"/> |
| | | <ClientEvent name="onTabRemove" parameters="self,arg"/> |
| | | <ClientEvent name="beforeTabChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="MenuButton" parents="Button" label="MenuButton" nodeName="MenuButton" type="com.bstek.dorado.view.widget.base.toolbar.MenuButton" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/MenuButton.png" clientTypes="desktop"><Props> |
| | | <Prop name="hideMenuOnMouseLeave" type="boolean"/> |
| | | <Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> |
| | | <Prop name="menu" deprecated="true" visible="false"/> |
| | | <Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="BaseMenuItem" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.base.menu.BaseMenuItem"><Props> |
| | | <Prop name="className"/> |
| | | <Prop name="exClassName"/> |
| | | <Prop name="height"/> |
| | | <Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tip"/> |
| | | <Prop name="visible" defaultValue="true" type="boolean"/> |
| | | <Prop name="width"/></Props></Rule><Rule name="MenuItem" parents="TextMenuItem" label="MenuItem" type="com.bstek.dorado.view.widget.base.menu.MenuItem" icon="/com/bstek/dorado/view/widget/base/menu/MenuItem.png" clientTypes="desktop"><Children><Child rule="BaseMenuItem" name="Items" aggregated="true"></Child></Children></Rule><Rule name="TextMenuItem" parents="BaseMenuItem" abstract="true" type="com.bstek.dorado.view.widget.base.menu.TextMenuItem"><Props> |
| | | <Prop name="action" reference="Action:id"/> |
| | | <Prop name="caption"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="hideOnClick" defaultValue="true" type="boolean"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/></Props><ClientEvents> |
| | | <ClientEvent name="onClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="Separator" parents="BaseMenuItem" label="Separator" type="com.bstek.dorado.view.widget.base.menu.Separator" icon="/com/bstek/dorado/view/widget/base/menu/Separator.png" clientTypes="desktop,touch"></Rule><Rule name="CheckableMenuItem" parents="MenuItem" label="CheckableMenuItem" type="com.bstek.dorado.view.widget.base.menu.CheckableMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/CheckableMenuItem.png" clientTypes="desktop"><Props> |
| | | <Prop name="checked" type="boolean"/> |
| | | <Prop name="group"/></Props><ClientEvents> |
| | | <ClientEvent name="onCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="ControlMenuItem" parents="TextMenuItem" label="ControlMenuItem" type="com.bstek.dorado.view.widget.base.menu.ControlMenuItem" icon="/com/bstek/dorado/view/widget/base/menu/ControlMenuItem.png" clientTypes="desktop"><Children><Child rule="FloatControl" name="Control"></Child></Children></Rule><Rule name="FloatControl" abstract="true" type="com.bstek.dorado.view.widget.FloatControl"><Props> |
| | | <Prop name="align" enumValues="left,innerleft,center,innerright,top" visible="false"/> |
| | | <Prop name="anchorTarget" visible="false"/> |
| | | <Prop name="animateTarget" visible="false"/> |
| | | <Prop name="animateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="autoAdjustPosition" type="boolean"/> |
| | | <Prop name="center" type="boolean"/> |
| | | <Prop name="continuedFocus" type="boolean"/> |
| | | <Prop name="floating" type="boolean"/> |
| | | <Prop name="floatingClassName"/> |
| | | <Prop name="focusAfterShow" type="boolean"/> |
| | | <Prop name="handleOverflow" visible="false" type="boolean"/> |
| | | <Prop name="hideAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="left" type="int"/> |
| | | <Prop name="modal" type="boolean"/> |
| | | <Prop name="modalType" enumValues="dark,transparent"/> |
| | | <Prop name="offsetLeft" type="int"/> |
| | | <Prop name="offsetTop" type="int"/> |
| | | <Prop name="shadowMode" enumValues="drop,sides,frame,none"/> |
| | | <Prop name="showAnimateType" enumValues="zoom,modernZoom,flip,slide,safeSlide,modernSlide,fade,none"/> |
| | | <Prop name="top" type="int"/> |
| | | <Prop name="vAlign" enumValues="top,innertop,center,innerbottom,bottom" visible="false"/></Props></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Label" parents="com.bstek.dorado.view.widget.Control" label="Label" nodeName="ToolBarLabel" type="com.bstek.dorado.view.widget.base.toolbar.Label" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Label.png" clientTypes="desktop"><Props> |
| | | <Prop name="text"/></Props></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Separator" parents="com.bstek.dorado.view.widget.Control" label="Separator" type="com.bstek.dorado.view.widget.base.toolbar.Separator" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Separator.png" clientTypes="desktop"></Rule><Rule name="com.bstek.dorado.view.widget.base.toolbar.Button" parents="Button" label="ToolBarButton" nodeName="ToolBarButton" type="com.bstek.dorado.view.widget.base.toolbar.Button" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Button.png" clientTypes="desktop"><Props> |
| | | <Prop name="hideMenuOnMouseLeave" type="boolean"/> |
| | | <Prop name="hideMenuOnMouseLeaveDelay" defaultValue="300" type="int"/> |
| | | <Prop name="showMenuOnHover" defaultValue="false" type="boolean"/></Props></Rule><Rule name="Fill" parents="com.bstek.dorado.view.widget.Control" label="Fill" type="com.bstek.dorado.view.widget.base.toolbar.Fill" scope="protected" category="ToolBar" icon="/com/bstek/dorado/view/widget/base/toolbar/Fill.png" clientTypes="desktop"></Rule><Rule name="Section" parents="ClientEventSupportedElement" label="Section" type="com.bstek.dorado.view.widget.base.accordion.Section" icon="/com/bstek/dorado/view/widget/base/accordion/Section.png"><Props> |
| | | <Prop name="caption"/> |
| | | <Prop name="className"/> |
| | | <Prop name="disabled" type="boolean"/> |
| | | <Prop name="exClassName"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="name"/><Prop name="style" type="java.util.Map" compositeType="Open"></Prop> |
| | | <Prop name="tip"/> |
| | | <Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onCaptionClick" parameters="self,arg"/></ClientEvents><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Control"></Child></Children></Rule><Rule name="AbstractDataControl" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.datacontrol.AbstractDataControl" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractPropertyDataControl" parents="AbstractDataControl" abstract="true" type="com.bstek.dorado.view.widget.datacontrol.AbstractPropertyDataControl" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="property" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractEditor" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractEditor" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="supportsDirtyFlag" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onPost" parameters="self,arg"/> |
| | | <ClientEvent name="beforePost" parameters="self,arg"/> |
| | | <ClientEvent name="onPostFailed" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractDataEditor" parents="AbstractEditor" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractDataEditor" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="dataPath" highlight="1"/> |
| | | <Prop name="dataSet" highlight="1" reference="DataSet:id"/> |
| | | <Prop name="property" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetBindingData" parameters="self,arg"/> |
| | | <ClientEvent name="onGetBindingDataType" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractTextBox" parents="AbstractDataEditor" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractTextBox" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="text"/> |
| | | <Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/></Props><ClientEvents> |
| | | <ClientEvent name="onValidationStateChange" parameters="self,arg"/> |
| | | <ClientEvent name="onTriggerClick" parameters="self,arg"/> |
| | | <ClientEvent name="onTextEdit" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractTextEditor" parents="AbstractTextBox" abstract="true" type="com.bstek.dorado.view.widget.form.AbstractTextEditor" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="blankText"/> |
| | | <Prop name="editable" defaultValue="true" type="boolean"/> |
| | | <Prop name="maxLength" type="int"/> |
| | | <Prop name="minLength" type="int"/> |
| | | <Prop name="required" type="boolean"/> |
| | | <Prop name="selectTextOnFocus" defaultValue="true" type="boolean"/></Props></Rule><Rule name="RadioButton" label="RadioButton" type="com.bstek.dorado.view.widget.form.RadioButton" icon="/com/bstek/dorado/view/widget/form/RadioButton.png"><Props> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="text"/> |
| | | <Prop name="value" type="java.lang.Object"/></Props></Rule><Rule name="AutoFormElement" parents="FormElement" label="AutoFormElement" type="com.bstek.dorado.view.widget.form.autoform.AutoFormElement" scope="protected" category="AutoForm" icon="/com/bstek/dorado/view/widget/form/autoform/AutoFormElement.png" labelProperty="id,name,property" clientTypes="desktop,touch"><Props> |
| | | <Prop name="name"/></Props></Rule><Rule name="Spinner" parents="AbstractTextBox" abstract="true" type="com.bstek.dorado.view.widget.form.Spinner" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="postValueOnSpin" defaultValue="true" type="boolean"/> |
| | | <Prop name="showSpinTrigger" defaultValue="true" type="boolean"/> |
| | | <Prop name="step" defaultValue="1" type="int"/></Props></Rule><Rule name="DropDown" parents="Trigger" abstract="true" type="com.bstek.dorado.view.widget.form.trigger.DropDown" scope="protected"><Props> |
| | | <Prop name="assignmentMap"/> |
| | | <Prop name="autoOpen" type="boolean"/> |
| | | <Prop name="height" type="int"/> |
| | | <Prop name="maxHeight" type="int"/> |
| | | <Prop name="maxWidth" type="int"/> |
| | | <Prop name="minHeight" type="int"/> |
| | | <Prop name="minWidth" type="int"/> |
| | | <Prop name="postValueOnSelect" defaultValue="true" type="boolean"/> |
| | | <Prop name="width" type="int"/></Props><ClientEvents> |
| | | <ClientEvent name="onValueSelect" parameters="self,arg"/> |
| | | <ClientEvent name="onClose" parameters="self,arg"/> |
| | | <ClientEvent name="onOpen" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowListDropDown" parents="DropDown" abstract="true" type="com.bstek.dorado.view.widget.form.trigger.RowListDropDown" scope="protected"><Props> |
| | | <Prop name="displayProperty"/> |
| | | <Prop name="dynaFilter" type="boolean"/> |
| | | <Prop name="filterOnOpen" type="boolean"/> |
| | | <Prop name="filterOnTyping" defaultValue="true" type="boolean"/> |
| | | <Prop name="minFilterInterval" defaultValue="300" type="int"/> |
| | | <Prop name="property" highlight="1"/> |
| | | <Prop name="useEmptyItem" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onFilterItems" parameters="self,arg"/> |
| | | <ClientEvent name="onFilterItem" parameters="self,arg"/></ClientEvents><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="Column" parents="ClientEventSupportedElement" abstract="true" type="com.bstek.dorado.view.widget.grid.Column"><Props> |
| | | <Prop name="align" enumValues="left,center,right"/> |
| | | <Prop name="caption"/> |
| | | <Prop name="headerAlign" defaultValue="center" enumValues="left,center,right"/> |
| | | <Prop name="headerRenderer"/> |
| | | <Prop name="name"/> |
| | | <Prop name="supportsOptionMenu" defaultValue="true" type="boolean"/> |
| | | <Prop name="visible" defaultValue="true" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onGetCellEditor" parameters="self,arg"/> |
| | | <ClientEvent name="onHeaderClick" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowSelectorColumn" parents="AbstractDataColumn" label="RowSelectorColumn" type="com.bstek.dorado.view.widget.grid.RowSelectorColumn" icon="/com/bstek/dorado/view/widget/grid/RowSelectorColumn.png"></Rule><Rule name="AbstractDataColumn" parents="Column" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractDataColumn"><Props> |
| | | <Prop name="filterBarRenderer"/> |
| | | <Prop name="footerRenderer"/> |
| | | <Prop name="renderer"/> |
| | | <Prop name="resizeable" defaultValue="true" type="boolean"/> |
| | | <Prop name="width"/></Props><ClientEvents> |
| | | <ClientEvent name="onRenderFooterCell" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderCell" parameters="self,arg"/></ClientEvents></Rule><Rule name="IndicatorColumn" parents="AbstractDataColumn" label="IndicatorColumn" type="com.bstek.dorado.view.widget.grid.IndicatorColumn" icon="/com/bstek/dorado/view/widget/grid/IndicatorColumn.png"></Rule><Rule name="RowNumColumn" parents="AbstractDataColumn" label="RowNumColumn" type="com.bstek.dorado.view.widget.grid.RowNumColumn" icon="/com/bstek/dorado/view/widget/grid/RowNumColumn.png"></Rule><Rule name="DataColumn" parents="AbstractDataColumn" label="DataColumn" type="com.bstek.dorado.view.widget.grid.DataColumn" icon="/com/bstek/dorado/view/widget/grid/DataColumn.png" labelProperty="name,property"><Props> |
| | | <Prop name="align" enumValues="left,center,right"/> |
| | | <Prop name="dataType" type="com.bstek.dorado.data.type.DataType"/> |
| | | <Prop name="defaultFilterOperator"/> |
| | | <Prop name="displayFormat"/> |
| | | <Prop name="editable" defaultValue="true" type="boolean"/> |
| | | <Prop name="editorType" defaultValue="TextEditor" highlight="1" enumValues="None,TextEditor,PasswordEditor,TextArea,CheckBox,RadioGroup,NumberSpinner"/> |
| | | <Prop name="filterable" defaultValue="true" type="boolean"/> |
| | | <Prop name="property" highlight="1"/> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="required" type="boolean"/> |
| | | <Prop name="sortState" defaultValue="none" enumValues="none,asc,desc"/> |
| | | <Prop name="summaryType" enumValues="sum,average,count,max,min"/> |
| | | <Prop name="trigger" enumValues="triggerClear,autoMappingDropDown1,autoMappingDropDown2,autoOpenMappingDropDown1,autoOpenMappingDropDown2,defaultDateDropDown,defaultDateTimeDropDown,defaultYearMonthDropDown,defaultYearDropDown,defaultMonthDropDown" reference="Trigger:id"/> |
| | | <Prop name="typeFormat"/> |
| | | <Prop name="wrappable" type="boolean"/></Props><Children><Child name="Editor" fixed="true"><Rule name="Wrapper.Editor" label="Editor" nodeName="Editor" icon="/com/bstek/dorado/view/widget/grid/Editor.png"><Children><Child rule="com.bstek.dorado.view.widget.Control" name="Editor"></Child></Children></Rule></Child></Children></Rule><Rule name="ColumnGroup" parents="Column" label="ColumnGroup" type="com.bstek.dorado.view.widget.grid.ColumnGroup" icon="/com/bstek/dorado/view/widget/grid/ColumnGroup.png"><Props> |
| | | <Prop name="align" enumValues="left,center,right" visible="false"/></Props><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="AbstractList" parents="com.bstek.dorado.view.widget.Control" abstract="true" type="com.bstek.dorado.view.widget.list.AbstractList" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="allowNoCurrent" type="boolean"/> |
| | | <Prop name="dragMode" defaultValue="item" enumValues="item,control,itemOrControl"/> |
| | | <Prop name="dropMode" defaultValue="insertItems" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> |
| | | <Prop name="scrollMode" defaultValue="lazyRender" enumValues="simple,lazyRender,viewport"/> |
| | | <Prop name="selectionMode" defaultValue="none" enumValues="none,singleRow,multiRows"/> |
| | | <Prop name="useNativeScrollbars" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onCompareItems" parameters="self,arg"/> |
| | | <ClientEvent name="onCurrentChange" parameters="self,arg"/> |
| | | <ClientEvent name="onFilterItem" parameters="self,arg"/> |
| | | <ClientEvent name="onSelectionChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeSelectionChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="RowList" parents="AbstractList" abstract="true" type="com.bstek.dorado.view.widget.list.RowList" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="highlightCurrentRow" defaultValue="true" type="boolean"/> |
| | | <Prop name="highlightHoverRow" defaultValue="true" type="boolean"/> |
| | | <Prop name="highlightSelectedRow" defaultValue="true" type="boolean"/> |
| | | <Prop name="rowHeight" type="int"/></Props><ClientEvents> |
| | | <ClientEvent name="onDataRowClick" parameters="self,arg"/> |
| | | <ClientEvent name="onDataRowDoubleClick" parameters="self,arg"/></ClientEvents></Rule><Rule name="AbstractListBox" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.list.AbstractListBox" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="property"/> |
| | | <Prop name="renderer"/></Props><ClientEvents> |
| | | <ClientEvent name="onRenderRow" parameters="self,arg"/></ClientEvents></Rule><Rule name="GridSupport" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.grid.GridSupport" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="cellRenderer"/> |
| | | <Prop name="dynaRowHeight" type="boolean"/> |
| | | <Prop name="fixedColumnCount" type="int"/> |
| | | <Prop name="footerRenderer"/> |
| | | <Prop name="footerRowHeight" type="int"/> |
| | | <Prop name="headerRenderer"/> |
| | | <Prop name="headerRowHeight" type="int"/> |
| | | <Prop name="readOnly" type="boolean"/> |
| | | <Prop name="rowRenderer"/> |
| | | <Prop name="showFooter" type="boolean"/> |
| | | <Prop name="showHeader" defaultValue="true" type="boolean"/> |
| | | <Prop name="stretchColumnsMode" defaultValue="auto" enumValues="auto,off,stretchableColumns,lastColumn,allColumns,allResizeableColumns"/></Props><ClientEvents> |
| | | <ClientEvent name="beforeCellValueEdit" parameters="self,arg"/> |
| | | <ClientEvent name="onGetCellEditor" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderRow" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderFooterCell" parameters="self,arg"/> |
| | | <ClientEvent name="onCellValueEdit" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderCell" parameters="self,arg"/> |
| | | <ClientEvent name="onHeaderClick" parameters="self,arg"/> |
| | | <ClientEvent name="onRenderHeaderCell" parameters="self,arg"/></ClientEvents><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule><Rule name="AbstractGrid" parents="GridSupport" abstract="true" type="com.bstek.dorado.view.widget.grid.AbstractGrid" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="filterBarRenderer"/> |
| | | <Prop name="groupFooterRenderer"/> |
| | | <Prop name="groupHeaderRenderer"/> |
| | | <Prop name="groupOnSort" defaultValue="true" type="boolean"/> |
| | | <Prop name="groupProperty"/> |
| | | <Prop name="showFilterBar" type="boolean"/> |
| | | <Prop name="showGroupFooter" type="boolean"/></Props></Rule><Rule name="AbstractTree" parents="RowList" abstract="true" type="com.bstek.dorado.view.widget.tree.AbstractTree" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="defaultExpandedIcon"/> |
| | | <Prop name="defaultExpandedIconClass"/> |
| | | <Prop name="defaultIcon"/> |
| | | <Prop name="defaultIconClass"/> |
| | | <Prop name="dropMode" defaultValue="onItem" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> |
| | | <Prop name="expandingAnimated" defaultValue="true" type="boolean"/> |
| | | <Prop name="expandingMode" defaultValue="async" enumValues="async,sync"/> |
| | | <Prop name="indent" type="int"/> |
| | | <Prop name="renderer"/> |
| | | <Prop name="scrollMode" enumValues="simple,lazyRender,viewport"/> |
| | | <Prop name="showLines" type="boolean"/></Props><ClientEvents> |
| | | <ClientEvent name="onRenderNode" parameters="self,arg"/> |
| | | <ClientEvent name="onCollapse" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeAttached" parameters="self,arg"/> |
| | | <ClientEvent name="beforeNodeCheckedChange" parameters="self,arg"/> |
| | | <ClientEvent name="onExpand" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCollapse" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCurrentChange" parameters="self,arg"/> |
| | | <ClientEvent name="beforeExpand" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeDetached" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeCheckedChange" parameters="self,arg"/></ClientEvents></Rule><Rule name="BaseNode" abstract="true" type="com.bstek.dorado.view.widget.tree.BaseNode"><Props> |
| | | <Prop name="autoCheckChildren" defaultValue="true" type="boolean"/> |
| | | <Prop name="checkable" type="boolean"/> |
| | | <Prop name="checked" type="boolean"/> |
| | | <Prop name="data" type="java.lang.Object"/> |
| | | <Prop name="expanded" type="boolean"/> |
| | | <Prop name="expandedIcon"/> |
| | | <Prop name="expandedIconClass"/> |
| | | <Prop name="hasChild" type="boolean"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="ignored" type="boolean"/> |
| | | <Prop name="label"/> |
| | | <Prop name="tags"/> |
| | | <Prop name="tip"/> |
| | | <Prop name="userData" type="java.lang.Object"/></Props><Children><Child rule="BaseNode" name="Nodes" aggregated="true"></Child></Children></Rule><Rule name="Node" parents="BaseNode" label="Node" type="com.bstek.dorado.view.widget.tree.Node" icon="/com/bstek/dorado/view/widget/tree/Node.png"><PrimitiveProps> |
| | | <Prop name="id" highlight="1"/></PrimitiveProps><Props><Prop name="metaData" type="java.util.Map" compositeType="Open"></Prop></Props></Rule><Rule name="BindingConfig" label="BindingConfig" type="com.bstek.dorado.view.widget.tree.BindingConfig" icon="/com/bstek/dorado/view/widget/tree/BindingConfig.png"><Props> |
| | | <Prop name="autoCheckChildren" defaultValue="true" type="boolean"/> |
| | | <Prop name="checkable" type="boolean"/> |
| | | <Prop name="checkedProperty"/> |
| | | <Prop name="childrenProperty"/> |
| | | <Prop name="expandLevel" type="int"/> |
| | | <Prop name="expandedIcon"/> |
| | | <Prop name="expandedIconClass"/> |
| | | <Prop name="expandedIconProperty"/> |
| | | <Prop name="hasChild" type="java.lang.Boolean"/> |
| | | <Prop name="hasChildProperty"/> |
| | | <Prop name="icon"/> |
| | | <Prop name="iconClass"/> |
| | | <Prop name="iconProperty"/> |
| | | <Prop name="ignored" type="boolean"/> |
| | | <Prop name="labelProperty"/> |
| | | <Prop name="name"/> |
| | | <Prop name="recursive" type="boolean"/> |
| | | <Prop name="tags"/> |
| | | <Prop name="tipProperty"/></Props><Children><Child rule="BindingConfig" name="ChildBindingConfigs" aggregated="true"></Child></Children></Rule><Rule name="AbstractBlockView" parents="AbstractList" abstract="true" type="com.bstek.dorado.view.widget.blockview.AbstractBlockView" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="blockDecoratorSize" defaultValue="4" type="int"/> |
| | | <Prop name="blockHeight" defaultValue="80" type="int"/> |
| | | <Prop name="blockLayout" defaultValue="vertical" enumValues="vertical,horizontal"/> |
| | | <Prop name="blockWidth" defaultValue="80" type="int"/> |
| | | <Prop name="fillLine" type="boolean"/> |
| | | <Prop name="horiPadding" defaultValue="8" type="int"/> |
| | | <Prop name="horiSpacing" defaultValue="8" type="int"/> |
| | | <Prop name="lineSize" type="int"/> |
| | | <Prop name="renderer"/> |
| | | <Prop name="vertPadding" defaultValue="8" type="int"/> |
| | | <Prop name="vertSpacing" defaultValue="8" type="int"/></Props><ClientEvents> |
| | | <ClientEvent name="onBlockClick" parameters="self,arg" clientTypes="desktop"/> |
| | | <ClientEvent name="onBlockDoubleClick" parameters="self,arg" clientTypes="desktop"/> |
| | | <ClientEvent name="onRenderBlock" parameters="self,arg"/> |
| | | <ClientEvent name="onBlockTap" parameters="self,arg" clientTypes="touch"/> |
| | | <ClientEvent name="onBlockMouseDown" parameters="self,arg"/> |
| | | <ClientEvent name="onBlockMouseUp" parameters="self,arg"/> |
| | | <ClientEvent name="onBlockTapHold" parameters="self,arg" clientTypes="touch"/></ClientEvents></Rule><Rule name="AbstractTreeGrid" parents="GridSupport" abstract="true" type="com.bstek.dorado.view.widget.treegrid.AbstractTreeGrid" scope="protected" clientTypes="desktop"><Props> |
| | | <Prop name="defaultExpandedIcon"/> |
| | | <Prop name="defaultExpandedIconClass"/> |
| | | <Prop name="defaultIcon"/> |
| | | <Prop name="defaultIconClass"/> |
| | | <Prop name="dropMode" defaultValue="onItem" enumValues="onControl,onItem,insertItems,onOrInsertItems,onAnyWhere"/> |
| | | <Prop name="expandingAnimated" defaultValue="true" type="boolean"/> |
| | | <Prop name="expandingMode" defaultValue="async" enumValues="async,sync"/> |
| | | <Prop name="indent" type="int"/> |
| | | <Prop name="showLines" type="boolean"/> |
| | | <Prop name="treeColumn" highlight="1"/></Props><ClientEvents> |
| | | <ClientEvent name="onRenderNode" parameters="self,arg"/> |
| | | <ClientEvent name="onCollapse" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeAttached" parameters="self,arg"/> |
| | | <ClientEvent name="beforeNodeCheckedChange" parameters="self,arg"/> |
| | | <ClientEvent name="onExpand" parameters="self,arg"/> |
| | | <ClientEvent name="beforeCollapse" parameters="self,arg"/> |
| | | <ClientEvent name="beforeExpand" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeDetached" parameters="self,arg"/> |
| | | <ClientEvent name="onNodeCheckedChange" parameters="self,arg"/></ClientEvents><Children><Child name="Columns" fixed="true"><Rule name="Wrapper.Columns" label="Columns" nodeName="Columns" icon="/com/bstek/dorado/view/widget/treegrid/Columns.png"><Children><Child rule="Column" name="Columns" aggregated="true"></Child></Children></Rule></Child></Children></Rule><Rule name="Filter" label="Filter" type="com.bstek.dorado.uploader.widget.Filter" labelProperty="title"><Props> |
| | | <Prop name="extensions"/> |
| | | <Prop name="title"/></Props></Rule><Rule name="DefaultView" parents="View" label="View" nodeName="View" type="com.bstek.dorado.view.DefaultView" category="General" icon="/com/bstek/dorado/view/DefaultView.png" clientTypes="desktop"></Rule></RuleSet> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.models; |
| | | |
| | | import com.bstek.dorado.annotation.PropertyDef; |
| | | import lombok.Data; |
| | | |
| | | import javax.persistence.Column; |
| | | import javax.persistence.Entity; |
| | | import javax.persistence.Id; |
| | | import javax.persistence.Table; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * ä»å
è§é¢ææé
ç½® |
| | | */ |
| | | @Data |
| | | @Entity |
| | | @Table(name = "D_SEC_SNAP_CONF") |
| | | public class SecSnapConf { |
| | | @Id |
| | | @Column(name = "ID_", length = 40) |
| | | @PropertyDef(label = "主é®") |
| | | private String id; |
| | | |
| | | @Column(name = "COMPANY_ID_", length = 10) |
| | | @PropertyDef(label = "ç»ç»ç¼ç ") |
| | | private String companyId; |
| | | |
| | | @Column(name = "DEPT_ID_", length = 30) |
| | | @PropertyDef(label = "æå±ååº") |
| | | private String deptId; |
| | | |
| | | @Column(name = "DEPOT_ID_", length = 50) |
| | | @PropertyDef(label = "æå±ä»åº") |
| | | private String depotId; |
| | | |
| | | @Column(name = "CAMERA_ID_", length = 50) |
| | | @PropertyDef(label = "å
³èæå头") |
| | | private String cameraId; |
| | | |
| | | @Column(name = "ACT_HOUR1_") |
| | | @PropertyDef(label = "æ§è¡æ¶é´1") |
| | | private int actHour1; |
| | | |
| | | @Column(name = "ACT_HOUR2_") |
| | | @PropertyDef(label = "æ§è¡æ¶é´2") |
| | | private int actHour2; |
| | | |
| | | @Column(name = "ACT_HOUR3_") |
| | | @PropertyDef(label = "æ§è¡æ¶é´3") |
| | | private int actHour3; |
| | | |
| | | @Column(name = "UPDATE_TIME_") |
| | | @PropertyDef(label = "æ´æ°æ¶é´") |
| | | private Date updateTime; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.models; |
| | | |
| | | import com.alibaba.fastjson.annotation.JSONField; |
| | | import com.bstek.dorado.annotation.PropertyDef; |
| | | import lombok.Data; |
| | | |
| | | import javax.persistence.Column; |
| | | import javax.persistence.Entity; |
| | | import javax.persistence.Id; |
| | | import javax.persistence.Table; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * ä»å
è§é¢å¾åæ°æ®è¡¨ |
| | | */ |
| | | @Data |
| | | @Entity |
| | | @Table(name = "D_SEC_SNAP_DEPOT") |
| | | public class SecSnapDepot { |
| | | |
| | | @Id |
| | | @Column(name = "ID_", length = 40) |
| | | @PropertyDef(label = "主é®") |
| | | private String id; |
| | | |
| | | @Column(name = "COMPANY_ID_", length = 10) |
| | | @PropertyDef(label = "ç»ç»ç¼ç ") |
| | | private String companyId; |
| | | |
| | | @Column(name = "DEPT_ID_", length = 30) |
| | | @PropertyDef(label = "æå±ååº") |
| | | private String deptId; |
| | | |
| | | @Column(name = "DEPOT_ID_", length = 50) |
| | | @PropertyDef(label = "æå±ä»åº") |
| | | private String depotId; |
| | | |
| | | @Column(name = "CAMERA_ID_", length = 50) |
| | | @PropertyDef(label = "å
³èæå头") |
| | | private String cameraId; |
| | | |
| | | @Column(name = "RESULT_", length = 30) |
| | | @PropertyDef(label = "ææç»æ") |
| | | private String result = "SUCCESS"; |
| | | |
| | | @JSONField(format = "yyyy-MM-dd HH:mm:ss") |
| | | @Column(name = "UPDATE_TIME_") |
| | | @PropertyDef(label = "æææ¶é´") |
| | | private Date updateTime; |
| | | |
| | | @Column(name = "FILE_SUFFIX_", length = 4) |
| | | @PropertyDef(label = "å¾åæä»¶åç¼å") |
| | | private String fileSuffix = "jpg"; |
| | | |
| | | @Column(name = "FILE_NAME_", length = 100) |
| | | @PropertyDef(label = "æä»¶åç§°") |
| | | private String fileName; |
| | | |
| | | @Column(name = "PRESET_ ", length = 4) |
| | | @PropertyDef(label = "é¢ç½®ä½ç¼å·") |
| | | private String preset; |
| | | |
| | | public SecSnapDepot() { |
| | | } |
| | | |
| | | public SecSnapDepot(String id, String companyId, String deptId, String depotId, String cameraId, String result, Date updateTime, String fileSuffix, String fileName, String preset) { |
| | | this.id = id; |
| | | this.companyId = companyId; |
| | | this.deptId = deptId; |
| | | this.depotId = depotId; |
| | | this.cameraId = cameraId; |
| | | this.result = result; |
| | | this.updateTime = updateTime; |
| | | this.fileSuffix = fileSuffix; |
| | | this.fileName = fileName; |
| | | this.preset = preset; |
| | | } |
| | | |
| | | public SecSnapDepot(String tag) { |
| | | if ("TEST".equals(tag)) { |
| | | this.id = "TEST"; |
| | | this.fileName = "./static/images/img-fail.jpg"; |
| | | this.updateTime = new Date(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.sec.service; |
| | | |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.models.SecSnapConf; |
| | | import com.ld.igds.models.SecSnapDepot; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.DateUtil; |
| | | |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.hibernate.Query; |
| | | import org.hibernate.Session; |
| | | import org.springframework.stereotype.Repository; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Repository |
| | | public class SecSnapDepotService extends HibernateDao { |
| | | |
| | | |
| | | public void pageSnapDepot(Page<SecSnapDepot> page, Map<String, Object> param) throws Exception { |
| | | |
| | | String hql = " from " + SecSnapDepot.class.getName() |
| | | + " where companyId=:companyId and deptId=:deptId"; |
| | | |
| | | Map<String, Object> args = new HashMap<>(); |
| | | |
| | | args.put("companyId", param.get("companyId")); |
| | | args.put("deptId", param.get("deptId")); |
| | | |
| | | String str = (String) param.get("depotId"); |
| | | if (StringUtils.isNotEmpty(str)) { |
| | | hql += " and depotId =:depotId"; |
| | | args.put("depotId", str); |
| | | } |
| | | |
| | | Date date = (Date) param.get("start"); |
| | | if (null != date) { |
| | | hql += " and updateTime >=:start"; |
| | | args.put("start", DateUtil.getCurZero(date)); |
| | | } |
| | | date = (Date) param.get("end"); |
| | | if (null != date) { |
| | | hql += " and updateTime <:end"; |
| | | args.put("end", DateUtil.getNextZero(date)); |
| | | } |
| | | |
| | | String countHql = "select count(1) " + hql; |
| | | |
| | | hql += " order by updateTime desc"; |
| | | |
| | | this.pagingQuery(page, hql, countHql, args); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * æ ¹æ®æ¡ä»¶è·åé
ç½®ç±»å« |
| | | * |
| | | * @param companyId ç»ç»ç¼ç ï¼ä¸å¯ä¸ºç©º |
| | | * @param deptId æå±ååºï¼å¯ä¸ºç©º |
| | | * @return æ¥è¯¢ç»æ |
| | | */ |
| | | public List<SecSnapConf> listSnapConf(String companyId, String deptId) { |
| | | String hql = " from " + SecSnapConf.class.getName() |
| | | + " where companyId=:companyId"; |
| | | |
| | | Map<String, Object> args = new HashMap<>(); |
| | | args.put("companyId", companyId); |
| | | if (StringUtils.isNotEmpty(deptId)) { |
| | | hql += " and deptId =:deptId"; |
| | | args.put("deptId", deptId); |
| | | } |
| | | |
| | | return this.query(hql, args); |
| | | } |
| | | |
| | | public void addData(SecSnapConf snapConf, String fileName, String result) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | SecSnapDepot data = new SecSnapDepot(); |
| | | data.setId(ContextUtil.getUUID()); |
| | | data.setCompanyId(snapConf.getCompanyId()); |
| | | data.setDeptId(snapConf.getDeptId()); |
| | | data.setDepotId(snapConf.getDepotId()); |
| | | data.setCameraId(snapConf.getCameraId()); |
| | | data.setResult(result); |
| | | data.setUpdateTime(new Date()); |
| | | data.setFileSuffix("jpg"); |
| | | data.setFileName(fileName); |
| | | session.save(data); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void addConf(SecSnapConf conf) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | conf.setId(ContextUtil.getUUID()); |
| | | conf.setUpdateTime(new Date()); |
| | | session.save(conf); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void updateConf(SecSnapConf conf) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | conf.setUpdateTime(new Date()); |
| | | session.update(conf); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | |
| | | public void updateActHour(SecSnapConf conf) { |
| | | String hql = " update "+SecSnapConf.class.getName()+" set actHour1=:actHour1,actHour2=:actHour2,actHour3=:actHour3 where companyId=:companyId and deptId=:deptId"; |
| | | |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | Query q = session.createQuery(hql); |
| | | q.setInteger("actHour1", conf.getActHour1()); |
| | | q.setInteger("actHour2", conf.getActHour2()); |
| | | q.setInteger("actHour3", conf.getActHour3()); |
| | | q.setString("companyId", conf.getCompanyId()); |
| | | q.setString("deptId", conf.getDeptId()); |
| | | q.executeUpdate(); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ViewConfig> |
| | | <Arguments/> |
| | | <Context/> |
| | | <Model> |
| | | <DataType name="dtMain"> |
| | | <Property name="creationType">com.ld.igds.models.SecSnapDepot</Property> |
| | | <PropertyDef name="id"> |
| | | <Property></Property> |
| | | <Property name="label">主é®</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="companyId"> |
| | | <Property></Property> |
| | | <Property name="label">ç»ç»ç¼ç </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="deptId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ååº</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="depotId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ä»åº</Property> |
| | | <Property name="mapping"> |
| | | <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property> |
| | | <Property name="keyProperty">id</Property> |
| | | <Property name="valueProperty">name</Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="cameraId"> |
| | | <Property></Property> |
| | | <Property name="label">å
³èæå头</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="updateTime"> |
| | | <Property name="dataType">Date</Property> |
| | | <Property name="label">æ´æ°æ¶é´</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="result"> |
| | | <Property></Property> |
| | | <Property name="label">ææç»æ</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fileSuffix"> |
| | | <Property></Property> |
| | | <Property name="label">å¾åæä»¶åç¼å</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fileName"> |
| | | <Property></Property> |
| | | <Property name="label">æä»¶åç§°</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="preset"> |
| | | <Property></Property> |
| | | <Property name="label">é¢ç½®ä½ç¼å·</Property> |
| | | </PropertyDef> |
| | | </DataType> |
| | | <DataType name="dtConf"> |
| | | <Property name="creationType">com.ld.igds.models.SecSnapConf</Property> |
| | | <PropertyDef name="id"> |
| | | <Property></Property> |
| | | <Property name="label">主é®</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="companyId"> |
| | | <Property></Property> |
| | | <Property name="label">ç»ç»ç¼ç </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="deptId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ååº</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="updateTime"> |
| | | <Property name="dataType">Date</Property> |
| | | <Property name="label">æ´æ°æ¶é´</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="depotId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ä»åº</Property> |
| | | <Property name="mapping"> |
| | | <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property> |
| | | <Property name="keyProperty">id</Property> |
| | | <Property name="valueProperty">name</Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="cameraId"> |
| | | <Property></Property> |
| | | <Property name="label">å
³èæå头</Property> |
| | | <Property name="mapping"> |
| | | <Property name="mapValues">${dorado.getDataProvider("securityPR#listCamera").getResult()}</Property> |
| | | <Property name="keyProperty">id</Property> |
| | | <Property name="valueProperty">name</Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour1"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬ä¸æ¬¡</Property> |
| | | <Property name="displayFormat"># ç¹</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour2"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬äºæ¬¡</Property> |
| | | <Property name="displayFormat"># ç¹</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour3"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬ä¸æ¬¡</Property> |
| | | <Property name="displayFormat"># ç¹</Property> |
| | | </PropertyDef> |
| | | </DataType> |
| | | <DataType name="dtQuery"> |
| | | <PropertyDef name="depotId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ä»åº</Property> |
| | | <Property name="mapping"> |
| | | <Property name="mapValues">${dorado.getDataProvider("depotPR#getAllCache").getResult()}</Property> |
| | | <Property name="keyProperty">id</Property> |
| | | <Property name="valueProperty">name</Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="start"> |
| | | <Property name="label">èµ·å§æ¥æ</Property> |
| | | <Property name="dataType">Date</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="end"> |
| | | <Property name="label">æªæ¢æ¥æ</Property> |
| | | <Property name="dataType">Date</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour1"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬ä¸æ¬¡</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour2"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬äºæ¬¡</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="actHour3"> |
| | | <Property name="dataType">int</Property> |
| | | <Property name="label">ç¬¬ä¸æ¬¡</Property> |
| | | </PropertyDef> |
| | | </DataType> |
| | | </Model> |
| | | <View layout="padding:5;regionPadding:5"> |
| | | <Property name="packages">font-awesome,css-common</Property> |
| | | <DataSet id="dsMain"> |
| | | <Property name="loadMode">lazy</Property> |
| | | <Property name="dataType">[dtMain]</Property> |
| | | <Property name="dataProvider">secSnapDepotPR#pageSnapDepot</Property> |
| | | <Property name="pageSize">12</Property> |
| | | </DataSet> |
| | | <DataSet id="dsConf"> |
| | | <Property name="dataType">[dtConf]</Property> |
| | | <Property name="dataProvider">secSnapDepotPR#listConf</Property> |
| | | </DataSet> |
| | | <DataSet id="dsQuery"> |
| | | <ClientEvent name="onReady">self.insert({});</ClientEvent> |
| | | <Property name="dataType">dtQuery</Property> |
| | | </DataSet> |
| | | <DataSet id="dsParam"> |
| | | <Property name="dataType">dtConf</Property> |
| | | <Property name="dataProvider">secSnapDepotPR#getConfActHour</Property> |
| | | </DataSet> |
| | | <Panel layout="regionPadding:10"> |
| | | <Property name="caption">è§é¢å¾åä¿¡æ¯ç®¡ç</Property> |
| | | <Property name="iconClass">fa fa-bars</Property> |
| | | <Buttons/> |
| | | <Children> |
| | | <Container> |
| | | <Property name="contentOverflow">hidden</Property> |
| | | <Property name="exClassName">bg-color</Property> |
| | | <AutoForm> |
| | | <Property name="cols">80,*,*,*,400</Property> |
| | | <Property name="dataSet">dsQuery</Property> |
| | | <Label> |
| | | <Property name="text">æ¥è¯¢æ¡ä»¶ï¼</Property> |
| | | </Label> |
| | | <AutoFormElement> |
| | | <Property name="name">depotId</Property> |
| | | <Property name="property">depotId</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">start</Property> |
| | | <Property name="property">start</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">end</Property> |
| | | <Property name="property">end</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <Container layout="regionPadding:10"> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">var entity = view.get("#dsQuery.data:#");
 |
| | | view.get("#dsMain").set("parameter",entity).flushAsync(function(){
 |
| | | $notify("æ¥è¯¢æåï¼");
 |
| | | });</ClientEvent> |
| | | <Property name="caption">æ¥è¯¢</Property> |
| | | <Property name="exClassName">btn-normal</Property> |
| | | <Property name="iconClass">fa fa-search</Property> |
| | | </Button> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">view.get("#dsQuery").setData({});</ClientEvent> |
| | | <Property name="caption">éç½®</Property> |
| | | <Property name="exClassName">btn-warn</Property> |
| | | <Property name="iconClass">fa fa-refresh</Property> |
| | | <Property name="ignored">true</Property> |
| | | </Button> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">view.get("#dialogConf").show();</ClientEvent> |
| | | <Property name="caption">ææé
ç½®</Property> |
| | | <Property name="exClassName">btn-default</Property> |
| | | <Property name="iconClass">fa fa-cogs</Property> |
| | | </Button> |
| | | <Button layoutConstraint="left"> |
| | | <Property name="caption">æå¨ææ</Property> |
| | | <Property name="exClassName">btn-warn</Property> |
| | | <Property name="iconClass">fa fa-cogs</Property> |
| | | <Property name="action">ajaxSnapHand</Property> |
| | | </Button> |
| | | </Container> |
| | | </AutoForm> |
| | | </Container> |
| | | <Container layoutConstraint="center"> |
| | | <Property name="exClassName">bg-color</Property> |
| | | <DataBlockView> |
| | | <ClientEvent name="onRenderBlock">var id = arg.data.get("id");
 |
| | | var time = arg.data.get("updateTime").formatDate("Y-m-d H:i");
 |
| | | var timeStr = arg.data.get("updateTime").formatDate("Ymd");
 |
| | | var depotId = arg.data.getText("depotId");
 |
| | | var imgSrc = "../../basic/file/get-snap-depot?fileName="+arg.data.get("fileName")+"&timeStr="+timeStr;
 |
| | | var htm = "<div><img src='./static/images/img-fail.jpg' style='height:250px; width:100%;'><div><span style='padding-left:10px;'>ä»åºï¼æªæ¥è¯¢å°æ°æ®</span><span style='float:right;padding-right:10px;'>æ¶é´ï¼"+time+"</span></div></div>";
 |
| | | if("TEST" != id){
 |
| | | htm = "<div><img src='"+imgSrc+"' style='height:250px; width:100%;'><div><span style='padding-left:10px;'>ä»åºï¼"+depotId+"</span><span style='float:right;padding-right:10px;'>æ¶é´ï¼"+time+"</span></div></div>";
 |
| | | }
 |
| | | arg.dom.innerHTML = htm;
 |
| | | arg.progressDefault=false;</ClientEvent> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="blockHeight">300</Property> |
| | | <Property name="blockWidth">390</Property> |
| | | <Property name="blockLayout">vertical</Property> |
| | | <Property name="horiPadding">15</Property> |
| | | <Property name="horiSpacing">15</Property> |
| | | <Property name="vertPadding">15</Property> |
| | | <Property name="vertSpacing">15</Property> |
| | | <Property name="lineSize">4</Property> |
| | | </DataBlockView> |
| | | </Container> |
| | | <ToolBar layoutConstraint="bottom"> |
| | | <Fill/> |
| | | <DataPilot layoutConstraint="right"> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="itemCodes">pageSize,pages</Property> |
| | | </DataPilot> |
| | | </ToolBar> |
| | | </Children> |
| | | <Tools/> |
| | | </Panel> |
| | | <Dialog id="dialogConf"> |
| | | <Property name="width">750</Property> |
| | | <Property name="caption">ä»å
ææé
ç½®</Property> |
| | | <Buttons/> |
| | | <Children> |
| | | <FieldSet> |
| | | <Property name="caption">æææå头é
ç½®</Property> |
| | | <Buttons> |
| | | <Button> |
| | | <ClientEvent name="onClick">view.get("#dsConf").insert();</ClientEvent> |
| | | <Property name="caption">æ°å¢é
ç½®</Property> |
| | | </Button> |
| | | <Button> |
| | | <Property name="caption">ä¿åé
ç½®</Property> |
| | | <Property name="action">updateConf</Property> |
| | | </Button> |
| | | </Buttons> |
| | | <Children> |
| | | <DataGrid layoutConstraint="padding:10px"> |
| | | <Property name="dataSet">dsConf</Property> |
| | | <Property name="height">400</Property> |
| | | <RowNumColumn/> |
| | | <DataColumn name="depotId"> |
| | | <Property name="property">depotId</Property> |
| | | </DataColumn> |
| | | <DataColumn name="cameraId"> |
| | | <Property name="property">cameraId</Property> |
| | | </DataColumn> |
| | | </DataGrid> |
| | | </Children> |
| | | </FieldSet> |
| | | <FieldSet> |
| | | <Property name="caption">æææ¶é´é
ç½®</Property> |
| | | <Property name="height">150</Property> |
| | | <Buttons> |
| | | <Button> |
| | | <ClientEvent name="onClick">var data = view.get("#dsParam.data");
 |
| | | view.get("#ajaxSnapTime").set("parameter",data).execute();</ClientEvent> |
| | | <Property name="caption">ä¿åææ¶é´</Property> |
| | | </Button> |
| | | </Buttons> |
| | | <Children> |
| | | <AutoForm> |
| | | <Property name="dataSet">dsParam</Property> |
| | | <Property name="cols">*,*,*</Property> |
| | | <Property name="labelAlign">right</Property> |
| | | <AutoFormElement> |
| | | <Property name="name">actHour1</Property> |
| | | <Property name="property">actHour1</Property> |
| | | <Property name="trigger">listHour</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">actHour2</Property> |
| | | <Property name="property">actHour2</Property> |
| | | <Property name="trigger">listHour</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">actHour3</Property> |
| | | <Property name="property">actHour3</Property> |
| | | <Property name="trigger">listHour</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | </AutoForm> |
| | | </Children> |
| | | </FieldSet> |
| | | </Children> |
| | | <Tools/> |
| | | </Dialog> |
| | | <AjaxAction id="ajaxDel"> |
| | | <Property name="service">videoImgPR#delData</Property> |
| | | <Property name="confirmMessage">å½åæ°æ®å é¤åæ æ³æ¢å¤ï¼è¯·ç¡®è®¤è¦å é¤ä¹ï¼</Property> |
| | | </AjaxAction> |
| | | <UpdateAction id="updateConf"> |
| | | <Property name="dataResolver">secSnapDepotPR#updateConf</Property> |
| | | <UpdateItem> |
| | | <Property name="dataSet">dsConf</Property> |
| | | </UpdateItem> |
| | | </UpdateAction> |
| | | <AjaxAction id="ajaxSnapTime"> |
| | | <Property name="service">secSnapDepotPR#updateActHour</Property> |
| | | </AjaxAction> |
| | | <ListDropDown id="listHour"> |
| | | <Property name="items">0,7,8,9,10,11,12,13,14,15,16,17,18</Property> |
| | | </ListDropDown> |
| | | <AjaxAction id="ajaxSnapHand"> |
| | | <Property name="service">sec.scheduled#exeByHand</Property> |
| | | <Property name="confirmMessage">ç¡®å®è¦æ§è¡ä¹ï¼</Property> |
| | | </AjaxAction> |
| | | </View> |
| | | </ViewConfig> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.sec.view; |
| | | |
| | | import com.bstek.dorado.annotation.DataProvider; |
| | | import com.bstek.dorado.annotation.DataResolver; |
| | | import com.bstek.dorado.annotation.Expose; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.models.SecSnapConf; |
| | | import com.ld.igds.models.SecSnapDepot; |
| | | import com.ld.igds.sec.service.SecSnapDepotService; |
| | | import com.ld.igds.util.ContextUtil; |
| | | |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Collection; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author: andy.jia |
| | | * @description: ä»å
ææä¿¡æ¯è·å管ç |
| | | * @version: |
| | | */ |
| | | @Component |
| | | public class SecSnapDepotPR { |
| | | |
| | | @Resource |
| | | private SecSnapDepotService snapDepotService; |
| | | |
| | | |
| | | /** |
| | | * secSnapDepotPR#pageSnapDepot |
| | | * |
| | | * @param param |
| | | * @throws Exception |
| | | */ |
| | | @DataProvider |
| | | public void pageSnapDepot(Page<SecSnapDepot> page, Map<String, Object> param) |
| | | throws Exception { |
| | | |
| | | if (null == param) param = new HashMap<>(); |
| | | param.put("companyId", ContextUtil.getCompanyId()); |
| | | param.put("deptId", ContextUtil.subDeptId(null)); |
| | | |
| | | snapDepotService.pageSnapDepot(page, param); |
| | | |
| | | //æ·»å 4æ¡æµè¯æ°æ® |
| | | if (null == page.getEntities() || page.getEntities().isEmpty()) { |
| | | Collection<SecSnapDepot> list = new ArrayList<>(); |
| | | list.add(new SecSnapDepot("TEST")); |
| | | list.add(new SecSnapDepot("TEST")); |
| | | list.add(new SecSnapDepot("TEST")); |
| | | list.add(new SecSnapDepot("TEST")); |
| | | |
| | | page.setEntities(list); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * secSnapDepotPR#getConfActHour |
| | | * |
| | | * é»è®¤è·åç¬¬ä¸æ¡æ°æ®çé
置信æ¯ï¼å¦ææ²¡æå°±è¿åä¸ä¸ªç©ºç对象 |
| | | * @param page |
| | | * @param param |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @DataProvider |
| | | public SecSnapConf getConfActHour()throws Exception { |
| | | List<SecSnapConf> list = snapDepotService.listSnapConf(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null)); |
| | | if(null == list || list.isEmpty()) return new SecSnapConf(); |
| | | return list.get(0); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * secSnapDepotPR#listConf |
| | | * |
| | | * é»è®¤è·åç¬¬ä¸æ¡æ°æ®çé
置信æ¯ï¼å¦ææ²¡æå°±è¿åä¸ä¸ªç©ºç对象 |
| | | * @param page |
| | | * @param param |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | @DataProvider |
| | | public List<SecSnapConf> listConf()throws Exception { |
| | | return snapDepotService.listSnapConf(ContextUtil.getCompanyId(), ContextUtil.subDeptId(null)); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * secSnapDepotPR#updateConf |
| | | * @param items |
| | | * @throws Exception |
| | | */ |
| | | @DataResolver |
| | | public void updateConf(List<SecSnapConf> items)throws Exception { |
| | | if(null ==items || items.isEmpty() ) return; |
| | | for(SecSnapConf conf:items){ |
| | | if(null == conf.getId()){ |
| | | if(null == conf.getCompanyId()){ |
| | | conf.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if(null == conf.getDeptId()){ |
| | | conf.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | snapDepotService.addConf(conf); |
| | | }else{ |
| | | snapDepotService.updateConf(conf); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /** |
| | | * secSnapDepotPR#updateActHour |
| | | * @param items |
| | | * @throws Exception |
| | | */ |
| | | @Expose |
| | | public void updateActHour(SecSnapConf conf)throws Exception { |
| | | |
| | | if(null == conf.getCompanyId()){ |
| | | conf.setCompanyId(ContextUtil.getCompanyId()); |
| | | } |
| | | if(null == conf.getDeptId()){ |
| | | conf.setDeptId(ContextUtil.subDeptId(null)); |
| | | } |
| | | |
| | | //åæ¥æ´æ°ææçæ§è¡æ¶é´ä¸è´ |
| | | snapDepotService.updateActHour(conf); |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.timer; |
| | | |
| | | import com.bstek.dorado.annotation.Expose; |
| | | import com.ld.igds.camera.ApiCameraManager; |
| | | import com.ld.igds.camera.CameraUtil; |
| | | import com.ld.igds.camera.data.ApiCameraResp; |
| | | import com.ld.igds.camera.data.ApiSnapReq; |
| | | import com.ld.igds.data.ConfigData; |
| | | import com.ld.igds.file.CoreFileService; |
| | | import com.ld.igds.models.SecCamera; |
| | | import com.ld.igds.models.SecSnapConf; |
| | | import com.ld.igds.models.SnapSer; |
| | | import com.ld.igds.sec.service.CoreSecCameraService; |
| | | import com.ld.igds.sec.service.SecSnapDepotService; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.DateUtil; |
| | | import com.ld.igds.view.service.SnapSerService; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * å®é²æ¨¡åæ 宿¶å¨é
ç½® |
| | | */ |
| | | @Slf4j |
| | | @Component(ScheduledSec.BEAN_ID) |
| | | public class ScheduledSec { |
| | | |
| | | public static final String BEAN_ID = "sec.scheduled"; |
| | | |
| | | @Resource |
| | | private ConfigData configData; |
| | | @Resource |
| | | private SecSnapDepotService secSnapService; |
| | | @Resource |
| | | private CoreSecCameraService coreSecCameraService; |
| | | @Resource |
| | | private SnapSerService snapSerService; |
| | | @Resource |
| | | private CoreFileService fileService; |
| | | @Resource |
| | | private ApiCameraManager apiCameraManager; |
| | | |
| | | /** |
| | | * ä»6-18ç¹å¼å§æ§è¡ |
| | | */ |
| | | @Scheduled(cron = "0 0 6,7,8,9,10,11,12,13,14,15,16,17,18 * * ? ") |
| | | public void scheduled30() { |
| | | |
| | | Date exeDate = new Date(); |
| | | |
| | | // æ§è¡ææå¤æ |
| | | doExeSnap(exeDate,false); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * sec.scheduled#exeByHand |
| | | * æå¨æ§è¡ |
| | | */ |
| | | @Expose |
| | | public void exeByHand(){ |
| | | Date exeDate = new Date(); |
| | | |
| | | // æ§è¡ææå¤æ |
| | | doExeSnap(exeDate,true); |
| | | } |
| | | |
| | | /** |
| | | * 宿¶æ§è¡ææ |
| | | */ |
| | | private void doExeSnap(Date date,boolean isByHand) { |
| | | try { |
| | | // è·åææé
ç½®æææå头 |
| | | List<SecSnapConf> list = secSnapService.listSnapConf( |
| | | configData.getDefaultCompanyId(), null); |
| | | |
| | | if (null == list || list.isEmpty()) { |
| | | return; |
| | | } |
| | | SecSnapConf exeConf = list.get(0); |
| | | |
| | | // è·åæææ¶é´ |
| | | int exeHour1 = exeConf.getActHour1(); |
| | | int exeHour2 = exeConf.getActHour2(); |
| | | int exeHour3 = exeConf.getActHour3(); |
| | | |
| | | if (exeHour1 == 0 && exeHour1 == 0 && exeHour1 == 0) |
| | | return; |
| | | |
| | | // è·åå½åç³»ç»æ¶é´ |
| | | int curHour = DateUtil.getHour(date); |
| | | |
| | | if(isByHand){ |
| | | exeHour1 = curHour; |
| | | } |
| | | |
| | | if(curHour != exeHour1 && curHour != exeHour2 && curHour !=exeHour3){ |
| | | return; |
| | | } |
| | | |
| | | log.info("===================æ§è¡å®æ¶ä»å
è§é¢ææ=================="); |
| | | |
| | | SecCamera secCamera; |
| | | Map<String, SnapSer> snapSerMap = new HashMap<>(); |
| | | SnapSer snapSer; |
| | | for (SecSnapConf snapConf : list) { |
| | | |
| | | secCamera = coreSecCameraService.getCameraById( |
| | | snapConf.getCompanyId(), snapConf.getCameraId()); |
| | | |
| | | if (null == secCamera) continue; |
| | | |
| | | snapSer = snapSerMap.get(snapConf.getDeptId()); |
| | | if (null == snapSer) { |
| | | snapSer = snapSerService.getCacheByDeptId(snapConf.getDeptId()); |
| | | snapSerMap.put(snapConf.getDeptId(), snapSer); |
| | | } |
| | | |
| | | if (null == snapSer) { |
| | | log.error("------------ææä¸ºé
ç½®ææåæº----------"); |
| | | continue; |
| | | } |
| | | |
| | | doExeSnapToData(secCamera, snapSer, snapConf); |
| | | |
| | | Thread.sleep(500); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("----------ææåå°åºé---------{}", e); |
| | | } |
| | | } |
| | | |
| | | private void doExeSnapToData(SecCamera secCamera, SnapSer snapSer,SecSnapConf snapConf) { |
| | | ApiSnapReq req = new ApiSnapReq(); |
| | | req.setCompanyId(secCamera.getCompanyId()); |
| | | req.setDeptId(secCamera.getDeptId()); |
| | | req.setSn(secCamera.getSn()); |
| | | req.setSnapType(secCamera.getSnapType()); |
| | | req.setPlayType(secCamera.getPlayType()); |
| | | req.setSerSn(snapSer.getSn()); |
| | | req.setCameraName(secCamera.getName()); |
| | | req.setBizId(null); |
| | | |
| | | req.setMediaAddr(CameraUtil.updateMediaAddr(secCamera.getMediaAddr(), |
| | | secCamera.getLoginId(), secCamera.getPwd(), |
| | | secCamera.getIpIn(), secCamera.getPortInC(), |
| | | secCamera.getChanNum())); |
| | | |
| | | String filePath = fileService.getSnapFilePath(new Date()); |
| | | |
| | | req.setFilePath(filePath); |
| | | |
| | | // è°æ´éä»¶åç§°ï¼é¿å
åºç°ä¸æ |
| | | String fileName = snapConf.getDepotId() + "_" + ContextUtil.getTimeId(1000) + ".jpg"; |
| | | req.setFileName(fileName); |
| | | |
| | | // æ§è¡ææ |
| | | ApiCameraResp resp = apiCameraManager.getApiCameraService(secCamera.getPlayType()).snapImg(req); |
| | | resp.setFileName(fileName); |
| | | |
| | | // æ§è¡è®°å½ä¿å |
| | | secSnapService.addData(snapConf, fileName, resp.getCode()); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.warn.service; |
| | | |
| | | import com.bstek.bdf2.core.orm.hibernate.HibernateDao; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.models.SecureManager; |
| | | import com.ld.igds.util.ContextUtil; |
| | | import com.ld.igds.util.DateUtil; |
| | | import org.apache.commons.lang3.time.DateFormatUtils; |
| | | import org.hibernate.Session; |
| | | import org.springframework.stereotype.Component; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @author czt |
| | | * @date 2023/10/30 |
| | | **/ |
| | | @Component |
| | | public class HSecureManagerService extends HibernateDao { |
| | | |
| | | |
| | | public void listData(Page<SecureManager> page, Map<String, Object> param) throws Exception { |
| | | StringBuffer hql = new StringBuffer(); |
| | | hql.append(" from " + SecureManager.class.getName() + " where companyId =:companyId and deptId =:deptId "); |
| | | Map<String, Object> args = new HashMap<>(); |
| | | args.put("companyId", ContextUtil.getCompanyId()); |
| | | args.put("deptId", ContextUtil.subDeptId(null)); |
| | | |
| | | String count = "select count(*) " + hql.toString(); |
| | | hql.append(" order by updateTime desc"); |
| | | this.pagingQuery(page, hql.toString(), count, args); |
| | | |
| | | } |
| | | |
| | | public void saveData(SecureManager data) { |
| | | data.setUpdateTime(new Date()); |
| | | data.setDeptId(ContextUtil.subDeptId(null)); |
| | | data.setCompanyId(ContextUtil.getCompanyId()); |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | if (null == data.getFxdbm()) { |
| | | data.setFxdbm(DateFormatUtils.format(new Date(), "yyyyMMdd") + getIndex(data.getCompanyId())); |
| | | |
| | | session.save(data); |
| | | } else { |
| | | session.update(data); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | public String getIndex(String companyId) { |
| | | List<SecureManager> list = getDataByTime(companyId); |
| | | int index = 10000; |
| | | if (list != null && list.size() > 0) { |
| | | String id = list.get(0).getFxdbm().substring(8); |
| | | int temp = Integer.valueOf(id) + 1; |
| | | index += temp; |
| | | }else { |
| | | index ++; |
| | | } |
| | | return String.valueOf(index).substring(1); |
| | | } |
| | | |
| | | private List<SecureManager> getDataByTime(String companyId) { |
| | | String hql = " from " + SecureManager.class.getName() |
| | | + " where companyId =:companyId "; |
| | | |
| | | Map<String, Object> args = new HashMap<String, Object>(); |
| | | args.put("companyId", companyId); |
| | | |
| | | hql += " and updateTime >:startTime"; |
| | | args.put("startTime", DateUtil.getCurZero(new Date())); |
| | | |
| | | |
| | | hql += " and updateTime <:endTime"; |
| | | args.put("endTime", DateUtil.getNextZero(new Date())); |
| | | |
| | | |
| | | hql += " order by id desc"; |
| | | |
| | | return this.query(hql, args); |
| | | } |
| | | |
| | | public void delData(SecureManager data) { |
| | | Session session = this.getSessionFactory().openSession(); |
| | | try { |
| | | if (null != data.getFxdbm()) { |
| | | session.delete(data); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } finally { |
| | | session.flush(); |
| | | session.close(); |
| | | } |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <ViewConfig> |
| | | <Arguments/> |
| | | <Context/> |
| | | <Model> |
| | | <DataType name="dtMain"> |
| | | <Property name="creationType">com.ld.igds.models.SecureManager</Property> |
| | | <PropertyDef name="fxdbm"> |
| | | <Property></Property> |
| | | <Property name="label">é£é©ç¹ç¼ç </Property> |
| | | <Property name="readOnly">true</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="companyId"> |
| | | <Property></Property> |
| | | <Property name="label">ç»ç»ç¼ç </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="deptId"> |
| | | <Property></Property> |
| | | <Property name="label">æå±ååº</Property> |
| | | <Property name="mapping"> |
| | | <Property name="mapValues">${dorado.getDataProvider("deptPR#loadParents").getResult()}</Property> |
| | | <Property name="keyProperty">id</Property> |
| | | <Property name="valueProperty">name</Property> |
| | | </Property> |
| | | <Property name="required">true</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="dd"> |
| | | <Property></Property> |
| | | <Property name="label">å°ç¹</Property> |
| | | <Property name="required">true</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="sbr"> |
| | | <Property></Property> |
| | | <Property name="label">è¯å«äºº</Property> |
| | | <Property name="required">true</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="hjbw"> |
| | | <Property></Property> |
| | | <Property name="label">ç¯è/é¨ä½</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fxxx"> |
| | | <Property></Property> |
| | | <Property name="label">é£é©ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fxlx"> |
| | | <Property name="label">é£é©ç±»å</Property> |
| | | <Property name="mapping"> |
| | | <Property name="keyProperty">key</Property> |
| | | <Property name="valueProperty">value</Property> |
| | | <Property name="mapValues"> |
| | | <Collection> |
| | | <Entity> |
| | | <Property name="key">1</Property> |
| | | <Property name="value">1-åºç¡è®¾æ½</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">2</Property> |
| | | <Property name="value">2-ç½ç»å®å
¨</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">3</Property> |
| | | <Property name="value">3-æ¶é²å®å
¨</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">4</Property> |
| | | <Property name="value">4-ç¨çµå®å
¨</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">5</Property> |
| | | <Property name="value">5-ä½ä¸å®å
¨</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">6</Property> |
| | | <Property name="value">6-ç¨è¯é£é©</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">7</Property> |
| | | <Property name="value">7-管çé£é©</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">8</Property> |
| | | <Property name="value">8-å
¶ä»é£é©</Property> |
| | | </Entity> |
| | | </Collection> |
| | | </Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fxfj"> |
| | | <Property name="label">é£é©ç级</Property> |
| | | <Property name="mapping"> |
| | | <Property name="keyProperty">key</Property> |
| | | <Property name="valueProperty">value</Property> |
| | | <Property name="mapValues"> |
| | | <Collection> |
| | | <Entity> |
| | | <Property name="key">1</Property> |
| | | <Property name="value">1-ä½é£é©</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">2</Property> |
| | | <Property name="value">2-ä¸è¬é£é©</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">3</Property> |
| | | <Property name="value">3-è¾å¤§é£é©</Property> |
| | | </Entity> |
| | | <Entity> |
| | | <Property name="key">4</Property> |
| | | <Property name="value">4-é大é£é©</Property> |
| | | </Entity> |
| | | </Collection> |
| | | </Property> |
| | | </Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fxglcs"> |
| | | <Property></Property> |
| | | <Property name="label">é£é©ç®¡æ§æªæ½</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="yhxx"> |
| | | <Property></Property> |
| | | <Property name="label">éæ£ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="yhpcxx"> |
| | | <Property></Property> |
| | | <Property name="label">éæ£ææ¥ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="yhzgxx"> |
| | | <Property></Property> |
| | | <Property name="label">éæ£æ´æ¹ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="yhysxx"> |
| | | <Property></Property> |
| | | <Property name="label">éæ£æ´æ¹éªæ¶ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="sgjbxx"> |
| | | <Property></Property> |
| | | <Property name="label">äºæ
åºæ¬ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="zgsx"> |
| | | <Property></Property> |
| | | <Property name="label">æ´æ¹æ¶é</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="zrdw"> |
| | | <Property></Property> |
| | | <Property name="label">责任åä½</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="zrr"> |
| | | <Property></Property> |
| | | <Property name="label">责任人</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="zgysxx"> |
| | | <Property></Property> |
| | | <Property name="label">æ´æ¹éªæ¶ä¿¡æ¯</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="fxgzjgzrr"> |
| | | <Property name="label">é£é©è·è¸ªç管责任人</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="updateTime"> |
| | | <Property name="dataType">DateTime</Property> |
| | | <Property name="label">æåæ´æ°æ¶é´</Property> |
| | | </PropertyDef> |
| | | </DataType> |
| | | <DataType name="dtParam"> |
| | | <PropertyDef name="sbr"> |
| | | <Property name="label">è¯å«äºº</Property> |
| | | </PropertyDef> |
| | | <PropertyDef name="dd"> |
| | | <Property name="label">å°ç¹</Property> |
| | | </PropertyDef> |
| | | </DataType> |
| | | </Model> |
| | | <View layout="padding:5;regionPadding:5"> |
| | | <Property name="packages">font-awesome,css-common</Property> |
| | | <DataSet id="dsMain"> |
| | | <Property name="dataType">[dtMain]</Property> |
| | | <Property name="dataProvider">secureManagerPR#pageList</Property> |
| | | <Property name="pageSize">15</Property> |
| | | </DataSet> |
| | | <DataSet id="dsParam"> |
| | | <ClientEvent name="onReady">self.insert({})
 |
| | | </ClientEvent> |
| | | <Property name="dataType">[dtParam]</Property> |
| | | </DataSet> |
| | | <Container layout="regionPadding:10" layoutConstraint="top"> |
| | | <Property name="exClassName">bg-color</Property> |
| | | <Property name="height">55</Property> |
| | | <Label layoutConstraint="left"> |
| | | <Property name="text">èåæ ï¼</Property> |
| | | </Label> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">view.get("#dsMain").insert();
 |
| | | view.get("#dialogMain").show();</ClientEvent> |
| | | <Property name="exClassName">btn-normal</Property> |
| | | <Property name="iconClass">fa fa-plus</Property> |
| | | <Property name="caption">æ°å¢</Property> |
| | | </Button> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">var dialog= view.get("#dsMain.data:#");
 |
| | | if(dialog){
 |
| | | view.get("#dialogMain").show();
 |
| | | }else{
 |
| | | $alert("请éä¸éè¦ä¿®æ¹çæ°æ®")
 |
| | | }</ClientEvent> |
| | | <Property name="caption">ç¼è¾</Property> |
| | | <Property name="exClassName">btn-warm</Property> |
| | | <Property name="iconClass">fa fa-pencil</Property> |
| | | </Button> |
| | | <Button> |
| | | <ClientEvent name="onClick">var cur = view.get("#dsMain.data:#");
 |
| | | if(!cur) return;
 |
| | | view.get("#ajaxDel").set("parameter",cur).execute(function(result){
 |
| | | if(result){
 |
| | | $alert(result);
 |
| | | return;
 |
| | | }else{
 |
| | | cur.remove();
 |
| | | }
 |
| | | });</ClientEvent> |
| | | <Property name="exClassName">btn-warn</Property> |
| | | <Property name="iconClass">fa fa-pencil</Property> |
| | | <Property name="caption">å é¤</Property> |
| | | </Button> |
| | | </Container> |
| | | <Container> |
| | | <AutoForm> |
| | | <Property name="dataSet">dsParam</Property> |
| | | <Property name="cols">*,*,*,*</Property> |
| | | <AutoFormElement> |
| | | <Property name="name">sbr</Property> |
| | | <Property name="property">sbr</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">dd</Property> |
| | | <Property name="property">dd</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <Container layout="regionPadding:10"> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">var param = view.get("#dsParam.data:#");
 |
| | | view.get("#dsMain").set("parameter",param).flushAsync();</ClientEvent> |
| | | <Property name="caption">æ¥è¯¢</Property> |
| | | <Property name="exClassName">btn-normal</Property> |
| | | <Property name="iconClass">fa fa-search</Property> |
| | | </Button> |
| | | <Button layoutConstraint="left"> |
| | | <ClientEvent name="onClick">view.get("#dsParam").insert({})</ClientEvent> |
| | | <Property name="caption">éç½®</Property> |
| | | <Property name="iconClass">fa fa-refresh</Property> |
| | | <Property name="exClassName">btn-default</Property> |
| | | </Button> |
| | | </Container> |
| | | </AutoForm> |
| | | <DataGrid id="dgMain"> |
| | | <ClientEvent name="onDataRowDoubleClick">view.get("#dialogMain").show();</ClientEvent> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="readOnly">true</Property> |
| | | <RowNumColumn/> |
| | | <DataColumn name="fxdbm"> |
| | | <Property name="property">fxdbm</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="sbr"> |
| | | <Property name="property">sbr</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="dd"> |
| | | <Property name="property">dd</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="hjbw"> |
| | | <Property name="property">hjbw</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="fxxx"> |
| | | <Property name="property">fxxx</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="fxlx"> |
| | | <Property name="property">fxlx</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | <DataColumn name="updateTime"> |
| | | <Property name="property">updateTime</Property> |
| | | <Property name="align">center</Property> |
| | | </DataColumn> |
| | | </DataGrid> |
| | | <ToolBar layoutConstraint="bottom"> |
| | | <Fill/> |
| | | <DataPilot> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="itemCodes">pageSize,pages</Property> |
| | | </DataPilot> |
| | | </ToolBar> |
| | | </Container> |
| | | <Dialog id="dialogMain"> |
| | | <Property name="caption">åºæ¬ä¿¡æ¯</Property> |
| | | <Property name="width">80%</Property> |
| | | <Property name="closeable">false</Property> |
| | | <Buttons> |
| | | <Button> |
| | | <ClientEvent name="onClick">var data = view.get("#dsMain.data:#");
 |
| | | view.get("#uaAction").execute(function(result){
 |
| | | if(result){
 |
| | | $alert(result);
 |
| | | }else{
 |
| | | self.get("parent").hide();
 |
| | | }
 |
| | | });</ClientEvent> |
| | | <Property name="caption">ä¿å</Property> |
| | | <Property name="iconClass">fa fa-check</Property> |
| | | <Property name="exClassName">btn-normal</Property> |
| | | </Button> |
| | | <Button> |
| | | <ClientEvent name="onClick">view.get("#dsMain.data:#").cancel();
 |
| | | self.get("parent").hide();</ClientEvent> |
| | | <Property name="caption">åæ¶</Property> |
| | | <Property name="iconClass">fa fa-times</Property> |
| | | <Property name="exClassName">btn-warn</Property> |
| | | </Button> |
| | | </Buttons> |
| | | <Children> |
| | | <AutoForm> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="readOnly">false</Property> |
| | | <Property name="labelSeparator"> : </Property> |
| | | <Property name="labelAlign">right</Property> |
| | | <Property name="cols">*,*</Property> |
| | | <Property name="labelWidth">160</Property> |
| | | <AutoFormElement> |
| | | <Property name="name">fxdbm</Property> |
| | | <Property name="property">fxdbm</Property> |
| | | <Editor> |
| | | <TextEditor> |
| | | <Property name="blankText">--ç³»ç»èªå¨çæ--</Property> |
| | | </TextEditor> |
| | | </Editor> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">deptId</Property> |
| | | <Property name="property">deptId</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">dd</Property> |
| | | <Property name="property">dd</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">sbr</Property> |
| | | <Property name="property">sbr</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">hjbw</Property> |
| | | <Property name="property">hjbw</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">fxxx</Property> |
| | | <Property name="property">fxxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">fxlx</Property> |
| | | <Property name="property">fxlx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">fxfj</Property> |
| | | <Property name="property">fxfj</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">fxglcs</Property> |
| | | <Property name="property">fxglcs</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">yhxx</Property> |
| | | <Property name="property">yhxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">yhpcxx</Property> |
| | | <Property name="property">yhpcxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">yhzgxx</Property> |
| | | <Property name="property">yhzgxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">yhysxx</Property> |
| | | <Property name="property">yhysxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">sgjbxx</Property> |
| | | <Property name="property">sgjbxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">zgsx</Property> |
| | | <Property name="property">zgsx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">zrdw</Property> |
| | | <Property name="property">zrdw</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">zrr</Property> |
| | | <Property name="property">zrr</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">zgysxx</Property> |
| | | <Property name="property">zgysxx</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">fxgzjgzrr</Property> |
| | | <Property name="property">fxgzjgzrr</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | <AutoFormElement> |
| | | <Property name="name">updateTime</Property> |
| | | <Property name="property">updateTime</Property> |
| | | <Editor/> |
| | | </AutoFormElement> |
| | | </AutoForm> |
| | | </Children> |
| | | <Tools/> |
| | | </Dialog> |
| | | <UpdateAction id="uaAction"> |
| | | <Property name="successMessage">æ§è¡æå!</Property> |
| | | <Property name="dataResolver">secureManagerPR#saveData</Property> |
| | | <UpdateItem> |
| | | <Property name="dataSet">dsMain</Property> |
| | | <Property name="dataPath">[#current]</Property> |
| | | </UpdateItem> |
| | | </UpdateAction> |
| | | <AjaxAction id="ajaxDel"> |
| | | <Property name="confirmMessage">ç¡®å®è¦å é¤åï¼</Property> |
| | | <Property name="service">secureManagerPR#delData</Property> |
| | | </AjaxAction> |
| | | <MonthDropDown id="monthDropDown1"> |
| | | <ClientEvent name="onClose">var date = arg.selectedValue+1;
 |
| | | if(date<10){
 |
| | | arg.selectedValue="0"+date
 |
| | | }else if(date>=10){
 |
| | | arg.selectedValue=date
 |
| | | }
 |
| | | </ClientEvent> |
| | | </MonthDropDown> |
| | | </View> |
| | | </ViewConfig> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.ld.igds.warn.view; |
| | | |
| | | import com.bstek.dorado.annotation.DataProvider; |
| | | import com.bstek.dorado.annotation.DataResolver; |
| | | import com.bstek.dorado.annotation.Expose; |
| | | import com.bstek.dorado.data.provider.Page; |
| | | import com.ld.igds.models.SecureManager; |
| | | import com.ld.igds.warn.service.HSecureManagerService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Component; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Author: czt |
| | | **/ |
| | | @Component |
| | | public class SecureManagerPR { |
| | | @Autowired |
| | | private HSecureManagerService secureManagerService; |
| | | |
| | | /** |
| | | * secureManagerPR#pageList |
| | | * |
| | | * @param page |
| | | * @param param |
| | | * @throws Exception |
| | | */ |
| | | @DataProvider |
| | | public void pageList(Page<SecureManager> page, Map<String, Object> param) throws Exception { |
| | | secureManagerService.listData(page, param); |
| | | } |
| | | |
| | | /** |
| | | * secureManagerPR#saveData |
| | | * |
| | | * @param data |
| | | */ |
| | | @DataResolver |
| | | public void saveData(SecureManager data) { |
| | | secureManagerService.saveData(data); |
| | | } |
| | | |
| | | /** |
| | | * secureManagerPR#delData |
| | | * |
| | | * @param data |
| | | */ |
| | | @Expose |
| | | public void delData(SecureManager data) { |
| | | secureManagerService.delData(data); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | {"version":3,"sources":["less/normalize.less","less/print.less","bootstrap.css","dist/css/bootstrap.css","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labels.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/mixins/reset-text.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":";;;;4EAQA,KACE,YAAA,WACA,yBAAA,KACA,qBAAA,KAOF,KACE,OAAA,EAaF,QAAA,MAAA,QAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,KAAA,IAAA,QAAA,QAaE,QAAA,MAQF,MAAA,OAAA,SAAA,MAIE,QAAA,aACA,eAAA,SAQF,sBACE,QAAA,KACA,OAAA,EAQF,SAAA,SAEE,QAAA,KAUF,EACE,iBAAA,YAQF,SAAA,QAEE,QAAA,EAUF,YACE,cAAA,IAAA,OAOF,EAAA,OAEE,YAAA,IAOF,IACE,WAAA,OAQF,GACE,OAAA,MAAA,EACA,UAAA,IAOF,KACE,MAAA,KACA,WAAA,KAOF,MACE,UAAA,IAOF,IAAA,IAEE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IACE,IAAA,MAGF,IACE,OAAA,OAUF,IACE,OAAA,EAOF,eACE,SAAA,OAUF,OACE,OAAA,IAAA,KAOF,GACE,OAAA,EAAA,mBAAA,YAAA,gBAAA,YACA,WAAA,YAOF,IACE,SAAA,KAOF,KAAA,IAAA,IAAA,KAIE,YAAA,UAAA,UACA,UAAA,IAkBF,OAAA,MAAA,SAAA,OAAA,SAKE,OAAA,EACA,KAAA,QACA,MAAA,QAOF,OACE,SAAA,QAUF,OAAA,OAEE,eAAA,KAWF,OAAA,wBAAA,kBAAA,mBAIE,mBAAA,OACA,OAAA,QAOF,iBAAA,qBAEE,OAAA,QAOF,yBAAA,wBAEE,QAAA,EACA,OAAA,EAQF,MACE,YAAA,OAWF,qBAAA,kBAEE,mBAAA,WAAA,gBAAA,WAAA,WAAA,WACA,QAAA,EASF,8CAAA,8CAEE,OAAA,KAQF,mBACE,mBAAA,YACA,gBAAA,YAAA,WAAA,YAAA,mBAAA,UASF,iDAAA,8CAEE,mBAAA,KAOF,SACE,QAAA,MAAA,OAAA,MACA,OAAA,EAAA,IACA,OAAA,IAAA,MAAA,OAQF,OACE,QAAA,EACA,OAAA,EAOF,SACE,SAAA,KAQF,SACE,YAAA,IAUF,MACE,eAAA,EACA,gBAAA,SAGF,GAAA,GAEE,QAAA,uFCjUF,aA7FI,EAAA,OAAA,QAGI,MAAA,eACA,YAAA,eACA,WAAA,cAAA,mBAAA,eACA,WAAA,eAGJ,EAAA,UAEI,gBAAA,UAGJ,cACI,QAAA,KAAA,WAAA,IAGJ,kBACI,QAAA,KAAA,YAAA,IAKJ,6BAAA,mBAEI,QAAA,GAGJ,WAAA,IAEI,OAAA,IAAA,MAAA,KC4KL,kBAAA,MDvKK,MC0KL,QAAA,mBDrKK,IE8KN,GDLC,kBAAA,MDrKK,ICwKL,UAAA,eCUD,GF5KM,GE2KN,EF1KM,QAAA,ECuKL,OAAA,ECSD,GF3KM,GCsKL,iBAAA,MD/JK,QCkKL,QAAA,KCSD,YFtKU,oBCiKT,iBAAA,eD7JK,OCgKL,OAAA,IAAA,MAAA,KD5JK,OC+JL,gBAAA,mBCSD,UFpKU,UC+JT,iBAAA,eDzJS,mBEkKV,mBDLC,OAAA,IAAA,MAAA,gBEjPD,WACA,YAAA,uBFsPD,IAAA,+CE7OC,IAAK,sDAAuD,4BAA6B,iDAAkD,gBAAiB,gDAAiD,eAAgB,+CAAgD,mBAAoB,2EAA4E,cAE7W,WACA,SAAA,SACA,IAAA,IACA,QAAA,aACA,YAAA,uBACA,WAAA,OACA,YAAA,IACA,YAAA,EAIkC,uBAAA,YAAW,wBAAA,UACX,2BAAW,QAAA,QAEX,uBDuPlC,QAAS,QCtPyB,sBFiPnC,uBEjP8C,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,qBAAW,QAAA,QACX,0BAAW,QAAA,QACX,qBAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,sBAAW,QAAA,QACX,yBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,+BAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,gCAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,gCAAW,QAAA,QACX,gCAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,0BAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,gCAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,6BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,mCAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,yBAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,gCAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,sBAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,0BAAW,QAAA,QACX,4BAAW,QAAA,QACX,qCAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,oCAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,8BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,uBAAW,QAAA,QACX,mCAAW,QAAA,QACX,uCAAW,QAAA,QACX,gCAAW,QAAA,QACX,oCAAW,QAAA,QACX,qCAAW,QAAA,QACX,yCAAW,QAAA,QACX,4BAAW,QAAA,QACX,yBAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,yBAAW,QAAA,QACX,wBAAW,QAAA,QACX,0BAAW,QAAA,QACX,6BAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,uBAAW,QAAA,QACX,8BAAW,QAAA,QACX,+BAAW,QAAA,QACX,gCAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,8BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,yBAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,2BAAW,QAAA,QACX,2BAAW,QAAA,QACX,4BAAW,QAAA,QACX,+BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,iCAAW,QAAA,QACX,oCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,+BAAW,QAAA,QACX,iCAAW,QAAA,QACX,qBAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,2BAAW,QAAA,QACX,uBAAW,QAAA,QASX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,wBAAW,QAAA,QACX,uBAAW,QAAA,QACX,yBAAW,QAAA,QACX,yBAAW,QAAA,QACX,+BAAW,QAAA,QACX,uBAAW,QAAA,QACX,6BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,uBAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,2BAAW,QAAA,QACX,0BAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,4BAAW,QAAA,QACX,mCAAW,QAAA,QACX,4BAAW,QAAA,QACX,oCAAW,QAAA,QACX,kCAAW,QAAA,QACX,iCAAW,QAAA,QACX,+BAAW,QAAA,QACX,sBAAW,QAAA,QACX,wBAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,kCAAW,QAAA,QACX,mCAAW,QAAA,QACX,sCAAW,QAAA,QACX,0CAAW,QAAA,QACX,oCAAW,QAAA,QACX,wCAAW,QAAA,QACX,qCAAW,QAAA,QACX,iCAAW,QAAA,QACX,gCAAW,QAAA,QACX,kCAAW,QAAA,QACX,+BAAW,QAAA,QACX,0BAAW,QAAA,QACX,8BAAW,QAAA,QACX,4BAAW,QAAA,QACX,4BAAW,QAAA,QACX,6BAAW,QAAA,QACX,4BAAW,QAAA,QCtS/C,0BCgEE,QAAA,QHi+BF,EDNC,mBAAA,WGxhCI,gBAAiB,WFiiCZ,WAAY,WGl+BZ,OADL,QJg+BJ,mBAAA,WGthCI,gBAAiB,WACpB,WAAA,WHyhCD,KGrhCC,UAAW,KAEX,4BAAA,cAEA,KACA,YAAA,iBAAA,UAAA,MAAA,WHuhCD,UAAA,KGnhCC,YAAa,WF4hCb,MAAO,KACP,iBAAkB,KExhClB,OADA,MAEA,OHqhCD,SG/gCC,YAAa,QACb,UAAA,QACA,YAAA,QAEA,EFwhCA,MAAO,QEthCL,gBAAA,KAIF,QH8gCD,QKnkCC,MAAA,QAEA,gBAAA,ULskCD,QGxgCC,QAAS,KAAK,OACd,QAAA,IAAA,KAAA,yBH0gCD,eAAA,KGngCC,OHsgCD,OAAA,ECSD,IACE,eAAgB,ODDjB,4BMhlCC,0BLmlCF,gBKplCE,iBADA,eH4EA,QAAS,MACT,UAAA,KHwgCD,OAAA,KGjgCC,aACA,cAAA,IAEA,eACA,QAAA,aC6FA,UAAA,KACK,OAAA,KACG,QAAA,IEvLR,YAAA,WACA,iBAAA,KACA,OAAA,IAAA,MAAA,KNgmCD,cAAA,IGlgCC,mBAAoB,IAAI,IAAI,YAC5B,cAAA,IAAA,IAAA,YHogCD,WAAA,IAAA,IAAA,YG7/BC,YACA,cAAA,IAEA,GHggCD,WAAA,KGx/BC,cAAe,KACf,OAAA,EACA,WAAA,IAAA,MAAA,KAEA,SACA,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EH0/BD,OAAA,KGl/BC,SAAA,OF2/BA,KAAM,cEz/BJ,OAAA,EAEA,0BACA,yBACA,SAAA,OACA,MAAA,KHo/BH,OAAA,KGz+BC,OAAQ,EACR,SAAA,QH2+BD,KAAA,KCSD,cACE,OAAQ,QAQV,IACA,IMnpCE,IACA,IACA,IACA,INyoCF,GACA,GACA,GACA,GACA,GACA,GDAC,YAAA,QOnpCC,YAAa,IN4pCb,YAAa,IACb,MAAO,QAoBT,WAZA,UAaA,WAZA,UM7pCI,WN8pCJ,UM7pCI,WN8pCJ,UM7pCI,WN8pCJ,UDMC,WCLD,UACA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SAaA,UAZA,SMrpCE,YAAa,INyqCb,YAAa,EACb,MAAO,KAGT,IMzqCE,IAJF,IN4qCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UM7qCA,WN+qCA,UACA,UANA,SM7qCI,UN+qCJ,SM5qCA,UN8qCA,SAQE,UAAW,IAGb,IMrrCE,IAJF,INwrCA,GAEA,GDLC,GCSC,WAAY,KACZ,cAAe,KASjB,WANA,UDCC,WCCD,UMxrCA,WN0rCA,UACA,UANA,SMzrCI,UN2rCJ,SMvrCA,UNyrCA,SMzrCU,UAAA,IACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,KAOR,IADF,GPusCC,UAAA,KCSD,EM1sCE,OAAA,EAAA,EAAA,KAEA,MPqsCD,cAAA,KOhsCC,UAAW,KAwOX,YAAa,IA1OX,YAAA,IPusCH,yBO9rCC,MNusCE,UAAW,MMlsCf,OAAA,MAEE,UAAA,IAKF,MP2rCC,KO3rCsB,QAAA,KP8rCtB,iBAAA,QO7rCsB,WPgsCtB,WAAA,KO/rCsB,YPksCtB,WAAA,MOjsCsB,aPosCtB,WAAA,OOnsCsB,cPssCtB,WAAA,QOnsCsB,aPssCtB,YAAA,OOrsCsB,gBPwsCtB,eAAA,UOvsCsB,gBP0sCtB,eAAA,UOtsCC,iBPysCD,eAAA,WQ5yCC,YR+yCD,MAAA,KCSD,cOrzCI,MAAA,QAHF,qBDwGF,qBP8sCC,MAAA,QCSD,cO5zCI,MAAA,QAHF,qBD2GF,qBPktCC,MAAA,QCSD,WOn0CI,MAAA,QAHF,kBD8GF,kBPstCC,MAAA,QCSD,cO10CI,MAAA,QAHF,qBDiHF,qBP0tCC,MAAA,QCSD,aOj1CI,MAAA,QDwHF,oBAHF,oBExHE,MAAA,QACA,YR21CA,MAAO,KQz1CL,iBAAA,QAHF,mBF8HF,mBP4tCC,iBAAA,QCSD,YQh2CI,iBAAA,QAHF,mBFiIF,mBPguCC,iBAAA,QCSD,SQv2CI,iBAAA,QAHF,gBFoIF,gBPouCC,iBAAA,QCSD,YQ92CI,iBAAA,QAHF,mBFuIF,mBPwuCC,iBAAA,QCSD,WQr3CI,iBAAA,QF6IF,kBADF,kBAEE,iBAAA,QPuuCD,aO9tCC,eAAgB,INuuChB,OAAQ,KAAK,EAAE,KMruCf,cAAA,IAAA,MAAA,KAFF,GPmuCC,GCSC,WAAY,EACZ,cAAe,KM/tCf,MP2tCD,MO5tCD,MAPI,MASF,cAAA,EAIF,eALE,aAAA,EACA,WAAA,KPmuCD,aO/tCC,aAAc,EAKZ,YAAA,KACA,WAAA,KP8tCH,gBOxtCC,QAAS,aACT,cAAA,IACA,aAAA,IAEF,GNiuCE,WAAY,EM/tCZ,cAAA,KAGA,GADF,GP2tCC,YAAA,WOvtCC,GP0tCD,YAAA,IOpnCD,GAvFM,YAAA,EAEA,yBACA,kBGtNJ,MAAA,KACA,MAAA,MACA,SAAA,OVs6CC,MAAA,KO9nCC,WAAY,MAhFV,cAAA,SPitCH,YAAA,OOvsCD,kBNitCE,YAAa,OM3sCjB,0BPusCC,YOtsCC,OAAA,KA9IqB,cAAA,IAAA,OAAA,KAmJvB,YACE,UAAA,IACA,eAAA,UAEA,WPusCD,QAAA,KAAA,KOlsCG,OAAA,EAAA,EAAA,KN2sCF,UAAW,OACX,YAAa,IAAI,MAAM,KMrtCzB,yBPgtCC,wBOhtCD,yBN0tCE,cAAe,EMpsCb,kBAFA,kBACA,iBPmsCH,QAAA,MOhsCG,UAAA,INysCF,YAAa,WACb,MAAO,KMjsCT,yBP4rCC,yBO5rCD,wBAEE,QAAA,cAEA,oBACA,sBACA,cAAA,KP8rCD,aAAA,EOxrCG,WAAA,MNisCF,aAAc,IAAI,MAAM,KACxB,YAAa,EMjsCX,kCNmsCJ,kCMpsCe,iCACX,oCNosCJ,oCDLC,mCCUC,QAAS,GMlsCX,iCNosCA,iCM1sCM,gCAOJ,mCNosCF,mCDLC,kCO9rCC,QAAA,cPmsCD,QWx+CC,cAAe,KVi/Cf,WAAY,OACZ,YAAa,WU9+Cb,KX0+CD,IWt+CD,IACE,KACA,YAAA,MAAA,OAAA,SAAA,cAAA,UAEA,KACA,QAAA,IAAA,IXw+CD,UAAA,IWp+CC,MAAO,QACP,iBAAA,QACA,cAAA,IAEA,IACA,QAAA,IAAA,IACA,UAAA,IV6+CA,MU7+CA,KXs+CD,iBAAA,KW5+CC,cAAe,IASb,mBAAA,MAAA,EAAA,KAAA,EAAA,gBACA,WAAA,MAAA,EAAA,KAAA,EAAA,gBAEA,QV8+CF,QU9+CE,EXs+CH,UAAA,KWj+CC,YAAa,IACb,mBAAA,KACA,WAAA,KAEA,IACA,QAAA,MACA,QAAA,MACA,OAAA,EAAA,EAAA,KACA,UAAA,KACA,YAAA,WACA,MAAA,KACA,WAAA,UXm+CD,UAAA,WW9+CC,iBAAkB,QAehB,OAAA,IAAA,MAAA,KACA,cAAA,IAEA,SACA,QAAA,EACA,UAAA,QXk+CH,MAAA,QW79CC,YAAa,SACb,iBAAA,YACA,cAAA,EC1DF,gBCHE,WAAA,MACA,WAAA,OAEA,Wb+hDD,cAAA,KYzhDC,aAAA,KAqEA,aAAc,KAvEZ,YAAA,KZgiDH,yBY3hDC,WAkEE,MAAO,OZ89CV,yBY7hDC,WA+DE,MAAO,OZm+CV,0BY1hDC,WCvBA,MAAA,QAGA,iBbojDD,cAAA,KYvhDC,aAAc,KCvBd,aAAA,KACA,YAAA,KCAE,KACE,aAAA,MAEA,YAAA,MAGA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UdijDL,SAAA,ScjiDG,WAAA,IACE,cAAA,KdmiDL,aAAA,Kc3hDG,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud8hDH,MAAA,Kc9hDG,WdiiDH,MAAA,KcjiDG,WdoiDH,MAAA,acpiDG,WduiDH,MAAA,acviDG,Ud0iDH,MAAA,Ic1iDG,Ud6iDH,MAAA,ac7iDG,UdgjDH,MAAA,achjDG,UdmjDH,MAAA,IcnjDG,UdsjDH,MAAA,actjDG,UdyjDH,MAAA,aczjDG,Ud4jDH,MAAA,Ic5jDG,Ud+jDH,MAAA,achjDG,UdmjDH,MAAA,YcnjDG,gBdsjDH,MAAA,KctjDG,gBdyjDH,MAAA,aczjDG,gBd4jDH,MAAA,ac5jDG,ed+jDH,MAAA,Ic/jDG,edkkDH,MAAA,aclkDG,edqkDH,MAAA,acrkDG,edwkDH,MAAA,IcxkDG,ed2kDH,MAAA,ac3kDG,ed8kDH,MAAA,ac9kDG,edilDH,MAAA,IcjlDG,edolDH,MAAA,ac/kDG,edklDH,MAAA,YcjmDG,edomDH,MAAA,KcpmDG,gBdumDH,KAAA,KcvmDG,gBd0mDH,KAAA,ac1mDG,gBd6mDH,KAAA,ac7mDG,edgnDH,KAAA,IchnDG,edmnDH,KAAA,acnnDG,edsnDH,KAAA,actnDG,edynDH,KAAA,IcznDG,ed4nDH,KAAA,ac5nDG,ed+nDH,KAAA,ac/nDG,edkoDH,KAAA,IcloDG,edqoDH,KAAA,achoDG,edmoDH,KAAA,YcpnDG,edunDH,KAAA,KcvnDG,kBd0nDH,YAAA,Kc1nDG,kBd6nDH,YAAA,ac7nDG,kBdgoDH,YAAA,achoDG,iBdmoDH,YAAA,IcnoDG,iBdsoDH,YAAA,actoDG,iBdyoDH,YAAA,aczoDG,iBd4oDH,YAAA,Ic5oDG,iBd+oDH,YAAA,ac/oDG,iBdkpDH,YAAA,aclpDG,iBdqpDH,YAAA,IcrpDG,iBdwpDH,YAAA,acxpDG,iBd2pDH,YAAA,Yc7rDG,iBACE,YAAA,EAOJ,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Ud2rDD,MAAA,Kc3rDC,Wd8rDD,MAAA,Kc9rDC,WdisDD,MAAA,acjsDC,WdosDD,MAAA,acpsDC,UdusDD,MAAA,IcvsDC,Ud0sDD,MAAA,ac1sDC,Ud6sDD,MAAA,ac7sDC,UdgtDD,MAAA,IchtDC,UdmtDD,MAAA,acntDC,UdstDD,MAAA,acttDC,UdytDD,MAAA,IcztDC,Ud4tDD,MAAA,ac7sDC,UdgtDD,MAAA,YchtDC,gBdmtDD,MAAA,KcntDC,gBdstDD,MAAA,acttDC,gBdytDD,MAAA,acztDC,ed4tDD,MAAA,Ic5tDC,ed+tDD,MAAA,ac/tDC,edkuDD,MAAA,acluDC,edquDD,MAAA,IcruDC,edwuDD,MAAA,acxuDC,ed2uDD,MAAA,ac3uDC,ed8uDD,MAAA,Ic9uDC,edivDD,MAAA,ac5uDC,ed+uDD,MAAA,Yc9vDC,ediwDD,MAAA,KcjwDC,gBdowDD,KAAA,KcpwDC,gBduwDD,KAAA,acvwDC,gBd0wDD,KAAA,ac1wDC,ed6wDD,KAAA,Ic7wDC,edgxDD,KAAA,achxDC,edmxDD,KAAA,acnxDC,edsxDD,KAAA,IctxDC,edyxDD,KAAA,aczxDC,ed4xDD,KAAA,ac5xDC,ed+xDD,KAAA,Ic/xDC,edkyDD,KAAA,ac7xDC,edgyDD,KAAA,YcjxDC,edoxDD,KAAA,KcpxDC,kBduxDD,YAAA,KcvxDC,kBd0xDD,YAAA,ac1xDC,kBd6xDD,YAAA,ac7xDC,iBdgyDD,YAAA,IchyDC,iBdmyDD,YAAA,acnyDC,iBdsyDD,YAAA,actyDC,iBdyyDD,YAAA,IczyDC,iBd4yDD,YAAA,ac5yDC,iBd+yDD,YAAA,ac/yDC,iBdkzDD,YAAA,IclzDC,iBdqzDD,YAAA,acrzDC,iBdwzDD,YAAA,YY/yDD,iBE3CE,YAAA,GAQF,yBACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udy1DD,MAAA,Kcz1DC,Wd41DD,MAAA,Kc51DC,Wd+1DD,MAAA,ac/1DC,Wdk2DD,MAAA,acl2DC,Udq2DD,MAAA,Icr2DC,Udw2DD,MAAA,acx2DC,Ud22DD,MAAA,ac32DC,Ud82DD,MAAA,Ic92DC,Udi3DD,MAAA,acj3DC,Udo3DD,MAAA,acp3DC,Udu3DD,MAAA,Icv3DC,Ud03DD,MAAA,ac32DC,Ud82DD,MAAA,Yc92DC,gBdi3DD,MAAA,Kcj3DC,gBdo3DD,MAAA,acp3DC,gBdu3DD,MAAA,acv3DC,ed03DD,MAAA,Ic13DC,ed63DD,MAAA,ac73DC,edg4DD,MAAA,ach4DC,edm4DD,MAAA,Icn4DC,eds4DD,MAAA,act4DC,edy4DD,MAAA,acz4DC,ed44DD,MAAA,Ic54DC,ed+4DD,MAAA,ac14DC,ed64DD,MAAA,Yc55DC,ed+5DD,MAAA,Kc/5DC,gBdk6DD,KAAA,Kcl6DC,gBdq6DD,KAAA,acr6DC,gBdw6DD,KAAA,acx6DC,ed26DD,KAAA,Ic36DC,ed86DD,KAAA,ac96DC,edi7DD,KAAA,acj7DC,edo7DD,KAAA,Icp7DC,edu7DD,KAAA,acv7DC,ed07DD,KAAA,ac17DC,ed67DD,KAAA,Ic77DC,edg8DD,KAAA,ac37DC,ed87DD,KAAA,Yc/6DC,edk7DD,KAAA,Kcl7DC,kBdq7DD,YAAA,Kcr7DC,kBdw7DD,YAAA,acx7DC,kBd27DD,YAAA,ac37DC,iBd87DD,YAAA,Ic97DC,iBdi8DD,YAAA,acj8DC,iBdo8DD,YAAA,acp8DC,iBdu8DD,YAAA,Icv8DC,iBd08DD,YAAA,ac18DC,iBd68DD,YAAA,ac78DC,iBdg9DD,YAAA,Ich9DC,iBdm9DD,YAAA,acn9DC,iBds9DD,YAAA,YY18DD,iBE9CE,YAAA,GAQF,0BACE,UAAA,WAAA,WAAA,WAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,UAAA,Udu/DD,MAAA,Kcv/DC,Wd0/DD,MAAA,Kc1/DC,Wd6/DD,MAAA,ac7/DC,WdggED,MAAA,achgEC,UdmgED,MAAA,IcngEC,UdsgED,MAAA,actgEC,UdygED,MAAA,aczgEC,Ud4gED,MAAA,Ic5gEC,Ud+gED,MAAA,ac/gEC,UdkhED,MAAA,aclhEC,UdqhED,MAAA,IcrhEC,UdwhED,MAAA,aczgEC,Ud4gED,MAAA,Yc5gEC,gBd+gED,MAAA,Kc/gEC,gBdkhED,MAAA,aclhEC,gBdqhED,MAAA,acrhEC,edwhED,MAAA,IcxhEC,ed2hED,MAAA,ac3hEC,ed8hED,MAAA,ac9hEC,ediiED,MAAA,IcjiEC,edoiED,MAAA,acpiEC,eduiED,MAAA,acviEC,ed0iED,MAAA,Ic1iEC,ed6iED,MAAA,acxiEC,ed2iED,MAAA,Yc1jEC,ed6jED,MAAA,Kc7jEC,gBdgkED,KAAA,KchkEC,gBdmkED,KAAA,acnkEC,gBdskED,KAAA,actkEC,edykED,KAAA,IczkEC,ed4kED,KAAA,ac5kEC,ed+kED,KAAA,ac/kEC,edklED,KAAA,IcllEC,edqlED,KAAA,acrlEC,edwlED,KAAA,acxlEC,ed2lED,KAAA,Ic3lEC,ed8lED,KAAA,aczlEC,ed4lED,KAAA,Yc7kEC,e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pC,cAGA,ejB8DA,wBACQ,OAAA,YJ65FT,OAAA,kBmB56FG,mBAAA,KlBw7FM,WAAY,KkBt7FhB,QAAA,IASN,eC3DE,yBACA,eAAA,KpBo+FD,aoBj+FC,MAAA,KnB6+FA,iBAAkB,KmB3+FhB,aAAA,KpBq+FH,mBoBn+FO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBo+FH,mBoBj+FC,MAAA,KnB6+FA,iBAAkB,QAClB,aAAc,QmBz+FR,oBADJ,oBpBo+FH,mCoBj+FG,MAAA,KnB6+FF,iBAAkB,QAClB,aAAc,QmBz+FN,0BnB++FV,0BAHA,0BmB7+FM,0BnB++FN,0BAHA,0BDFC,yCoB3+FK,yCnB++FN,yCmB1+FE,MAAA,KnBk/FA,iBAAkB,QAClB,aAAc,QmB3+FZ,oBpBm+FH,oBoBn+FG,mCnBg/FF,iBAAkB,KmB5+FV,4BnBi/FV,4BAHA,4BDHC,6BCOD,6BAHA,6BkB99FA,sCClBM,sCnBi/FN,sCmB3+FI,iBAAA,KACA,aAAA,KDcJ,oBC9DE,MAAA,KACA,iBAAA,KpB6hGD,aoB1hGC,MAAA,KnBsiGA,iBAAkB,QmBpiGhB,aAAA,QpB8hGH,mBoB5hGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB6hGH,mBoB1hGC,MAAA,KnBsiGA,iBAAkB,QAClB,aAAc,QmBliGR,oBADJ,oBpB6hGH,mCoB1hGG,MAAA,KnBsiGF,iBAAkB,QAClB,aAAc,QmBliGN,0BnBwiGV,0BAHA,0BmBtiGM,0BnBwiGN,0BAHA,0BDFC,yCoBpiGK,yCnBwiGN,yCmBniGE,MAAA,KnB2iGA,iBAAkB,QAClB,aAAc,QmBpiGZ,oBpB4hGH,oBoB5hGG,mCnByiGF,iBAAkB,KmBriGV,4BnB0iGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBphGA,sCCrBM,sCnB0iGN,sCmBpiGI,iBAAA,QACA,aAAA,QDkBJ,oBClEE,MAAA,QACA,iBAAA,KpBslGD,aoBnlGC,MAAA,KnB+lGA,iBAAkB,QmB7lGhB,aAAA,QpBulGH,mBoBrlGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBslGH,mBoBnlGC,MAAA,KnB+lGA,iBAAkB,QAClB,aAAc,QmB3lGR,oBADJ,oBpBslGH,mCoBnlGG,MAAA,KnB+lGF,iBAAkB,QAClB,aAAc,QmB3lGN,0BnBimGV,0BAHA,0BmB/lGM,0BnBimGN,0BAHA,0BDFC,yCoB7lGK,yCnBimGN,yCmB5lGE,MAAA,KnBomGA,iBAAkB,QAClB,aAAc,QmB7lGZ,oBpBqlGH,oBoBrlGG,mCnBkmGF,iBAAkB,KmB9lGV,4BnBmmGV,4BAHA,4BDHC,6BCOD,6BAHA,6BkBzkGA,sCCzBM,sCnBmmGN,sCmB7lGI,iBAAA,QACA,aAAA,QDsBJ,oBCtEE,MAAA,QACA,iBAAA,KpB+oGD,UoB5oGC,MAAA,KnBwpGA,iBAAkB,QmBtpGhB,aAAA,QpBgpGH,gBoB9oGO,gBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpB+oGH,gBoB5oGC,MAAA,KnBwpGA,iBAAkB,QAClB,aAAc,QmBppGR,iBADJ,iBpB+oGH,gCoB5oGG,MAAA,KnBwpGF,iBAAkB,QAClB,aAAc,QmBppGN,uBnB0pGV,uBAHA,uBmBxpGM,uBnB0pGN,uBAHA,uBDFC,sCoBtpGK,sCnB0pGN,sCmBrpGE,MAAA,KnB6pGA,iBAAkB,QAClB,aAAc,QmBtpGZ,iBpB8oGH,iBoB9oGG,gCnB2pGF,iBAAkB,KmBvpGV,yBnB4pGV,yBAHA,yBDHC,0BCOD,0BAHA,0BkB9nGA,mCC7BM,mCnB4pGN,mCmBtpGI,iBAAA,QACA,aAAA,QD0BJ,iBC1EE,MAAA,QACA,iBAAA,KpBwsGD,aoBrsGC,MAAA,KnBitGA,iBAAkB,QmB/sGhB,aAAA,QpBysGH,mBoBvsGO,mBAEN,MAAA,KACE,iBAAA,QACA,aAAA,QpBwsGH,mBoBrsGC,MAAA,KnBitGA,iBAAkB,QAClB,aAAc,QmB7sGR,oBADJ,oBpBwsGH,mCoBrsGG,MAAA,KnBitGF,iBAAkB,QAClB,aAAc,QmB7sGN,0BnBmtGV,0BAHA,0BmBjtGM,0BnBmtGN,0BAHA,0BDFC,yCoB/sGK,yCnBmtGN,yCmB9sGE,MAAA,KnBstGA,iBAAkB,QAClB,aAAc,QmB/sGZ,oBpBusGH,oBoBvsGG,mCnBotGF,iBAAkB,KmBh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mBAKJ,qBAEE,MAAA,QvBvCA,cACC,QAAA,KAAA,K3By0KF,iBAAA,QkDxxKC,WAAY,IAAI,MAAM,KjDozKtB,2BAA4B,IiDjzK1B,0BAAA,IAHJ,mBAAA,mCAMM,cAAA,ElD2xKL,oCkDtxKG,oDjDkzKF,aAAc,IAAI,EiDhzKZ,cAAA,EvBtEL,4D3Bg2KF,4EkDpxKG,WAAA,EjDgzKF,uBAAwB,IiD9yKlB,wBAAA,IvBtEL,0D3B81KF,0EkD7yKC,cAAe,EvB1Df,2BAAA,IACC,0BAAA,IuB0FH,+EAEI,uBAAA,ElDixKH,wBAAA,EkD7wKC,wDlDgxKD,iBAAA,EC4BD,0BACE,iBAAkB,EiDryKpB,8BlD6wKC,ckD7wKD,gCjD0yKE,cAAe,EiD1yKjB,sCAQM,sBlD2wKL,wCC4BC,cAAe,K0Bx5Kf,aAAA,KuByGF,wDlDwxKC,0BC4BC,uBAAwB,IACxB,wBAAyB,IiDrzK3B,yFAoBQ,yFlD2wKP,2DkD5wKO,2DjDwyKN,uBAAwB,IACxB,wBAAyB,IAK3B,wGiDj0KA,wGjD+zKA,wGDtBC,wGCuBD,0EiDh0KA,0EjD8zKA,0EiDtyKU,0EjD8yKR,uBAAwB,IAK1B,uGiD30KA,uGjDy0KA,uGDtBC,uGCuBD,yEiD10KA,yEjDw0KA,yEiD5yKU,yEvB7HR,wBAAA,IuBiGF,sDlDwzKC,yBC4BC,2BAA4B,IAC5B,0BAA2B,IiD3yKrB,qFA1CR,qFAyCQ,wDlDsxKP,wDC4BC,2BAA4B,IAC5B,0BAA2B,IAG7B,oGDtBC,oGCwBD,oGiDj2KA,oGjD81KA,uEiDhzKU,uEjDkzKV,uEiDh2KA,uEjDs2KE,0BAA2B,IAG7B,mGDtBC,mGCwBD,mGiD32KA,mGjDw2KA,sEiDtzKU,sEjDwzKV,sEiD12KA,sEjDg3KE,2BAA4B,IiDrzK1B,0BlD8xKH,qCkDz1KD,0BAAA,qCA+DI,WAAA,IAAA,MAAA,KA/DJ,kDAAA,kDAmEI,WAAA,EAnEJ,uBAAA,yCjD83KE,OAAQ,EiDpzKA,+CjDwzKV,+CiDl4KA,+CjDo4KA,+CAEA,+CANA,+CDjBC,iECoBD,iEiDn4KA,iEjDq4KA,iEAEA,iEANA,iEAWE,YAAa,EiD9zKL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1MG,QAAS,oB/Dm2MV,c+Dr2MC,c/Ds2MH,QAAA,sB+Dj2MG,yB/Dq2MD,kBACF,QAAA,iB+Dj2MG,yB/Dq2MD,mBACF,QAAA,kBgEn6MC,yBhEu6MC,yBgEt6MD,QAAA,wBACA,+CAAU,YhE26MT,QAAA,gBC4BD,iB+Dr8MU,QAAA,gBhE86MX,c+Dx2MG,QAAS,oB/D42MV,c+D92MC,c/D+2MH,QAAA,sB+D12MG,+C/D82MD,kBACF,QAAA,iB+D12MG,+C/D82MD,mBACF,QAAA,kBgEj8MC,+ChEq8MC,yBgEp8MD,QAAA,wBACA,gDAAU,YhEy8MT,QAAA,gBC4BD,iB+Dn+MU,QAAA,gBhE48MX,c+Dj3MG,QAAS,oB/Dq3MV,c+Dv3MC,c/Dw3MH,QAAA,sB+Dn3MG,gD/Du3MD,kBACF,QAAA,iB+Dn3MG,gD/Du3MD,mBACF,QAAA,kBgE/9MC,gDhEm+MC,yBgEl+MD,QAAA,wBACA,0BAAU,YhEu+MT,QAAA,gBC4BD,iB+DjgNU,QAAA,gBhE0+MX,c+D13MG,QAAS,oB/D83MV,c+Dh4MC,c/Di4MH,QAAA,sB+D53MG,0B/Dg4MD,kBACF,QAAA,iB+D53MG,0B/Dg4MD,mBACF,QAAA,kBgEr/MC,0BhEy/MC,yBACF,QAAA,wBgE1/MC,yBhE8/MC,WACF,QAAA,gBgE//MC,+ChEmgNC,WACF,QAAA,gBgEpgNC,gDhEwgNC,WACF,QAAA,gBAGA,0B+Dn3MC,WA4BE,QAAS,gBC5LX,eAAU,QAAA,eACV,aAAU,ehE4hNT,QAAA,gBC4BD,oB+DtjNU,QAAA,gBhE+hNX,iB+Dj4MG,QAAS,oBAMX,iB/D83MD,iB+Dz2MG,QAAS,sB/D82MZ,qB+Dl4MC,QAAS,e/Dq4MV,a+D/3MC,qBAcE,QAAS,iB/Ds3MZ,sB+Dn4MC,QAAS,e/Ds4MV,a+Dh4MC,sBAOE,QAAS,kB/D83MZ,4B+D/3MC,QAAS,eCpLT,ahEujNC,4BACF,QAAA,wBC6BD,aACE,cACE,QAAS"} |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html><html lang='zh-cn'><head><meta http-equiv='Content-Type' content='text/html;charset=UTF-8'><title>å
¥åºè¿ç£
å</title><style>body {text-align: center;padding: 10px} .tit {margin: 10px;font-size: 24px;font-family: 'å®ä½';padding-top: 15px} .div-tit {padding-top: 10px} table {width: 100%;border-right: 1px solid;border-bottom: 1px solid;font-size: 14px} table td {border-left: 1px solid;border-top: 1px solid;height: 38px} .sp1 {width: 50%;float: left;padding-bottom: 10px} .sp2 {width: 50%;float: left;text-align: center}</style></head><body><h1 class='tit'>ä½å±±å¸ç¦
ååºç²®é£äº§ä¸åå
¥åºç£
ç å</h1><div id=\"print_main\" class='div-tit'><span class='sp1'>宿æ¶é´ï¼<a>completeTime</a></span><span class='sp1'>åå·ï¼serId</span></div><table cellspacing='0' cellpadding='0'><tr><td width='12.5%'>åè´§åä½</td><td colspan='3' width='37.5%'>customerName</td><td width='12.5%'>æ¶è´§åä½</td><td colspan='3' `width`='37.5%'>deptName</td></tr><tr><td width='12.5%'>æ¿è¿äºº</td><td width='12.5%'>driverName</td><td width='12.5%'>ç²®é£åç§</td><td width='12.5%'>foodVariety</td><td width='12.5%'>è£
å¸ä»åº</td><td width='12.5%'>depotName</td><td width='12.5%'>ç²®é£äº§å°</td><td width='12.5%'>foodLocation</td></tr><tr><td>æ¿è¿è½¦ç</td><td>plateNum</td><td>æ¯é(KG)</td><td>fullWeight</td><td>ç®é(KG)</td><td>emptyWeight</td><td>åé(KG)</td><td>netWeight</td></tr><tr><td>è´¨æ£ç»æ</td><td>checkStatus</td><td>å
è£
æ£é(KG)</td><td>dePackage</td><td>å
¥åºéé(KG)</td><td>recordWeight</td><td>ç»ç®éé(KG)</td><td>settleWeight</td></tr><tr><td>ç»è®°æ¶é´</td><td colspan="3">registerTime</td><td>宿æ¶é´</td><td colspan="3">completeTime</td></tr><tr><td>夿³¨</td><td colspan='7'>remark</td></tr></table><div class='div-tit'><span class='sp2'>å¸ç£
åï¼</span></span><span class='sp2'>æ¿è¿äººï¼</span></div></br><div style="padding-top: 10px"><span></span></div><div style="text-align: left;font-size: 12px"><span>注ï¼</span></div><div style="text-align: left;font-size: 12px"><span>1.åé=æ¯é-ç®éï¼è´¨æ£å¢æ£éæ ¹æ®è´¨æ£è¯¦ç»å¡«åï¼</span></div><div style="text-align: left;font-size: 12px"><span>2.å
¥åºéé=åé-æ£éï¼ç»ç®éé=å
¥åºéé+è´¨æ£å¢éï¼</span></div><div style="text-align: left;font-size: 12px"><span>3.ç½èï¼åæ ¹ï¼ï¼çº¢èï¼è®°è´¦ï¼ï¼é»èï¼å®¢æ·ä¿çï¼</span></div></body></html> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!DOCTYPE html> |
| | | <html lang='zh-cn'> |
| | | <head> |
| | | <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'> |
| | | <title>åºåºç§°éå</title> |
| | | <style>body { |
| | | text-align: center; |
| | | padding: 10px |
| | | } |
| | | |
| | | .tit { |
| | | margin: 10px; |
| | | font-size: 24px; |
| | | font-family: 'å®ä½'; |
| | | padding-top: 15px |
| | | } |
| | | |
| | | .div-tit { |
| | | padding-top: 10px |
| | | } |
| | | |
| | | .sp1 { |
| | | width: 50%; |
| | | float: left; |
| | | padding-bottom: 10px |
| | | } |
| | | |
| | | .sp2 { |
| | | width: 25%; |
| | | float: left; |
| | | text-align: center |
| | | } |
| | | |
| | | table { |
| | | width: 100%; |
| | | border-right: 1px solid; |
| | | border-bottom: 1px solid; |
| | | font-size: 14px |
| | | } |
| | | |
| | | table td { |
| | | border-left: 1px solid; |
| | | border-top: 1px solid; |
| | | height: 38px |
| | | }</style> |
| | | </head> |
| | | <body><h1 class='tit'>billTitle</h1> |
| | | <div class='div-tit'><span class='sp1'>ç»è®°æ¶é´ï¼registerTime</span><span class='sp1'>åºåºåå·ï¼serId</span></div> |
| | | <table cellspacing='0' cellpadding='0'> |
| | | <tr> |
| | | <td width='12.5%'>åè´§åä½</td> |
| | | <td colspan='3' width='37.5%'>deptName</td> |
| | | <td width='12.5%'>æ¶è´§åä½</td> |
| | | <td colspan='3' width='37.5%'>customerName</td> |
| | | </tr> |
| | | <tr> |
| | | <td width='12.5%'>æ¿è¿äºº</td> |
| | | <td width='12.5%'>driverName</td> |
| | | <td width='12.5%'>ç²®é£åç§</td> |
| | | <td width='12.5%'>foodVariety</td> |
| | | <td width='12.5%'>åºåºä»åº</td> |
| | | <td width='12.5%'>depotName</td> |
| | | <td width='12.5%'>ç²®é£äº§å°</td> |
| | | <td width='12.5%'>foodLocation</td> |
| | | </tr> |
| | | <tr> |
| | | <td>æ¿è¿è½¦ç</td> |
| | | <td>plateNum</td> |
| | | <td>æ¯é(KG)</td> |
| | | <td>fullWeight</td> |
| | | <td>ç®é(KG)</td> |
| | | <td>emptyWeight</td> |
| | | <td>åé(KG)</td> |
| | | <td>netWeight</td> |
| | | </tr> |
| | | <tr> |
| | | <td>å
¶ä»æ£é(KG)</td> |
| | | <td>deOther</td> |
| | | <td>å¼ä»æ£é(KG)</td> |
| | | <td>deHandle</td> |
| | | <td>ç»ç®éé(KG)</td> |
| | | <td>settleWeight</td> |
| | | <td colspan="2"></td> |
| | | </tr> |
| | | <tr> |
| | | <td>夿³¨</td> |
| | | <td colspan='7'>remark</td> |
| | | </tr> |
| | | </table> |
| | | <div class='div-tit'><span class='sp2'>å¸ç£
åï¼</span><span class='sp2'>çç£
åï¼</span><span |
| | | class='sp2'>ä¿ç®¡åï¼handleUser</span><span class='sp2'>æ¿è¿äººï¼driverName</span></div> |
| | | <br></body> |
| | | <div style="padding-top: 10px"><span></span></div> |
| | | <div style="text-align: left;font-size: 12px"><span>注ï¼</span></div> |
| | | <div style="text-align: left;font-size: 12px"><span>1.åé=æ¯é-ç®éï¼</span></div> |
| | | <div style="text-align: left;font-size: 12px"><span>2.åºåºéé=åé-æ»æ£éï¼ç»ç®éé=åé-æ»æ£éï¼</span></div> |
| | | <div style="text-align: left;font-size: 12px |
| | | "><span>3.ç½èï¼åæ ¹ï¼ï¼çº¢èï¼è®°è´¦ï¼ï¼é»èï¼å®¢æ·ä¿çï¼</span></div> |
| | | </html> |