1.修复循环依赖问题

2.增加支持线表导入记录版本号功能,支持选择版本号查看指定线表导入记录
master
董哲奇 7 months ago
parent e0786c6043
commit 9b1a1a6efc

@ -1,5 +1,6 @@
package com.dsic.gj_erp; package com.dsic.gj_erp;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import java.io.IOException; import java.io.IOException;
@ -7,7 +8,9 @@ import java.io.IOException;
public class Test { public class Test {
public static void main(String[] args) throws IOException { public static void main(String[] args) throws IOException {
System.out.println(StrUtil.padPre("1",3,"0")); System.out.println(DateUtil.thisYear());
// System.out.println(StrUtil.padPre("1",3,"0"));
//String aaa="gagagag"; //String aaa="gagagag";
//System.out.println(aaa.split("@")[0]); //System.out.println(aaa.split("@")[0]);

@ -51,6 +51,6 @@ public class DmXbjh implements Serializable {
@ApiModelProperty(value = "船号") @ApiModelProperty(value = "船号")
private String dcCh; private String dcCh;
private int version;
} }

@ -80,15 +80,15 @@ public class DmSygdController {
@PostMapping("/tj") @PostMapping("/tj")
@AuthFunction @AuthFunction
@ResponseBody @ResponseBody
public ResultBean tj(@RequestBody List<DmSygd> list){ public ResultBean tj(String from,String to){
service.tj(list); mxService.tj(from,to);
return new ResultBean(); return new ResultBean();
} }
@ApiOperation(value = "批量审核") @ApiOperation(value = "批量审核")
@PostMapping(value = "/sh") @PostMapping(value = "/sh")
public ResultBean sh(@RequestBody List<DmSygd> dmSygds) { public ResultBean sh(String from,String to) {
service.sh(dmSygds); mxService.sh(from,to);
return new ResultBean(); return new ResultBean();
} }

@ -31,7 +31,8 @@ public interface DmSygdMxService extends IService<DmSygdMx> {
List<DmYdjhxf> tqSygd1(String begin, String end); List<DmYdjhxf> tqSygd1(String begin, String end);
Object cgjhdhqk(Map<String,Object> map); Object cgjhdhqk(Map<String,Object> map);
void tj(String from,String to);
void sh(String from,String to);
void ydjhImport(List<JhxfExcel> objList); void ydjhImport(List<JhxfExcel> objList);
} }

@ -21,8 +21,8 @@ public interface DmSygdService extends IService<DmSygd> {
Map uploadSy(List<SyExcel> list, HttpServletRequest req); Map uploadSy(List<SyExcel> list, HttpServletRequest req);
Boolean tj(List<DmSygd> dmSygds); Boolean tj(List<DmSygd> dmSygds);
void tj1(String from,String to);
Boolean sh(List<DmSygd> dmSygds); Boolean sh(List<DmSygd> dmSygds);
void sh1(String from,String to);
} }

@ -26,10 +26,7 @@ import com.dsic.gj_erp.handler.dto.RealCapacity;
import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper; import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper;
import com.dsic.gj_erp.service.jcsj.DmBomService; import com.dsic.gj_erp.service.jcsj.DmBomService;
import com.dsic.gj_erp.service.jcsj.EmSbcnpService; import com.dsic.gj_erp.service.jcsj.EmSbcnpService;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService; import com.dsic.gj_erp.service.jhgk.*;
import com.dsic.gj_erp.service.jhgk.DmSygdService;
import com.dsic.gj_erp.service.jhgk.DmTzjhService;
import com.dsic.gj_erp.service.jhgk.DmXbjhService;
import com.dsic.gj_erp.util.MyString; import com.dsic.gj_erp.util.MyString;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -68,6 +65,68 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
Dm_zhbmpRepository dm_zhbmpRepository; Dm_zhbmpRepository dm_zhbmpRepository;
@Autowired @Autowired
DmBomService bomService; DmBomService bomService;
@Autowired
DmYdjhService ydjhService;
@Override
@Transactional(rollbackFor = Exception.class)
public void tj(String from,String to){
List<DmSygdMx> sygdMxes = this.list(Wrappers.<DmSygdMx>lambdaQuery().between(DmSygdMx::getJssj, from, to));
List<DmSygdMx> collect = sygdMxes.stream().map(dmSygd -> {
DmSygdMx dmSygdMx = new DmSygdMx();
dmSygdMx.setId(dmSygd.getId());
dmSygdMx.setZt("1");
return dmSygdMx;
}).collect(Collectors.toList());
this.updateBatchById(collect);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void sh(String from,String to){
List<DmSygdMx> sygdMxes = this.list(Wrappers.<DmSygdMx>lambdaQuery().between(DmSygdMx::getJssj, from, to));
List<DmSygdMx> collect = sygdMxes.stream().map(dmSygd -> {
DmSygdMx dmSygdMx = new DmSygdMx();
dmSygdMx.setId(dmSygd.getId());
dmSygdMx.setZt("2");
return dmSygdMx;
}).collect(Collectors.toList());
this.updateBatchById(collect);
//生成作业计划
new Thread(()->{
this.generateYdjh(sygdMxes);
}).start();
}
@Transactional(rollbackFor = Exception.class)
public void generateYdjh(List<DmSygdMx> sygdMxes) {
List<DmYdjh> ydjhList = sygdMxes.stream().map(item -> {
DmYdjh dmYdjh = new DmYdjh();
BeanUtil.copyProperties(item, dmYdjh);
return dmYdjh;
}).collect(Collectors.toList());
ydjhList.forEach(l->{
if (StrUtil.isAllNotEmpty(l.getXzglxq(),l.getJssj())){
//状态 2拖期 1提前 3追加
if (l.getXzglxq().compareTo(l.getJssj())<0){
if (!DateUtil.isSameMonth(DateUtil.parseDate(l.getXzglxq()),DateUtil.parseDate(l.getJssj()))){
l.setJhlx("3");
}else {
l.setJhlx("1");
}
}
if (l.getXzglxq().compareTo(l.getJssj())>0){
l.setJhlx("2");
}
l.setJssjOld(StrUtil.isEmpty(l.getJssj())?"":l.getJssj());
l.setJssj(l.getXzglxq());
}
if (StrUtil.isEmpty(l.getTzbh())){
l.setJhlx("3");
}
});
ydjhService.saveBatch(ydjhList);
}
public Map<String,List<EmGcrlDto>> getMxMap(String begin,String end){ public Map<String,List<EmGcrlDto>> getMxMap(String begin,String end){

@ -35,9 +35,6 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class DmSygdServiceImpl extends ServiceImpl<DmSygdMapper, DmSygd> implements DmSygdService { public class DmSygdServiceImpl extends ServiceImpl<DmSygdMapper, DmSygd> implements DmSygdService {
private final DmYdjhService ydjhService;
private final DmSygdMxService sygdMxService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Map uploadSy(List<SyExcel> list, HttpServletRequest req){ public Map uploadSy(List<SyExcel> list, HttpServletRequest req){
@ -70,19 +67,6 @@ public class DmSygdServiceImpl extends ServiceImpl<DmSygdMapper, DmSygd> impleme
return this.updateBatchById(dmSygds); return this.updateBatchById(dmSygds);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void tj1(String from,String to){
List<DmSygdMx> sygdMxes = this.sygdMxService.list(Wrappers.<DmSygdMx>lambdaQuery().between(DmSygdMx::getJssj, from, to));
List<DmSygdMx> collect = sygdMxes.stream().map(dmSygd -> {
DmSygdMx dmSygdMx = new DmSygdMx();
dmSygdMx.setId(dmSygd.getId());
dmSygdMx.setZt("1");
return dmSygdMx;
}).collect(Collectors.toList());
this.sygdMxService.updateBatchById(collect);
}
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -94,50 +78,4 @@ public class DmSygdServiceImpl extends ServiceImpl<DmSygdMapper, DmSygd> impleme
return this.updateBatchById(dmSygds); return this.updateBatchById(dmSygds);
} }
@Override
@Transactional(rollbackFor = Exception.class)
public void sh1(String from,String to){
List<DmSygdMx> sygdMxes = this.sygdMxService.list(Wrappers.<DmSygdMx>lambdaQuery().between(DmSygdMx::getJssj, from, to));
List<DmSygdMx> collect = sygdMxes.stream().map(dmSygd -> {
DmSygdMx dmSygdMx = new DmSygdMx();
dmSygdMx.setId(dmSygd.getId());
dmSygdMx.setZt("2");
return dmSygdMx;
}).collect(Collectors.toList());
this.sygdMxService.updateBatchById(collect);
//生成作业计划
new Thread(()->{
this.generateYdjh(sygdMxes);
}).start();
}
@Transactional(rollbackFor = Exception.class)
public void generateYdjh(List<DmSygdMx> sygdMxes) {
List<DmYdjh> ydjhList = sygdMxes.stream().map(item -> {
DmYdjh dmYdjh = new DmYdjh();
BeanUtil.copyProperties(item, dmYdjh);
return dmYdjh;
}).collect(Collectors.toList());
ydjhList.forEach(l->{
if (StrUtil.isAllNotEmpty(l.getXzglxq(),l.getJssj())){
//状态 2拖期 1提前 3追加
if (l.getXzglxq().compareTo(l.getJssj())<0){
if (!DateUtil.isSameMonth(DateUtil.parseDate(l.getXzglxq()),DateUtil.parseDate(l.getJssj()))){
l.setJhlx("3");
}else {
l.setJhlx("1");
}
}
if (l.getXzglxq().compareTo(l.getJssj())>0){
l.setJhlx("2");
}
l.setJssjOld(StrUtil.isEmpty(l.getJssj())?"":l.getJssj());
l.setJssj(l.getXzglxq());
}
if (StrUtil.isEmpty(l.getTzbh())){
l.setJhlx("3");
}
});
ydjhService.saveBatch(ydjhList);
}
} }

@ -1,10 +1,15 @@
package com.dsic.gj_erp.service.jhgk.impl; package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jhgk.DmXbjh; import com.dsic.gj_erp.bean.jhgk.DmXbjh;
import com.dsic.gj_erp.mapper.jhgk.DmXbjhMapper; import com.dsic.gj_erp.mapper.jhgk.DmXbjhMapper;
@ -17,6 +22,8 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
@ -26,7 +33,7 @@ import java.util.stream.Collectors;
/** /**
* <p> * <p>
* *
* </p> * </p>
* *
* @author xn * @author xn
@ -40,69 +47,72 @@ public class DmXbjhServiceImpl extends ServiceImpl<DmXbjhMapper, DmXbjh> impleme
ModelMapper modelMapper; ModelMapper modelMapper;
@Override @Override
public Map<String,List<DmXbjh>> getList(JSONObject json) { public Map<String, List<DmXbjh>> getList(JSONObject json) {
QueryWrapper<DmXbjh> queryWrapper=new QueryWrapper<>(); QueryWrapper<DmXbjh> queryWrapper = new QueryWrapper<>();
if(StringUtils.isNotEmpty(json.getString("dcCh"))){ if (StringUtils.isNotEmpty(json.getString("dcCh"))) {
queryWrapper.eq("dc_ch",json.getString("dcCh")); queryWrapper.eq("dc_ch", json.getString("dcCh"));
} }
if(StringUtils.isNotEmpty(json.getString("Zt"))){ if (StringUtils.isNotEmpty(json.getString("Zt"))) {
queryWrapper.eq("zt",json.getString("Zt")); queryWrapper.eq("zt", json.getString("Zt"));
} }
if(StringUtils.isNotEmpty(json.getString("nf"))){ if (StringUtils.isNotEmpty(json.getString("nf"))) {
String nf=json.getString("nf"); String nf = json.getString("nf");
String startTime=nf.split("~")[0]; String startTime = nf.split("~")[0];
String endTime=nf.split("~")[1]; String endTime = nf.split("~")[1];
queryWrapper.between("nf",startTime,endTime); queryWrapper.between("nf", startTime, endTime);
} }
queryWrapper.orderByDesc("zl"); queryWrapper.orderByDesc("zl");
List<DmXbjh> dmTzjhs=dmXbjhMapper.selectList(queryWrapper); List<DmXbjh> dmTzjhs = dmXbjhMapper.selectList(queryWrapper);
Map<String,List<DmXbjh>> map=dmTzjhs.stream() Map<String, List<DmXbjh>> map = dmTzjhs.stream()
.collect(Collectors.groupingBy(DmXbjh::getDcCh)); .collect(Collectors.groupingBy(DmXbjh::getDcCh));
//对map的value进行排序并返回降序以后的map集合 //对map的value进行排序并返回降序以后的map集合
LinkedHashMap<String, List<DmXbjh>> collect = map.entrySet().stream().sorted((entry1, entry2) -> { LinkedHashMap<String, List<DmXbjh>> collect = map.entrySet().stream().sorted((entry1, entry2) -> {
Double zl1=entry1.getValue().stream().filter(l->ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum(); Double zl1 = entry1.getValue().stream().filter(l -> ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum();
Double zl2=entry2.getValue().stream().filter(l->ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum(); Double zl2 = entry2.getValue().stream().filter(l -> ObjectUtil.isNotEmpty(l.getZl())).mapToDouble(DmXbjh::getZl).sum();
//降序排序 //降序排序
return zl2.compareTo(zl1); return zl2.compareTo(zl1);
}).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue,(oldValue, newValue) -> oldValue, LinkedHashMap::new)); }).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldValue, newValue) -> oldValue, LinkedHashMap::new));
return collect; return collect;
} }
@Override @Override
@Transactional
public JSONObject upload(MultipartFile file) throws IOException { public JSONObject upload(MultipartFile file) throws IOException {
// ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); JSONObject dmXbjhs = ExcelUtil.readDmXbjh(file);
//List<DmXbjh> dmXbjhs= ExcelUtil.readDmXbjh(file); if (dmXbjhs != null) {
JSONObject dmXbjhs= ExcelUtil.readDmXbjh(file); List<DmXbjh> listByNf = list(Wrappers.<DmXbjh>lambdaQuery().eq(DmXbjh::getNf, dmXbjhs.getString("nf")));
this.save(dmXbjhs);
// List<DmXbjh> list=new ArrayList<>(); String type = FileUtil.extName(file.getOriginalFilename());
// mapList.forEach(stringObjectMap -> { File uploadFile = new File("./线表计划");
// DmXbjh dmXbjh = modelMapper.map(stringObjectMap, DmXbjh.class); if (!uploadFile.exists()) {
// dmXbjh.setZt("0"); uploadFile.mkdirs();
// list.add(dmXbjh); }
// }); int version = !listByNf.isEmpty() ? listByNf.get(0).getVersion() + 1 : 1;
this.save(dmXbjhs); File uploadFiles = new File(StrUtil.format("./线表计划/{}_{}{}{}", dmXbjhs.getString("nf"), version, StrUtil.DOT, type));
file.transferTo(uploadFiles);
}
return dmXbjhs; return dmXbjhs;
} }
@Override @Override
@Transactional @Transactional
public void save(JSONObject json) { public void save(JSONObject json) {
List<DmXbjh> dmXbjhs=new ArrayList<>(); List<DmXbjh> dmXbjhs = new ArrayList<>();
for (String key:json.keySet()) { for (String key : json.keySet()) {
JSONArray jsonArray=json.getJSONArray(key); JSONArray jsonArray = json.getJSONArray(key);
for (Object object:jsonArray) { for (Object object : jsonArray) {
// JSONObject dmxb=JSONObject.parseObject(object.toString()); // JSONObject dmxb=JSONObject.parseObject(object.toString());
DmXbjh dmXbjh= modelMapper.map(object,DmXbjh.class); DmXbjh dmXbjh = modelMapper.map(object, DmXbjh.class);
dmXbjh.setDcCh(key); dmXbjh.setDcCh(key);
dmXbjhs.add(dmXbjh); dmXbjhs.add(dmXbjh);
this.remove(new QueryWrapper<DmXbjh>().eq("dc_ch",dmXbjh.getDcCh()) this.remove(new QueryWrapper<DmXbjh>().eq("dc_ch", dmXbjh.getDcCh())
.eq("nf",dmXbjh.getNf()) .eq("nf", dmXbjh.getNf())
.eq("yf",dmXbjh.getYf()) .eq("yf", dmXbjh.getYf())
); );
} }
} }

Loading…
Cancel
Save