1.增加新双周需求导入及相关功能

master
董哲奇 2 weeks ago
parent 7e463e9d24
commit 04144679bf

@ -1,8 +1,11 @@
package com.dsic.gj_erp.bean.jhgk;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.dsic.gj_erp.bean.jhgk.dto.DzDoubleWeekNeedDto;
import com.dsic.gj_erp.bean.jhgk.dto.XzDoubleWeekNeedDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -76,6 +79,10 @@ public class DmQfxq implements Serializable {
@ApiModelProperty(value = "D大板")
private String ddb;
//fixme 取消注解
@TableField(exist = false)
private String dr150;
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
@ -83,6 +90,30 @@ public class DmQfxq implements Serializable {
private String dcPl;
//fixme 取消注解
@TableField(exist = false)
private String xzcd;//小组场地
//fixme 取消注解
@TableField(exist = false)
private String dzcd;//大组场地
//fixme 取消注解
@TableField(exist = false)
private String xok;//钢加回复,小组ok
//fixme 取消注解
@TableField(exist = false)
private String dok;//钢加回复,大组ok
//fixme 取消注解
@TableField(exist = false)
private String xbz;//小组备注
//fixme 取消注解
@TableField(exist = false)
private String dbz;//大组备注
private String drr;
private String drrq;
private String zt;
@ -98,4 +129,47 @@ public class DmQfxq implements Serializable {
private String fan;
@TableField(exist = false)
private String zt1;
public String getCustomUniKey(){
return StrUtil.format("{}_{}_{}",this.dcCh,this.dcPl,this.dcFd);
}
public void ofWithXzDWM0(XzDoubleWeekNeedDto dto){
this.setXdb(dto.getDbXqrq());
this.setXskj(dto.getSkjXqrq());
this.setXpt(dto.getPtXqrq());
this.setXyw(dto.getYwXqrq());
this.setXxc(dto.getXcXqrq());
this.setXzcd(dto.getXzcd());
}
public static DmQfxq ofWithXzDWM(XzDoubleWeekNeedDto dto){
DmQfxq dmQfxq = new DmQfxq();
dmQfxq.setDcCh(dto.getDcCh());
dmQfxq.setDcPl(dto.getDcPl());
dmQfxq.setDcFd(dto.getDcFd());
dmQfxq.ofWithXzDWM0(dto);
return dmQfxq;
}
public void ofWithDzDWM0(DzDoubleWeekNeedDto dto){
this.setDzcd(dto.getDzcd());
this.setDqb(dto.getQwbXqrq());
this.setDdb(dto.getDbXqrq());
this.setDxc(dto.getXcXqrq());
this.setDsj(dto.getSjXqrq());
this.setDr150(dto.getR150Xqrq());
}
public static DmQfxq ofWithDzDWM(DzDoubleWeekNeedDto dto){
DmQfxq dmQfxq = new DmQfxq();
dmQfxq.setDcCh(dto.getDcCh());
dmQfxq.setDcPl(dto.getDcPl());
dmQfxq.setDcFd(dto.getDcFd());
dmQfxq.ofWithDzDWM0(dto);
return dmQfxq;
}
}

@ -0,0 +1,54 @@
package com.dsic.gj_erp.bean.jhgk.dto;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* (excel)
*/
@Getter
@Setter
public class DzDoubleWeekNeedDto {
@ApiModelProperty(value = "船只")
private String dcCh;
@ApiModelProperty(value = "批量号")
private String dcPl;//需要自行补0
@ApiModelProperty(value = "分段号")
private String dcFd;
@ApiModelProperty(value = "大组场地")
private String dzcd;
@ApiModelProperty(value = "车间主管")
private String cjzg;
@ApiModelProperty(value = "大板需求")
private String dbXqrq;
@ApiModelProperty(value = "型材需求")
private String xcXqrq;
@ApiModelProperty(value = "散件需求")
private String sjXqrq;
@ApiModelProperty(value = "R150需求")
private String r150Xqrq;
@ApiModelProperty(value = "曲外板需求")
private String qwbXqrq;
@ApiModelProperty(value = "钢加回复")
private String gjhf;
@ApiModelProperty(value = "备注")
private String bz;
public String getCustomUniKey(){
return StrUtil.format("{}_{}_{}",this.dcCh,this.dcPl,this.dcFd);
}
}

@ -0,0 +1,54 @@
package com.dsic.gj_erp.bean.jhgk.dto;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* (excel)
*/
@Getter
@Setter
public class XzDoubleWeekNeedDto {
@ApiModelProperty(value = "船只")
private String dcCh;
@ApiModelProperty(value = "批量号")
private String dcPl;//需要自行补0
@ApiModelProperty(value = "分段号")
private String dcFd;
@ApiModelProperty(value = "小组场地")
private String xzcd;
@ApiModelProperty(value = "大板")
private String dbXqrq;
@ApiModelProperty(value = "数控件")
private String skjXqrq;
@ApiModelProperty(value = "型材")
private String xcXqrq;
@ApiModelProperty(value = "平铁")
private String ptXqrq;
@ApiModelProperty(value = "压弯")
private String ywXqrq;//曲加工
@ApiModelProperty(value = "光电件")
private String gdjXqrq;
@ApiModelProperty(value = "钢加回复")
private String gjhf;
@ApiModelProperty(value = "备注")
private String bz;
public String getCustomUniKey(){
return StrUtil.format("{}_{}_{}",this.dcCh,this.dcPl,this.dcFd);
}
}

@ -3,18 +3,22 @@ package com.dsic.gj_erp.controller.jhgk;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jcsj.DmCbxxp;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.dto.DzDoubleWeekNeedDto;
import com.dsic.gj_erp.bean.jhgk.dto.XzDoubleWeekNeedDto;
import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel;
import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel1;
import com.dsic.gj_erp.exception.CustomException;
import com.dsic.gj_erp.listeners.ExcelGdxq1Listener;
import com.dsic.gj_erp.listeners.ExcelGdxqListener;
import com.dsic.gj_erp.exception.ServiceException;
import com.dsic.gj_erp.listeners.*;
import com.dsic.gj_erp.service.jcsj.DmCbxxpService;
import com.dsic.gj_erp.service.jhgk.DmQfxqService;
import org.springframework.beans.factory.annotation.Autowired;
@ -22,7 +26,9 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
@ -65,6 +71,59 @@ public class DmQfxqController {
return new ResultBean(list);
}
@PostMapping("/uploadNew")
public ResultBean<?> uploadNew(@RequestParam("file") List<MultipartFile> files,HttpServletRequest request) throws IOException {
String username=(String) request.getAttribute("yhms");
String day= DateUtil.format(DateUtil.date(), "yyyy/MM/dd");
List<DmQfxq> list=new ArrayList<>();
HashMap<String, DmQfxq> map = new HashMap<>();
for (MultipartFile file:files){
if (StrUtil.contains(file.getOriginalFilename(),"小组双周")){
CommonExcelListener<XzDoubleWeekNeedDto> commonExcelListener = new CommonExcelListener<>(file, XzDoubleWeekNeedDto.class);
List<XzDoubleWeekNeedDto> objectList = commonExcelListener.readAndGetObjList();
objectList.forEach(item->{
if (map.containsKey(item.getCustomUniKey())){
throw new ServiceException(9999,StrUtil.format("小组数据,船号:{},批量:{},分段:{}存在重复,请修正后再次上传"));
}
DmQfxq dmQfxq = DmQfxq.ofWithXzDWM(item);
dmQfxq.setDrr(username);
dmQfxq.setDrrq(day);
list.add(dmQfxq);
map.put(dmQfxq.getCustomUniKey(),dmQfxq);
});
}
if (StrUtil.contains(file.getOriginalFilename(),"大组双周")){
HashMap<String, DzDoubleWeekNeedDto> _map = new HashMap<>();
CommonExcelListener<DzDoubleWeekNeedDto> commonExcelListener = new CommonExcelListener<>(file, DzDoubleWeekNeedDto.class);
List<DzDoubleWeekNeedDto> objectList = commonExcelListener.readAndGetObjList();
objectList.forEach(item->{
if (_map.containsKey(item.getCustomUniKey())){
throw new ServiceException(9999,StrUtil.format("大组数据,船号:{},批量:{},分段:{}存在重复,请修正后再次上传"));
}
_map.put(item.getCustomUniKey(),item);
DmQfxq dmQfxq = map.get(item.getCustomUniKey());
if (ObjUtil.isNotEmpty(dmQfxq)){
dmQfxq.ofWithDzDWM0(item);
}else{
dmQfxq=DmQfxq.ofWithDzDWM(item);
dmQfxq.setDrr(username);
dmQfxq.setDrrq(day);
list.add(dmQfxq);
}
});
}
}
service.saveOrUpdate(list);
return new ResultBean<>();
}
//导入
@PostMapping("/upload")
@AuthFunction

@ -0,0 +1,64 @@
package com.dsic.gj_erp.listeners;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.Getter;
import lombok.Setter;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class CommonExcelListener<T> extends AnalysisEventListener<T> {
@Getter
private List<T> objList =new ArrayList<>();
@Getter
@Setter
private MultipartFile file;
Consumer<T> action;
private final Class<T> clazz;
public CommonExcelListener(MultipartFile file,Class<T> clazz){
this.file=file;
this.clazz=clazz;
}
public CommonExcelListener(MultipartFile file,Class<T> clazz,Consumer<T> action){
this.file=file;
this.clazz=clazz;
this.action=action;
}
@Override
public void invoke(T t, AnalysisContext analysisContext) {
if (this.action!=null){
this.handler(t);
}
objList.add(t);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public void handler(T t){
action.accept(t);
}
public void read() throws IOException {
EasyExcel.read(this.file.getInputStream(),clazz,this);
}
public List<T> readAndGetObjList() throws IOException {
this.read();
return this.objList;
}
}

@ -0,0 +1,30 @@
package com.dsic.gj_erp.listeners;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.dsic.gj_erp.bean.jhgk.dto.DzDoubleWeekNeedDto;
import com.dsic.gj_erp.bean.jhgk.dto.XzDoubleWeekNeedDto;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
/**
*
*/
public class ExcelDzDMNListener extends AnalysisEventListener<DzDoubleWeekNeedDto> {
@Getter
List<DzDoubleWeekNeedDto> objectList = new ArrayList<>();
@Override
public void invoke(DzDoubleWeekNeedDto excelDemo, AnalysisContext analysisContext) {
objectList.add(excelDemo);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}

@ -0,0 +1,33 @@
package com.dsic.gj_erp.listeners;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.dsic.gj_erp.bean.jhgk.dto.XzDoubleWeekNeedDto;
import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel;
import com.dsic.gj_erp.util.ObjConvertUtils;
import lombok.Getter;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
*
*/
public class ExcelXzDMNListener extends AnalysisEventListener<XzDoubleWeekNeedDto> {
@Getter
List<XzDoubleWeekNeedDto> objectList = new ArrayList<>();
@Override
public void invoke(XzDoubleWeekNeedDto excelDemo, AnalysisContext analysisContext) {
objectList.add(excelDemo);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}

@ -20,4 +20,6 @@ public interface DmQfxqService extends IService<DmQfxq> {
List<DmQfxq> saveXzList(List<DmQfxq> list, String username, String day);
List<DmQfxq> saveDzList(List<DmQfxq> list, String username, String day);
void generateYdjh(List<DmQfxq> list);
void saveOrUpdate(List<DmQfxq> list);
}

@ -1,6 +1,7 @@
package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -203,6 +204,26 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
// ydjhService.saveBatch(ydjhList);
}
@Override
@Transactional(rollbackFor = Exception.class)
public void saveOrUpdate(List<DmQfxq> list) {
List<DmQfxq> saveOrUpdateList = list.stream().map(item -> {
DmQfxq qfxq = this.getOne(Wrappers.<DmQfxq>query()
.select("top 1 *")
.eq("dc_ch", item.getDcCh())
.eq("dc_pl", item.getDcPl())
.eq("dc_fd", item.getDcFd())
);
if (ObjUtil.isNotEmpty(qfxq)) {
BeanUtil.copyProperties(item, qfxq);
} else {
qfxq = item;
}
return qfxq;
}).collect(Collectors.toList());
this.saveOrUpdateBatch(saveOrUpdateList);
}
private void removeByMulti(Map<String, List<DmYdjh>> map){
map.forEach((key,list)->{
String[] str= key.split("@");

Loading…
Cancel
Save