Commit ddebc7e5 by liulianglang

到案统计,案件类别

parent 2c2d7653
......@@ -4,7 +4,9 @@ import com.alibaba.excel.EasyExcel;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.codec.Charsets;
import org.springblade.founder.tjfx.entity.DwTjParam;
import org.springblade.founder.tjfx.entity.TbStAsj;
import org.springblade.founder.tjfx.entity.TbXwZbfzxyr;
import org.springblade.founder.tjfx.service.AjlbSysDictService;
import org.springblade.founder.tjfx.service.DwAjlbTjfxService;
import org.springblade.founder.utils.EasyUIPage;
import org.springblade.founder.utils.R;
......@@ -23,7 +25,8 @@ import java.util.Map;
public class DwAjlbTjfxController {
@Autowired
private DwAjlbTjfxService dwAjlbTjfxService;
@Autowired
private AjlbSysDictService ajlbSysDictService;
@PostMapping("/getAjlbTj")
@ApiOperation(value = "单位案件类别统计")
public R getAjlbTj(DwTjParam dwTjParam){
......@@ -35,17 +38,54 @@ public class DwAjlbTjfxController {
return R.error(e.getMessage());
}
}
// @PostMapping("/getAjlbTjByPid")
// @ApiOperation(value = "单位案件类别统计")
// public R getAjlbTjByPid(DwTjParam dwTjParam){
// try {
// Map<String, Object> rtMap = dwTjfxService.getDwTj(unitcode, kssj, jssj,ajzt,ajlbdm,xlajlbdm);
// return R.ok().data(rtMap);
// } catch (Exception e) {
// e.printStackTrace();
// return R.error(e.getMessage());
// }
// }
@PostMapping("/getAjlbTjByPid")
@ApiOperation(value = "单位案件类别统计")
public R getAjlbTjByPid(DwTjParam dwTjParam){
try {
Map<String, Object> rtMap = ajlbSysDictService.getAjlbTjByPid(dwTjParam);
return R.ok().data(rtMap);
} catch (Exception e) {
e.printStackTrace();
return R.error(e.getMessage());
}
}
@PostMapping("/getAjlbTjByPidTs")
@ApiOperation(value = "单位案件类别统计透视")
public R getAjlbTjByPidTs(DwTjParam dwTjParam){
try {
EasyUIPage easyUIPage = new EasyUIPage();
easyUIPage.setPage(dwTjParam.getPage());
easyUIPage.setPageParaOracle(dwTjParam.getLimit());
int begin = easyUIPage.getBegin();
int end = easyUIPage.getEnd();
dwTjParam.setBegin(begin);
dwTjParam.setEnd(end);
Map<String, Object> rtMap = ajlbSysDictService.getAjlbTjByPidTs(dwTjParam);
return R.ok().data(rtMap);
} catch (Exception e) {
e.printStackTrace();
return R.error(e.getMessage());
}
}
@RequestMapping("/exportgetAjlbTjByPidTs")
@ResponseBody
public void exportgetAjlbTjByPidTs(DwTjParam dwTjParam, HttpServletResponse response, HttpServletRequest request) throws IOException {
EasyUIPage easyUIPage = new EasyUIPage();
easyUIPage.setPage(1);
easyUIPage.setPageParaOracle(10000);
int begin = easyUIPage.getBegin();
int end = easyUIPage.getEnd();
dwTjParam.setBegin(begin);
dwTjParam.setEnd(end);
Map<String, Object> rtMap = ajlbSysDictService.getAjlbTjByPidTs(dwTjParam);
List<TbStAsj> list =(List<TbStAsj>)rtMap.get("rows");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding(Charsets.UTF_8.name());
String fileName = URLEncoder.encode("案件列表", Charsets.UTF_8.name());
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), TbStAsj.class).sheet("案件列表").doWrite(list);
}
@PostMapping("/getXlAjlbTj")
......
......@@ -19,4 +19,6 @@ public class DictitemXz {
private String nameSj;
private String lev;
private String num;
}
......@@ -6,8 +6,8 @@ import lombok.Data;
public class DwDaztTj {
private String dwdm;
private String dwmc;
private int daztda;//案件总
private int daztsw;//案件总
private int daztzt;//案件总
private int daztda;//嫌疑人到案数
private int daztsw;//嫌疑人死亡数
private int daztzt;//嫌疑人在逃数
private String qryType;
}
......@@ -2,6 +2,8 @@ package org.springblade.founder.tjfx.entity;
import lombok.Data;
import java.util.List;
@Data
public class DwTjParam {
private String unitcode;
......@@ -16,4 +18,6 @@ public class DwTjParam {
private int limit;
private int end;
private int begin;
private List<String> lbs;
}
......@@ -5,7 +5,7 @@
<select id="getAjlbByCode" resultType="org.springblade.founder.tjfx.entity.DictitemXz">
select dict.name as name, dict.code as code,
(case when (select count(1) from sys_dictitem s where s.pid=dict.code and s.scbz='0')>0 then 'yxj' else 'mxj' end) lev
(case when (select count(1) from sys_dictitem s where s.pid=dict.code and s.scbz='0' and groupid='CODE_AJLB')>0 then 'yxj' else 'mxj' end) lev
from sys_dictitem dict
where dict.scbz='0' and groupid='CODE_AJLB'
......
package org.springblade.founder.tjfx.mapper;
import com.baomidou.dynamic.datasource.annotation.DS;
import org.apache.ibatis.annotations.Mapper;
import org.springblade.founder.tjfx.entity.*;
import org.springframework.stereotype.Component;
......@@ -9,6 +10,7 @@ import java.util.Map;
@Component
@Mapper
@DS("xzxt")
public interface DwAjlbTjfxMapper {
List<AjtjResult> getAjlbTj(DwTjParam dwTjParam);
......
......@@ -3,12 +3,38 @@
<mapper namespace="org.springblade.founder.tjfx.mapper.DwAjlbTjfxMapper">
<select id="getAjlbTj" resultType="org.springblade.founder.tjfx.entity.AjtjResult">
select (case when asj.ajlbdm is null then '未知' else asj.ajlbdm end) code,
select asj.ajlbdm code,
(SELECT name FROM sys_dictitem WHERE groupid = 'CODE_AJLB' AND code = asj.ajlbdm) as name,
count(1) as num
from TB_ST_ASJ asj
where asj.xxsc_pdbz='0'
<include refid="asjQry-where"/>
<if test="kssj != null and kssj != ''">
AND ASJ.LARQ <![CDATA[>=]]> to_date(#{kssj, jdbcType=VARCHAR},'yyyy-mm-dd')
</if>
<if test="jssj != null and jssj != ''">
AND ASJ.LARQ <![CDATA[<]]> to_date(#{jssj, jdbcType=VARCHAR},'yyyy-mm-dd ') +1
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '1'.toString() ">
and ASJ.ZCJDDM = '0400'
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '2'.toString() ">
and asj.ZCJDDM in ('0600','0700','0800')
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '3'.toString() ">
and asj.ZCJDDM in ('0100','0200','0300','0301','0302','0400','0500')
</if>
<if test="qryType == 'bdw'">
and ASJ.LADW_GAJGJGDM = #{unitcode}
</if>
<if test="qryType == 'bxq'">
and ASJ.LADW_GAJGJGDM in (select code from sys_dictitem_xz where code_lev1 =#{unitcode} or
code_lev2 =#{unitcode} or code_lev3 =#{unitcode}
or code_lev4 =#{unitcode} or code_lev5 =#{unitcode})
</if>
group by asj.ajlbdm
order by asj.ajlbdm
</select>
......@@ -16,7 +42,7 @@
<select id="getXlAjlbTj" resultType="org.springblade.founder.tjfx.entity.AjtjResult">
select (case when asj.zatz_jyqk is null then '未知' else asj.zatz_jyqk end) code,
select asj.zatz_jyqk code,
(SELECT name FROM sys_dictitem WHERE groupid = 'CODE_AJXZ' AND code = asj.zatz_jyqk) as name,
count(1) as num,'2' as lev,#{ajlbdm , jdbcType=VARCHAR} as sjcode
from TB_ST_ASJ asj
......@@ -33,8 +59,41 @@
<include refid="aj-common-column"/>
from tb_st_asj asj
where asj.xxsc_pdbz='0'
<include refid="asjQry-where"/>
<if test="kssj != null and kssj != ''">
AND ASJ.LARQ <![CDATA[>=]]> to_date(#{kssj, jdbcType=VARCHAR},'yyyy-mm-dd')
</if>
<if test="jssj != null and jssj != ''">
AND ASJ.LARQ <![CDATA[<]]> to_date(#{jssj, jdbcType=VARCHAR},'yyyy-mm-dd ') +1
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '1'.toString() ">
and ASJ.ZCJDDM = '0400'
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '2'.toString() ">
and asj.ZCJDDM in ('0600','0700','0800')
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '3'.toString() ">
and asj.ZCJDDM in ('0100','0200','0300','0301','0302','0400','0500')
</if>
<if test="qryType == 'bdw'">
and ASJ.LADW_GAJGJGDM = #{unitcode}
</if>
<if test="qryType == 'bxq'">
and ASJ.LADW_GAJGJGDM in (select code from sys_dictitem_xz where code_lev1 =#{unitcode} or
code_lev2 =#{unitcode} or code_lev3 =#{unitcode}
or code_lev4 =#{unitcode} or code_lev5 =#{unitcode})
</if>
<if test="lbs != null and lbs.size() > 0">
and
asj.ajlbdm in
<foreach collection="lbs" item="dw" separator="," open="(" close=")">
#{dw,jdbcType=VARCHAR}
</foreach>
</if>
order by asj.larq desc
<include refid="pagination-tail" />
......@@ -44,7 +103,41 @@
count(1)
from tb_st_asj asj
where asj.xxsc_pdbz='0'
<include refid="asjQry-where"/>
<if test="kssj != null and kssj != ''">
AND ASJ.LARQ <![CDATA[>=]]> to_date(#{kssj, jdbcType=VARCHAR},'yyyy-mm-dd')
</if>
<if test="jssj != null and jssj != ''">
AND ASJ.LARQ <![CDATA[<]]> to_date(#{jssj, jdbcType=VARCHAR},'yyyy-mm-dd ') +1
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '1'.toString() ">
and ASJ.ZCJDDM = '0400'
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '2'.toString() ">
and asj.ZCJDDM in ('0600','0700','0800')
</if>
<if test="ajzt != null and ajzt != '' and ajzt == '3'.toString() ">
and asj.ZCJDDM in ('0100','0200','0300','0301','0302','0400','0500')
</if>
<if test="qryType == 'bdw'">
and ASJ.LADW_GAJGJGDM = #{unitcode}
</if>
<if test="qryType == 'bxq'">
and ASJ.LADW_GAJGJGDM in (select code from sys_dictitem_xz where code_lev1 =#{unitcode} or
code_lev2 =#{unitcode} or code_lev3 =#{unitcode}
or code_lev4 =#{unitcode} or code_lev5 =#{unitcode})
</if>
<if test="lbs != null and lbs.size() > 0">
and
asj.ajlbdm in
<foreach collection="lbs" item="dw" separator="," open="(" close=")">
#{dw,jdbcType=VARCHAR}
</foreach>
</if>
</select>
<select id="getDwXyrDaztTj" resultType="org.springblade.founder.tjfx.entity.DwDaztTj">
......@@ -55,6 +148,7 @@
where ASJ.xxsc_pdbz = '0'
and xyr.xxsc_pdbz = '0'
and xyr.ZHFZXYR_FZXYRDAZTDM = '1'
and (asj.ajlbdm like '0400%' or asj.ajlbdm like '0500%')
<include refid="asjQry-where"/>
) daztda,
......@@ -65,6 +159,7 @@
where ASJ.xxsc_pdbz = '0'
and xyr.xxsc_pdbz = '0'
and xyr.ZHFZXYR_FZXYRDAZTDM = '2'
and (asj.ajlbdm like '0400%' or asj.ajlbdm like '0500%')
<include refid="asjQry-where"/>
) daztzt,
......@@ -75,6 +170,7 @@
where ASJ.xxsc_pdbz = '0'
and xyr.xxsc_pdbz = '0'
and xyr.ZHFZXYR_FZXYRDAZTDM = '3'
and (asj.ajlbdm like '0400%' or asj.ajlbdm like '0500%')
<include refid="asjQry-where"/>
) daztsw
......@@ -96,7 +192,7 @@ from dual
xyr.ZHFZXYR_FZXYRDAZTDM=d.code) zhfzxyrFzxyrdaztdm,
to_char(xyr.ZHRQ,'yyyy-mm-dd') zhrqstr
from tb_xw_zbfzxyr xyr left join tb_st_asj ASJ on xyr.asjbh = ASJ.asjbh
where asj.xxsc_pdbz='0' and xyr.xxsc_pdbz='0'
where asj.xxsc_pdbz='0' and xyr.xxsc_pdbz='0' and (asj.ajlbdm like '0400%' or asj.ajlbdm like '0500%')
<if test="tjlb != null and tjlb != '' and tjlb == 'daztda'.toString() ">
and xyr.ZHFZXYR_FZXYRDAZTDM = '1'
</if>
......@@ -116,7 +212,7 @@ from dual
SELECT
count(1)
from tb_xw_zbfzxyr xyr left join tb_st_asj ASJ on xyr.asjbh = ASJ.asjbh
where asj.xxsc_pdbz='0' and xyr.xxsc_pdbz='0'
where asj.xxsc_pdbz='0' and xyr.xxsc_pdbz='0' and (asj.ajlbdm like '0400%' or asj.ajlbdm like '0500%')
<if test="tjlb != null and tjlb != '' and tjlb == 'daztda'.toString() ">
and xyr.ZHFZXYR_FZXYRDAZTDM = '1'
</if>
......
......@@ -6,5 +6,7 @@ import java.util.Map;
public interface AjlbSysDictService {
Map<String, Object> getAjlbTjByPid(DwTjParam dwTjParam);
Map<String, Object> getAjlbTjByPidTs(DwTjParam dwTjParam);
}
......@@ -13,6 +13,8 @@ public interface DwAjlbTjfxService {
Map<String, Object> getXlAjlbTjTs(DwTjParam dwTjParam);
Map<String, Object> getDwXyrDaztTj(DwTjParam dwTjParam);
Map<String, Object> getDwXyrDaztTjTs(DwTjParam dwTjParam);
......
......@@ -2,11 +2,11 @@ package org.springblade.founder.tjfx.service.impl;
import org.apache.commons.lang.StringUtils;
import org.springblade.core.secure.utils.SecureUtil;
import org.springblade.founder.tjfx.entity.DictitemXz;
import org.springblade.founder.tjfx.entity.DwTjParam;
import org.springblade.founder.tjfx.entity.DwXnpgTj;
import org.springblade.founder.tjfx.entity.*;
import org.springblade.founder.tjfx.mapper.AjlbSysDictMapper;
import org.springblade.founder.tjfx.mapper.DwAjlbTjfxMapper;
import org.springblade.founder.tjfx.service.AjlbSysDictService;
import org.springblade.founder.tjfx.service.DwAjlbTjfxService;
import org.springblade.modules.system.entity.XzxtUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
......@@ -20,6 +20,10 @@ import java.util.stream.Collectors;
public class AjlbSysDictServiceImpl implements AjlbSysDictService {
@Autowired
private AjlbSysDictMapper ajlbSysDictMapper;
@Autowired
private DwAjlbTjfxService dwAjlbTjfxService;
@Autowired
private DwAjlbTjfxMapper dwAjlbTjfxMapper;
@Override
public Map<String, Object> getAjlbTjByPid(DwTjParam dwTjParam) {
Map<String, Object> rtMap = new HashMap<>();
......@@ -38,125 +42,106 @@ public class AjlbSysDictServiceImpl implements AjlbSysDictService {
unitcode = xzxtUser.getUnitcode();//获取对应用户的单位
}
System.out.println(unitcode);
paramMap.put("unitcode", unitcode);
paramMap.put("kssj", kssj);
paramMap.put("jssj", jssj);
paramMap.put("ajzt", ajzt);
paramMap.put("ajlbdm", ajlbdm);
paramMap.put("xlajlbdm", xlajlbdm);
dwTjParam.setUnitcode(unitcode);
if(StringUtils.isEmpty(ajlbdm)){
pid="true";
}else {
pid=ajlbdm;
}
List<DictitemXz> unitList = ajlbSysDictMapper.getAjlbByCode(pid);
Map<String, Object> results=dwAjlbTjfxService.getAjlbTj(dwTjParam);
Map<String, String> resultMap=new HashMap<>();
List<AjtjResult> dalist=(List<AjtjResult>)results.get("rows");
if (dalist != null && dalist.size() > 0) {
// for (AjtjResult item : dalist) {
// map.put(String.valueOf(item.getMonthName()), item.getFaNum());
// }
resultMap=dalist.stream().collect(Collectors.toMap(AjtjResult::getCode, AjtjResult::getNum));
}
for(DictitemXz xz:unitList){
if("yxj".equals(xz.getLev())){
int xjzs=0;
List<DictitemXz> xjajlbs = ajlbSysDictMapper.getAjlbByCode(xz.getCode());
for(DictitemXz xjs:xjajlbs){
if("yxj".equals(xjs.getLev())){
List<DictitemXz> xxjajlbs = ajlbSysDictMapper.getAjlbByCode(xjs.getCode());
for(DictitemXz xxjs:xxjajlbs){
xjzs+=Integer.parseInt(resultMap.get(xxjs.getCode())!= null ?resultMap.get(xxjs.getCode()): "0");
}
xjzs+=Integer.parseInt(resultMap.get(xjs.getCode())!= null ?resultMap.get(xjs.getCode()): "0");
}else {
xjzs+=Integer.parseInt(resultMap.get(xjs.getCode())!= null ?resultMap.get(xjs.getCode()): "0");
}
}
xjzs+=Integer.parseInt(resultMap.get(xz.getCode())!= null ?resultMap.get(xz.getCode()): "0");
xz.setNum(String.valueOf(xjzs));
}else{
xz.setNum(resultMap.get(xz.getCode())!= null ?resultMap.get(xz.getCode()): "0");
}
}
List<DictitemXz> unit1=new ArrayList<>();
List<DictitemXz> unit2=new ArrayList<>();
int ajts=0;//案件总量
int cjsswpajs=0;//采集损失物品案件量
int wcjsswpajs=0;//未采集损失物品案件量
int cssswpsl=0;//采集损失物品数量
int cjxyrajl=0;//采集嫌疑人案件量
int wcjxyrajl=0;//未采集嫌疑人案件量
int cjxyrsl=0;//采集嫌疑人数量
int cjshrajl=0;//采集受害人案件量
int wcjshrajl=0;//未采集受害人案件量
int cjshrsl=0;//采集受害人数量
Lock lock = new ReentrantLock();
// if(unitList!=null && unitList.size()>0){
// if(unitList.size()<2){
// unit1=unitList.subList(0,1);
// unit1.stream().parallel().forEach(item -> {
//
// String dwdm = item.getCode();
// String dwmc = item.getName();
// String dwtype="";
// paramMap.put("unitcode", dwdm);
// paramMap.put("qryType", "bdw");
// dwtype= "bdw";
//
// DwXnpgTj dwXnpgTj = dwTjfxMapper.getDwTjFx(paramMap);
//
// dwXnpgTj.setDwdm(dwdm);
// dwXnpgTj.setDwmc(dwmc);
// dwXnpgTj.setQryType(dwtype);
// lock.lock();
// try {
// dataList.add(dwXnpgTj);
// }finally {
// lock.unlock();
// }
//
// });
// }else {
// unit1=unitList.subList(0,1);
// unit2=unitList.subList(1,unitList.size());
// unit1.stream().parallel().forEach(item -> {
// Map<String, Object> paramet=new HashMap<>();
// String dwdm = item.getCode();
// String dwmc = item.getName();
// String dwtype="";
// paramet.putAll(paramMap);
// paramet.put("unitcode", dwdm);
// paramet.put("qryType", "bdw");
// dwtype= "bdw";
//
// DwXnpgTj dwXnpgTj = dwTjfxMapper.getDwTjFx(paramet);
//
// dwXnpgTj.setDwdm(dwdm);
// dwXnpgTj.setDwmc(dwmc);
// dwXnpgTj.setQryType(dwtype);
// lock.lock();
// try {
// dataList.add(dwXnpgTj);
// }finally {
// lock.unlock();
// }
//
// });
// unit2.stream().parallel().forEach(item -> {
//
//
// Map<String, Object> paramet=new HashMap<>();
// String dwdm = item.getCode();
// String dwmc = item.getName();
// String dwtype="";
// paramet.putAll(paramMap);
// paramet.put("unitcode", dwdm);
// paramet.put("qryType", "bxq");
// dwtype= "bxq";
//
// DwXnpgTj dwXnpgTj = dwTjfxMapper.getDwTjFx(paramet);
//
// dwXnpgTj.setDwdm(dwdm);
// dwXnpgTj.setDwmc(dwmc);
// dwXnpgTj.setQryType(dwtype);
// lock.lock();
// try {
// dataList.add(dwXnpgTj);
// }finally {
// lock.unlock();
// }
//
// });
//
//
// }
//
// }
res = dataList.stream().sorted(Comparator.comparing(DwXnpgTj::getDwdm))
.collect(Collectors.toList());
rtMap.put("rows",res);
rtMap.put("rows",unitList);
return rtMap;
}
@Override
public Map<String, Object> getAjlbTjByPidTs(DwTjParam dwTjParam) {
Map<String, Object> rtMap = new HashMap<>();
String unitcode=dwTjParam.getUnitcode();
if (StringUtils.isEmpty(unitcode)) {
XzxtUser xzxtUser = SecureUtil.getUserXzxt();
unitcode = xzxtUser.getUnitcode();//获取对应用户的单位
}
System.out.println(unitcode);
dwTjParam.setUnitcode(unitcode);
dwTjParam.setQryType("bxq");
List<String> lbs=new ArrayList<>();
List<DictitemXz> unitList = ajlbSysDictMapper.getAjlbByCode(dwTjParam.getAjlbdm());
lbs.add(dwTjParam.getAjlbdm());
for(DictitemXz xz:unitList){
if("yxj".equals(xz.getLev())){
List<DictitemXz> xjajlbs = ajlbSysDictMapper.getAjlbByCode(xz.getCode());
for(DictitemXz xjs:xjajlbs){
if("yxj".equals(xjs.getLev())){
List<DictitemXz> xxjajlbs = ajlbSysDictMapper.getAjlbByCode(xjs.getCode());
for(DictitemXz xxjs:xxjajlbs){
lbs.add(xxjs.getCode());
}
lbs.add(xjs.getCode());
}else {
lbs.add(xjs.getCode());
}
}
lbs.add(xz.getCode());
}else{
lbs.add(xz.getCode());
}
}
dwTjParam.setLbs(lbs);
List<TbStAsj> dalist =dwAjlbTjfxMapper.getXlAjlbTjTs(dwTjParam);
int count =dwAjlbTjfxMapper.getXlAjlbTjTsCount(dwTjParam);
rtMap.put("rows",dalist);
rtMap.put("total",count);
return rtMap;
}
}
......@@ -161,7 +161,7 @@ public class DwAjlbTjfxServiceImpl implements DwAjlbTjfxService {
paramet.put("qryType", "bdw");
dwtype= "bdw";
DwDaztTj dwXnpgTj = dwAjlbTjfxMapper.getDwXyrDaztTj(paramMap);
DwDaztTj dwXnpgTj = dwAjlbTjfxMapper.getDwXyrDaztTj(paramet);
dwXnpgTj.setDwdm(dwdm);
......@@ -187,7 +187,7 @@ public class DwAjlbTjfxServiceImpl implements DwAjlbTjfxService {
paramet.put("qryType", "bxq");
dwtype= "bxq";
DwDaztTj dwXnpgTj = dwAjlbTjfxMapper.getDwXyrDaztTj(paramMap);
DwDaztTj dwXnpgTj = dwAjlbTjfxMapper.getDwXyrDaztTj(paramet);
dwXnpgTj.setDwdm(dwdm);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment