Commit e50a5986 by wang_jiaxing

修改新疆法律文书入库项目

parent bc7cfaae
......@@ -11,10 +11,12 @@ import java.util.Map;
@Mapper
@Component
public interface XjxzFlwsMapper {
void update(@Param("xxzjbh") String xxzjbh, @Param("bytes") byte[] bytes);
int update(@Param("xxzjbh") String xxzjbh, @Param("bytes") byte[] bytes, @Param("length") int length);
List<String> getNoFileFlwsXxzjbh(@Param("flwsList") List<Map<String, String>> flwsList);
List<Map<String, String>> getFlwsWzByDate(@Param("date") Date date, @Param("xxzjbh") String xxzjbh, @Param("begin") Integer page, @Param("end") Integer rows);
Integer getFlwsCountWzByDate(@Param("date") Date date, @Param("xxzjbh") String xxzjbh);
List<Map<String, String>> getJzzjkFlwsList(@Param("date") Date date, @Param("xxzjbh") String xxzjbh);
}
......@@ -4,105 +4,62 @@ import com.founder.file.dao.xjxz.XjxzFlwsMapper;
import com.founder.file.service.XjFlwsService;
import com.founder.util.HttpUtil;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
@Service
public class XjFlwsServiceImpl implements XjFlwsService {
@Autowired
private XjxzFlwsMapper xjxzFlwsMapper;
@Value("${poorSize}")
private Integer poorSize;
@Value("${clusterSize}")
private Integer clusterSize;
@Value("${clusterId}")
private Integer clusterId;
private final ExecutorService cachedThreadPool;
{
cachedThreadPool = Executors.newCachedThreadPool();
}
@Override
public String getJzzjkFlwsnrToXjxz(Date date, String xxzjbh) throws IOException {
Integer count = xjxzFlwsMapper.getFlwsCountWzByDate(date, xxzjbh);
int page = (count / poorSize) + 1;
ArrayList<FutureTask<Map<String, Integer>>> list = new ArrayList<>();
for (int i = 0; i < page; i++) {
int limit = poorSize;
int begin = i * limit;
int end = (i + 1) * limit;
FutureTask<Map<String, Integer>> xsAjTask = new FutureTask<>(() -> {
HashMap<String, Integer> map = new HashMap<>();
List<Map<String, String>> flwsList = xjxzFlwsMapper.getFlwsWzByDate(date, xxzjbh, begin, end);
ArrayList<Exception> exceptions = new ArrayList<>();
System.out.println("+++++++++++++" + flwsList.size());
int j = 1;
int flwsCount = 0;
int wuNrCount = 0;
for (Map<String, String> flws : flwsList) {
try {
String flwsUrl = flws.get("FWDZ") + flws.get("TXLJ");
// System.out.println(flwsUrl);
InputStream is = HttpUtil.getInputStreamByUrl(flwsUrl);
if (is != null) {
byte[] bytes = IOUtils.toByteArray(is);
if (bytes != null && bytes.length > 0) {
xjxzFlwsMapper.update(flws.get("XXZJBH"), bytes);
flwsCount++;
public String getJzzjkFlwsnrToXjxz(Date date, String xxzjbh) {
List<Map<String, String>> list = xjxzFlwsMapper.getJzzjkFlwsList(date, xxzjbh);
int wssl = list.size();
AtomicInteger cgsl = new AtomicInteger(0);
AtomicInteger cwsl = new AtomicInteger(0);
AtomicInteger wswzwksl = new AtomicInteger(0);
AtomicInteger wglsl = new AtomicInteger(0);
list.stream().parallel().forEach(map -> {
String flwsxxzjbh = map.get("XXZJBH");
String wjwz = map.get("WJWZ");
if (StringUtils.isNotEmpty(flwsxxzjbh) && StringUtils.isNotEmpty(wjwz)) {
try (InputStream is = HttpUtil.getInputStreamByUrl(wjwz)){
if (is != null) {
byte[] bytes = IOUtils.toByteArray(is);
if (bytes != null && bytes.length > 0) {
int length = bytes.length;
int update = xjxzFlwsMapper.update(flwsxxzjbh, bytes, length);
if (update > 0) {
cgsl.incrementAndGet();
} else {
System.out.println("文件已损害,无内容");
wuNrCount++;
wglsl.incrementAndGet();
}
} else {
System.out.println("文件已损害,无内容");
wuNrCount++;
}
} catch (FileNotFoundException e) {
System.out.println("404,文件找不到");
wuNrCount++;
} catch (Exception e) {
e.printStackTrace();
exceptions.add(e);
}
System.out.println("线程" + Thread.currentThread().getName() + "++++++++++++++" + (j++));
} catch (Exception e) {
e.printStackTrace();
cwsl.incrementAndGet();
}
map.put("exceptions", exceptions.size());
map.put("flws", flwsCount);
map.put("wuNrCount", wuNrCount);
System.out.println("=============" + exceptions.size());
return map;
});
cachedThreadPool.submit(xsAjTask);
list.add(xsAjTask);
}
int flsws = 0;
int wuNrCount = 0;
int exc = 0;
for (FutureTask<Map<String, Integer>> task : list) {
try {
Map<String, Integer> map = task.get();
flsws += map.get("flws");
wuNrCount += map.get("wuNrCount");
exc += map.get("exceptions");
} catch (Exception e) {
e.printStackTrace();
exc += 1;
} else {
System.out.println("文件位置为空");
wswzwksl.incrementAndGet();
}
}
return "更新了" + flsws + "个法律文书,出错了" + exc + "个法律文书,有" + wuNrCount + "个法律文书404或已损坏";
});
int cg = cgsl.get();
int cw = cwsl.get();
int wswzwk = wswzwksl.get();
int wgl = wglsl.get();
int wnr = wssl - (cg + cw + wswzwk + wgl);
return "共" + wssl + "个文书准备更新," + "成功更新" + cg + "个,失败" + cw + "个,文书位置为空"
+ wswzwk + "个,未关联文书" + wgl + "个,文书内容为空" + wnr + "个";
}
}
}
\ No newline at end of file
......@@ -2,7 +2,11 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.founder.file.dao.xjxz.XjxzFlwsMapper">
<update id="update">
update TB_ST_ASJ_FLWS set FLWS_DZWJNR = #{bytes}, GXSJ = sysdate where xxzjbh = #{xxzjbh}
update TB_ST_ASJ_FLWS
set FLWS_DZWJNR = #{bytes,jdbcType=BLOB},
FLWS_DZWJDX = #{length,jdbcType=INTEGER},
GXSJ = sysdate
where xxzjbh = #{xxzjbh,jdbcType=VARCHAR}
</update>
<select id="getNoFileFlwsXxzjbh" resultType="java.lang.String">
select xxzjbh from TB_ST_ASJ_FLWS where FLWS_DZWJNR is null and xxzjbh in
......@@ -47,4 +51,15 @@
and dz.TZTXBH = #{xxzjbh}
</if>
</select>
<select id="getJzzjkFlwsList" resultType="java.util.Map">
select tld.XXZJBH as XXZJBH,
tld.FLWS_DZWJWZ as WJWZ
from JZZJK.ASJ_FLWS_TLD tld, TB_ST_ASJ_FLWS flws
where tld.XXSC_PDBZ = '0' and flws.XXSC_PDBZ = '0'
and tld.XXZJBH = flws.XXZJBH
and (flws.DJSJ <![CDATA[>=]]> #{date} or flws.XXRSKSJ <![CDATA[>=]]> #{date})
<if test="xxzjbh != null and xxzjbh != ''">
and tld.xxzjbh = #{xxzjbh}
</if>
</select>
</mapper>
\ No newline at end of file
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