xiaoning 2 years ago
parent 27113c3158
commit ff5be04fdc

@ -0,0 +1,94 @@
package com.dsic.gj_erp.bean.jhgk;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-02
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="DmSygdxq对象", description="")
public class DmSygdxq implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "分段")
@TableField("DC_FD")
private String dcFd;
@ApiModelProperty(value = "总段号")
private String zdh;
@ApiModelProperty(value = "大组极重")
private Double dzjz;
@ApiModelProperty(value = "总装部最新分段需求期")
private String zxfdxq;
@ApiModelProperty(value = "钢料需求")
private String xzglxq;
private String dzglxq;
@ApiModelProperty(value = "钢料需求")
private String xzglxqOld;
private String dzglxqOld;
@ApiModelProperty(value = "X大板")
private String xdb;
@ApiModelProperty(value = "X数控件")
private String xskj;
@ApiModelProperty(value = "X平铁")
private String xpt;
@ApiModelProperty(value = "X压弯")
private String xyw;
@ApiModelProperty(value = "X型材")
private String xxc;
@ApiModelProperty(value = "X二次装T型材")
private String xtxc;
@ApiModelProperty(value = "D曲板")
private String dqb;
@ApiModelProperty(value = "D型材T")
private String dxc;
@ApiModelProperty(value = "D散件")
private String dsj;
@ApiModelProperty(value = "D大板")
private String ddb;
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String dcCh;
private String dcPl;
private String drr;
private String drrq;
private int drcs=1;
private String xqzt="0";
}

@ -0,0 +1,240 @@
package com.dsic.gj_erp.bean.jhgk;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-09
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="DmYdjh对象", description="")
public class DmYdjh implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "产品")
private String dcCh;
@ApiModelProperty(value = "数据来源船")
private String dcCh1;
@ApiModelProperty(value = "批量")
private String dcPl;
@ApiModelProperty(value = "领取类型")
@TableField("LQLB")
private String lqlb;
@ApiModelProperty(value = "套料图号")
private String tzbh;
@ApiModelProperty(value = "规格")
private String wpgg;
@ApiModelProperty(value = "材质")
private String wpxh;
@ApiModelProperty(value = "划线长度(米)")
private Double hxcd;
@ApiModelProperty(value = "切割长度(米)")
private Double qgcd;
@ApiModelProperty(value = "曲标识")
private String qbs;
@ApiModelProperty(value = "坡口类型")
private Double pklx;
@ApiModelProperty(value = "坡口长度")
private Double pkcd;
@ApiModelProperty(value = "零件数量")
private Double ljsl;
@ApiModelProperty(value = "组立")
private String zl;
@ApiModelProperty(value = "加工类型")
private String lx;
@ApiModelProperty(value = "型材米数")
private Double xcms;
@ApiModelProperty(value = "跨位")
private String kw;
@ApiModelProperty(value = "上料日期")
private String slrq;
@ApiModelProperty(value = "上料人员")
private String slry;
@ApiModelProperty(value = "抛丸")
private String pw;
@ApiModelProperty(value = "抛丸人员")
private String pwry;
@ApiModelProperty(value = "抛丸日期")
private String pwrq;
@ApiModelProperty(value = "划线设备")
private String hxsb;
@ApiModelProperty(value = "划线人员")
private String hxry;
@ApiModelProperty(value = "划线日期")
private String hxrq;
@ApiModelProperty(value = "切割设备")
private String qgsb;
@ApiModelProperty(value = "切割人员")
private String qgry;
@ApiModelProperty(value = "切割日期")
private String qgrq;
@ApiModelProperty(value = "打磨长度")
private Double dmcd;
@ApiModelProperty(value = "打磨设备")
private String dmsb;
@ApiModelProperty(value = "打磨人员")
private String dmry;
@ApiModelProperty(value = "打磨日期")
private String dmrq;
@ApiModelProperty(value = "抛丸设备")
private String pwsb;
@ApiModelProperty(value = "坡口设备")
private String pksb;
@ApiModelProperty(value = "坡口人员")
private String pkry;
@ApiModelProperty(value = "坡口日期")
private String pkrq;
@ApiModelProperty(value = "分段号")
@TableField("DC_FD")
private String dcFd;
@ApiModelProperty(value = "钢加大组结束")
private String gjjsDz;
@ApiModelProperty(value = "钢加小组结束")
private String gjjsXz;
@ApiModelProperty(value = "套料图接收")
private String jsqTlt;
@ApiModelProperty(value = "领取表接收")
private String jsqLqb;
@ApiModelProperty(value = "订货清单号")
private String dhqd;
@ApiModelProperty(value = "订货数量")
private Double orderBs;
@ApiModelProperty(value = "到货数量")
private Double arrivalBs;
@ApiModelProperty(value = "区域")
private String qy;
@ApiModelProperty(value = "矫正标识")
private String jzbs;
@ApiModelProperty(value = "矫正设备")
private String jzsb;
@ApiModelProperty(value = "矫正人员")
private String jzry;
@ApiModelProperty(value = "曲加工设备")
private String qjgsb;
@ApiModelProperty(value = "曲加工人员")
private String qjgry;
@ApiModelProperty(value = "曲加工日期")
private String qjgrq;
@ApiModelProperty(value = "本船号")
@TableField("dcCh2")
private String dcCh2;
@ApiModelProperty(value = "钢加开始")
private String gjks;
@ApiModelProperty(value = "时间更新时间")
private String gxsj;
@ApiModelProperty(value = "划线空程禅道")
private Double hxkcCd;
@ApiModelProperty(value = "切割空程长度")
private Double qgkcCd;
@ApiModelProperty(value = "结束时间")
private String jssj;
@ApiModelProperty(value = "矫正日期")
private String jzrq;
@ApiModelProperty(value = "划线空程长度")
private Double hxcdKc;
@ApiModelProperty(value = "切割空程长度")
private Double qgcdKc;
@ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期")
private String zt;
@ApiModelProperty(value = "根数")
private Double xcgs;
@ApiModelProperty(value = "板材领取重量")
private Double bclqzl;
@ApiModelProperty(value = "板材实耗重量")
private Double bcshzl;
@ApiModelProperty(value = "板材余料重量")
private Double bcylzl;
@ApiModelProperty(value = "板材零件套料重量")
private Double bcljtlzl;
@ApiModelProperty(value = "前批余料代")
private Double bcqpyld;
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String ylbhgg;
private String parentId;
}

@ -0,0 +1,87 @@
package com.dsic.gj_erp.bean.jhgk.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-09-18
*/
@Data
public class GdxqExcel {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "分段")
@ExcelProperty(index = 3)
private String dcFd;
@ApiModelProperty(value = "总段号")
@ExcelProperty(index = 2)
private String zdh;
@ApiModelProperty(value = "大组极重")
@ExcelProperty(index = 4)
private Double dzjz;
@ApiModelProperty(value = "总装部最新分段需求期")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 5)
private String zxfdxq;
@ApiModelProperty(value = "钢料需求")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 6)
private String xzglxq;
@ApiModelProperty(value = "X大板")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 7)
private String xdb;
@ApiModelProperty(value = "X数控件")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 8)
private String xskj;
@ApiModelProperty(value = "X平铁")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 9)
private String xpt;
@ApiModelProperty(value = "X压弯")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 10)
private String xyw;
@ApiModelProperty(value = "X型材")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 11)
private String xxc;
@ApiModelProperty(value = "X二次装T型材")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 12)
private String xtxc;
@ExcelProperty(index = 0)
private String dcCh;
@ExcelProperty(index = 1)
private String dcPl;
@ExcelIgnore
private String zl="xz";
}

@ -0,0 +1,72 @@
package com.dsic.gj_erp.bean.jhgk.excel;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-09-18
*/
@Data
public class GdxqExcel1 {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "分段")
@ExcelProperty(index = 3)
private String dcFd;
@ApiModelProperty(value = "总段号")
@ExcelProperty(index = 2)
private String zdh;
@ApiModelProperty(value = "大组极重")
@ExcelProperty(index = 4)
private String dzjz;
@ApiModelProperty(value = "钢料需求")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 5)
private String dzglxq;
@ApiModelProperty(value = "D曲板")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 6)
private String dqb;
@ApiModelProperty(value = "D型材T")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 7)
private String dxc;
@ApiModelProperty(value = "D散件")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 8)
private String dsj;
@ApiModelProperty(value = "D大板")
@DateTimeFormat("yyyy/MM/dd")
@ExcelProperty(index = 9)
private String ddb;
@ExcelProperty(index = 0)
private String dcCh;
@ExcelProperty(index = 1)
private String dcPl;
@ExcelIgnore
private String zl="dz";
}

@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jcsj.EmSbrydyp;
import com.dsic.gj_erp.bean.request.EmSbrydypBean;
import com.dsic.gj_erp.service.jcsj.EmSbrydypService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

@ -41,9 +41,9 @@ public class DmQfxqController {
@AuthFunction
public ResultBean getList(@RequestBody DmQfxq qfxq){
List<DmQfxq> list=service.list(new QueryWrapper<DmQfxq>()
.eq(StrUtil.isNotEmpty(qfxq.getDcCh()),"DC_CH",qfxq.getDcCh())
.eq(StrUtil.isNotEmpty(qfxq.getDb()),"substring(db,0,8) ",qfxq.getDb())
.eq(StrUtil.isNotEmpty(qfxq.getZt()),"zt",qfxq.getZt())
.eq(StrUtil.isNotEmpty(qfxq.getDcPl()),"DC_PL",qfxq.getDcPl()));
.orderByAsc("DC_CH,cast(dc_pl as int),DC_FD"));
return new ResultBean(list);
}
@ -65,8 +65,7 @@ public class DmQfxqController {
ExcelQFListener objectListener = new ExcelQFListener();
EasyExcel.read(file.getInputStream(), QfExcel.class, objectListener).sheet(0).headRowNumber(1).doRead();
List<QfExcel> objList = objectListener.getObjectList();
service.uploadQf(objList,czbh,req);
return new ResultBean();
return service.uploadQf(objList,czbh,req);
}
//保存

@ -66,11 +66,7 @@ public class DmSygdMxController {
@AuthFunction
public ResultBean symxhz(@RequestBody List<DmSygdMx> list){
Map<String,Object> map=new HashMap<>();
//线表计划
//批量信息
//图纸信息
//到货信息
//跨位生产信息
map.put("xbList",service.getXBList(list));
map.put("plList",service.getPl(list));
map.put("tzList",service.getTZList(list));

@ -0,0 +1,125 @@
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.conditions.update.UpdateWrapper;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
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.service.jhgk.DmSygdxqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import springfox.documentation.spring.web.json.Json;
import javax.servlet.http.HttpServletRequest;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-02
*/
@RestController
@RequestMapping("/dmSygdxq")
public class DmSygdxqController {
@Autowired
private DmSygdxqService service;
@RequestMapping("/getList")
@AuthFunction
public ResultBean getList(@RequestBody Map<String, String> map) {
List<DmSygdxq> list = service.list(new QueryWrapper<DmSygdxq>()
.ge(StrUtil.isNotEmpty(map.get("beginTime")), "xzglxq", map.get("beginTime"))
.le(StrUtil.isNotEmpty(map.get("endTime")), "xzglxq", map.get("endTime"))
.orderByAsc("dc_ch, cast(dc_pl as int),xzglxq"));
if (ObjUtil.isEmpty(list)) {
return new ResultBean();
}
// Map<String, List<DmSygdxq>> groupByZl = list.stream().collect(Collectors.groupingBy(DmSygdxq::getZl));
Map<String, Map<String, Double>> m =
list.stream()
.filter(x -> Objects.nonNull(x.getXzglxq()) && Objects.nonNull(x.getDzjz()))
.collect(Collectors.groupingBy(DmSygdxq::getDcCh
, Collectors.groupingBy(x -> x.getXzglxq().substring(5, 7)
, Collectors.summingDouble(l -> l.getDzjz())
)));
List<Json> list1 = new ArrayList<>();
for (String ch : m.keySet()) {
String str = "\"dcCh\":" +"\"" +ch+"\"" ;
for (String month : m.get(ch).keySet()) {
str += ",\"yf" + month + "\":\"" + m.get(ch).get(month)+"\"";
}
str = "{" + str + "}";
Json j = new Json(str);
list1.add(j);
}
Map map1 = new HashMap();
map1.put("hz", list1);
map1.put("list", list);
return new ResultBean(map1);
}
@PostMapping("/upload")
@AuthFunction
@ResponseBody
public ResultBean uploadQf(@RequestParam("file") MultipartFile file, HttpServletRequest req) throws Exception, CustomException {
ExcelGdxqListener objectListener = new ExcelGdxqListener();
ExcelGdxq1Listener objectListener1 = new ExcelGdxq1Listener();
EasyExcel.read(file.getInputStream(), GdxqExcel.class, objectListener).sheet(0).headRowNumber(1).doRead();
List<GdxqExcel> objList = objectListener.getObjectList();
EasyExcel.read(file.getInputStream(), GdxqExcel1.class, objectListener1).sheet(1).headRowNumber(1).doRead();
List<GdxqExcel1> objList1 = objectListener1.getObjectList();
List<DmSygdxq> list = BeanUtil.copyToList(objList, DmSygdxq.class);
List<DmSygdxq> list1 = BeanUtil.copyToList(objList1, DmSygdxq.class);
String username=(String) req.getAttribute("yhms");
String day=DateUtil.format(DateUtil.date(), "yyyy/MM/dd");
service.saveXzList(list,username,day);
service.saveDzList(list1,username,day);
return new ResultBean();
}
public static void main(String[] agrs) {
// String a = "2023/08/20";
// String b = "2023/08/21";
// System.out.println(a.compareTo(b));
System.out.println(DateUtil.format(DateUtil.nextMonth(),"yyyy/MM"));
// String[] a={"船只", "批量号", "总段号", "分段号", "大组极重", "总装部最新分段需求期", "钢料需求", "X大板", "X数控件", "X平铁", "X压弯", "X型材", "X二次装T型材"};
// String[] b={"船只", "批量号", "总段号", "分段号", "大组极重", "钢料需求", "D大板", "D曲板", "D型材T", "D散件"};
// String[] a1={"dcCh","dcPl", "zdh","dcFd","dzjz","zxfdxq", "glxq", "xdb", "xskj,",
// "xpt,", "xyw", "xxc", "xtxc", };
// String[] b1={"dcCh","dcPl","zdh","dcFd","dzjz","glxq", "dqb", "dxc", "dsj", "ddb"};
// for (int i = 0; i < b.length; i++) {
// System.out.println("{ field: '"+b1[i]+"', title: '"+b[i]+"', width: 120, \n" +
// " filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],\n" +
// " filterRender: { name: 'FilterCombination', },\n" +
// "},");
// }
}
}

@ -0,0 +1,53 @@
package com.dsic.gj_erp.controller.jhgk;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import com.dsic.gj_erp.service.jhgk.DmYdjhService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-09
*/
@RestController
@RequestMapping("/dmYdjh")
public class DmYdjhController {
@Autowired
private DmYdjhService service;
@RequestMapping("/getList")
@AuthFunction
public ResultBean getList(@RequestBody DmSygdMx sygd){
List<DmYdjh> list= service.list(new QueryWrapper<DmYdjh>()
.eq(StrUtil.isNotEmpty(sygd.getDcCh()),"dc_ch",sygd.getDcCh())
.eq(StrUtil.isNotEmpty(sygd.getDcPl()),"dc_pl",sygd.getDcPl())
.ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"jssj",sygd.getBeginTime())
.le(StrUtil.isNotEmpty(sygd.getEndTime()),"jssj",sygd.getEndTime())
.orderByAsc("jssj,dc_ch,dc_pl")
);
return new ResultBean(list);
}
@RequestMapping("/tjydjh")
@AuthFunction
public ResultBean tjydjh(){
service.tjydjh();
return new ResultBean();
}
}

@ -0,0 +1,104 @@
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.excel.GdxqExcel1;
import com.dsic.gj_erp.util.ObjConvertUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Excel
*/
public class ExcelGdxq1Listener extends AnalysisEventListener<GdxqExcel1> {
private static final int BATCH_COUNT = 5;
List<GdxqExcel1> objectList = new ArrayList<>();
List<Object> headList = new ArrayList<>();
private String sheetName;
List<GdxqExcel1> datas = new ArrayList<GdxqExcel1>();
@Override
public void invoke(GdxqExcel1 excelDemo, AnalysisContext analysisContext) {
//每解析一行数据,就会调用该方法一次
//正常在这里调用数据处理得办法
//一条数据添加到暂时存储的存储结构中
boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo);
String dcCh = excelDemo.getDcCh();
String dcpl = excelDemo.getDcPl();
String dcfd = excelDemo.getDcFd();
if(!b && StringUtils.isNotBlank(dcCh) && StringUtils.isNotBlank(dcpl) && StringUtils.isNotBlank(dcfd)){
datas.add(excelDemo);
}
// 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM
if (datas.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
datas.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
//获取sheetName
saveData();
sheetName = context.readSheetHolder().getSheetName();
// LOGGER.info("所有数据解析完成!");
}
//获取表头
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
//把表头数据加入到存储结构中
headList.add(headMap);
}
/**
*
*/
private void saveData() {
//添加到返回的存储结构中,也可直接存储到数据库
objectList.addAll(datas);
}
public List<GdxqExcel1> getDatas() {
return datas;
}
public void setDatas(List<GdxqExcel1> datas) {
this.datas = datas;
}
public List<GdxqExcel1> getObjectList() {
return objectList;
}
public void setObjectList(List<GdxqExcel1> objectList) {
this.objectList = objectList;
}
public String getSheetName() {
return sheetName;
}
public void setSheetName(String sheetName) {
this.sheetName = sheetName;
}
public List<Object> getHeadList() {
return headList;
}
public void setHeadList(List<Object> headList) {
this.headList = headList;
}
}

@ -0,0 +1,104 @@
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.excel.GdxqExcel;
import com.dsic.gj_erp.util.ObjConvertUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Excel
*/
public class ExcelGdxqListener extends AnalysisEventListener<GdxqExcel> {
private static final int BATCH_COUNT = 5;
List<GdxqExcel> objectList = new ArrayList<>();
List<Object> headList = new ArrayList<>();
private String sheetName;
List<GdxqExcel> datas = new ArrayList<GdxqExcel>();
@Override
public void invoke(GdxqExcel excelDemo, AnalysisContext analysisContext) {
//每解析一行数据,就会调用该方法一次
//正常在这里调用数据处理得办法
//一条数据添加到暂时存储的存储结构中
boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo);
String dcCh = excelDemo.getDcCh();
String dcpl = excelDemo.getDcPl();
String dcfd = excelDemo.getDcFd();
if(!b && StringUtils.isNotBlank(dcCh) && StringUtils.isNotBlank(dcpl) && StringUtils.isNotBlank(dcfd)){
datas.add(excelDemo);
}
// 达到BATCH_COUNT了需要去存储一次数据库防止数据几万条数据在内存容易OOM
if (datas.size() >= BATCH_COUNT) {
saveData();
// 存储完成清理 list
datas.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
//获取sheetName
saveData();
sheetName = context.readSheetHolder().getSheetName();
// LOGGER.info("所有数据解析完成!");
}
//获取表头
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
//把表头数据加入到存储结构中
headList.add(headMap);
}
/**
*
*/
private void saveData() {
//添加到返回的存储结构中,也可直接存储到数据库
objectList.addAll(datas);
}
public List<GdxqExcel> getDatas() {
return datas;
}
public void setDatas(List<GdxqExcel> datas) {
this.datas = datas;
}
public List<GdxqExcel> getObjectList() {
return objectList;
}
public void setObjectList(List<GdxqExcel> objectList) {
this.objectList = objectList;
}
public String getSheetName() {
return sheetName;
}
public void setSheetName(String sheetName) {
this.sheetName = sheetName;
}
public List<Object> getHeadList() {
return headList;
}
public void setHeadList(List<Object> headList) {
this.headList = headList;
}
}

@ -0,0 +1,17 @@
package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
/**
* <p>
* Mapper
* </p>
*
* @author xn
* @since 2023-11-02
*/
public interface DmSygdxqMapper extends BaseMapper<DmSygdxq> {
}

@ -0,0 +1,17 @@
package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmYdjh;
/**
* <p>
* Mapper
* </p>
*
* @author xn
* @since 2023-11-09
*/
public interface DmYdjhMapper extends BaseMapper<DmYdjh> {
}

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.jcsj.EmSbcnp;
import com.dsic.gj_erp.bean.jcsj.EmSbrydyp;
import com.dsic.gj_erp.bean.jcsj.EmSbwxjh;
import com.dsic.gj_erp.bean.request.EmSbrydypBean;
import com.dsic.gj_erp.bean.request.EmSbwxjhBean;
import javax.servlet.http.HttpServletRequest;

@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jcsj.EmSbrydyp;
import com.dsic.gj_erp.bean.request.EmSbrydypBean;
import com.dsic.gj_erp.dao.jcsj.EmSbrydypRepository;
import com.dsic.gj_erp.mapper.jcsj.EmSbrydypMapper;
import com.dsic.gj_erp.service.jcsj.EmSbrydypService;

@ -2,6 +2,7 @@ package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.excel.QfExcel;
@ -19,5 +20,5 @@ import java.util.Map;
*/
public interface DmQfxqService extends IService<DmQfxq> {
Map uploadQf(List<QfExcel> list, String project, HttpServletRequest req);
ResultBean uploadQf(List<QfExcel> list, String project, HttpServletRequest req);
}

@ -0,0 +1,20 @@
package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-02
*/
public interface DmSygdxqService extends IService<DmSygdxq> {
void saveXzList(List<DmSygdxq> list, String username, String day);
void saveDzList(List<DmSygdxq> list, String username, String day);
}

@ -0,0 +1,19 @@
package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.jhgk.DmYdjh;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-09
*/
public interface DmYdjhService extends IService<DmYdjh> {
void tjydjh();
}

@ -5,10 +5,13 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jcsj.excel.PlExcel;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.excel.QfExcel;
import com.dsic.gj_erp.mapper.jhgk.DmQfxqMapper;
import com.dsic.gj_erp.service.jhgk.DmQfxqService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -16,6 +19,8 @@ import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* <p>
@ -31,13 +36,21 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
@Override
@Transactional(rollbackFor = Exception.class)
public Map uploadQf(List<QfExcel> list, String project, HttpServletRequest req) {
public ResultBean uploadQf(List<QfExcel> list, String project, HttpServletRequest req) {
List<DmQfxq> listForSave=new ArrayList<>();
Map<String, Set<String>> chs =list.stream().filter(f -> StringUtils.isNotBlank(f.getDcPl()))
.collect(Collectors.groupingBy(QfExcel::getDcCh,Collectors.mapping(QfExcel::getDcPl,Collectors.toSet())));
for (String ch:chs.keySet()){
int i= this.count(new QueryWrapper<DmQfxq>().eq("DC_CH",ch).in("DC_PL",chs.get(ch)));
if (i>0){
return new ResultBean(false,10000, "请勿重复导入,船号:"+ch+",批量:"+chs.get(ch));
}
}
for (QfExcel q:list) {
this.remove(new QueryWrapper<DmQfxq>()
.eq("DC_CH",q.getDcCh())
.eq("DC_PL",q.getDcPl())
.eq("DC_FD",q.getDcFd()));
// this.remove(new QueryWrapper<DmQfxq>()
// .eq("DC_CH",q.getDcCh())
// .eq("DC_PL",q.getDcPl())
// .eq("DC_FD",q.getDcFd()));
DmQfxq a=new DmQfxq();
BeanUtil.copyProperties(q,a);
a.setBzry((String) req.getAttribute("yhms"));
@ -45,6 +58,6 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
listForSave.add(a);
}
this.saveBatch(listForSave);
return null;
return new ResultBean();
}
}

@ -4,6 +4,7 @@ package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.ResultBean;
@ -131,7 +132,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
"pklx,pkcd,qbs,dmcd,ljsl")
.eq("dcch",zrcjh.getDcCh())
.eq("pl",zrcjh.getDcPl().length()<3?"0"+zrcjh.getDcPl():zrcjh.getDcPl())
.eq("cs",3)
// .eq("cs",3)
.groupBy("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
);
@ -181,13 +182,40 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
for (DmBom b:list){
DmSygdMx mx=new DmSygdMx();
zrcToMx(zrcjh,mx);
// mx.setXcms(b.getXcshms());
if (StrUtil.isNotEmpty(b.getZl())){
if(b.getZl().equals("1110")){
mx.setJssj(mx.getGjjsDz());
}
if(b.getZl().equals("1010")){
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("4230")){//焊接机器人肘板
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("1120")){//TODO 光电 暂时按最小时间排
if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0)
mx.setJssj(mx.getGjjsXz());
else
mx.setJssj(mx.getGjjsDz());
}
}else {
if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0)
mx.setJssj(mx.getGjjsDz());
else
mx.setJssj(mx.getGjjsXz());
}
if (mx.getJssj().compareTo("2023/08/01")<0 || mx.getJssj().compareTo("2023/08/31")>0){
break;
}
// 7850 kg 密度 计算重量
String[] wpgg=b.getWpgg().split("\\*");
//立方米
Double d= Double.parseDouble(wpgg[0])*Double.parseDouble(wpgg[1])*Double.parseDouble(wpgg[2])/1000000000.0;
//密度7.85t/m3
Double c=d*7.85;
Double c=0.0;
if (wpgg.length==3){
//立方米
Double d= Double.parseDouble(wpgg[0])*Double.parseDouble(wpgg[1])*Double.parseDouble(wpgg[2])/1000000000.0;
//密度7.85t/m3
c=d*7.85;
}
mx.setBcshzl(c);
mx.setZl(b.getZl());
mx.setTzbh(b.getTzbh());
@ -235,21 +263,8 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
mx.setDcCh2(dcch);
mx.setDcCh1(mbch);
mx.setGxsj(DateUtil.now());
if(b.getZl().equals("1110")){
mx.setJssj(mx.getGjjsDz());
}
if(b.getZl().equals("1010")){
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("4230")){//焊接机器人肘板
mx.setJssj(mx.getGjjsXz());
}
if (b.getZl().equals("1120")){//TODO 光电 暂时按最小时间排
if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0)
mx.setJssj(mx.getGjjsXz());
else
mx.setJssj(mx.getGjjsDz());
}
mxList.add(mx);
}
}
@ -344,46 +359,6 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
//
}
this.saveBatch(list);
// 校平
//抛丸
//根据跨位分组
// Map<String,List<DmSygdMx>> groupByKw=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
// 7 1跨平直大板
// List<DmSygdMx> k1pz=groupByKw.get("7");
// k1pz =k1pz.stream().sorted(Comparator.comparing(DmSygdMx::getPwrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
// //排产
// 划线 切割 坡口 打磨
// k1pz.forEach(k->{
// k.setHxrq(k.getPwrq());
// k.setQgry(k.getPwrq());
// });
//// 8 1跨进线板
// List<DmSygdMx> k1jx=groupByKw.get("8");
//// 11 2跨T型材腹板
// List<DmSygdMx> k2tf=groupByKw.get("11");
//// 5 2跨T型材面板
// List<DmSygdMx> k2tm=groupByKw.get("5");
//// 9 2跨超长超宽板
// List<DmSygdMx> k2c=groupByKw.get("9");
//// 10 2跨超长超宽曲板
// List<DmSygdMx> k2cq=groupByKw.get("10");
//// 12 2跨激光切割板
// List<DmSygdMx> k2j=groupByKw.get("12");
//// 14 3跨厚板
// List<DmSygdMx> k3h=groupByKw.get("14");
//// 6 3跨平铁
// List<DmSygdMx> k3p=groupByKw.get("6");
//// 13 3跨曲板
// List<DmSygdMx> k3q=groupByKw.get("13");
//// 15 4跨普通板
// List<DmSygdMx> k4p=groupByKw.get("15");
//// 16 7跨型板
// List<DmSygdMx> k7x=groupByKw.get("16");
//// 17 光电
// List<DmSygdMx> gd=groupByKw.get("17");
}
/**

@ -0,0 +1,108 @@
package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper;
import com.dsic.gj_erp.service.jhgk.DmSygdxqService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-02
*/
@Service
public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> implements DmSygdxqService {
@Override
@Transactional
public void saveXzList(List<DmSygdxq> list,String username,String day){
list.forEach(l->{
DmSygdxq sygdxq=this.getOne(new QueryWrapper<DmSygdxq>()
.eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl())
.eq("DC_FD",l.getDcFd())
);
if (ObjUtil.isNotEmpty(sygdxq)){
l.setDrcs(sygdxq.getDrcs()+1);
l.setXzglxqOld(sygdxq.getXzglxq());
l.setDrr(username);
l.setDrrq(day);
//状态 2拖期 1提前
if (l.getXzglxq().compareTo(sygdxq.getXzglxq())>0){
l.setXqzt("2");
}
if (l.getXzglxq().compareTo(sygdxq.getXzglxq())<0){
l.setXqzt("1");
}
this.update(new UpdateWrapper<DmSygdxq>()
.set("xzglxq",l.getXzglxq())
.set("xzglxq_old",l.getXzglxqOld())
.set("xdb",l.getXdb())
.set("xskj",l.getXskj())
.set("xpt",l.getXpt())
.set("xyw",l.getXyw())
.set("xxc",l.getXxc())
.set("xtxc",l.getXtxc())
.set("drcs",l.getDrcs())
.set("xqzt",l.getXqzt())
.set("drrq",l.getDrrq())
.set("drr",l.getDrr())
.eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl())
.eq("DC_FD",l.getDcFd())
);
}else {
l.setDrr(username);
l.setDrrq(day);
this.save(l);
}
});
}
@Override
@Transactional
public void saveDzList(List<DmSygdxq> list,String username,String day){
list.forEach(l->{
DmSygdxq sygdxq=this.getOne(new QueryWrapper<DmSygdxq>()
.eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl())
.eq("DC_FD",l.getDcFd())
);
if (ObjUtil.isNotEmpty(sygdxq)){
l.setDrr(username);
l.setDrrq(day);
this.update(new UpdateWrapper<DmSygdxq>()
.set("dzglxq",l.getDzglxq())
.set("dzglxq_old",sygdxq.getDzglxq())
.set("dqb",l.getDqb())
.set("dxc",l.getDxc())
.set("dsj",l.getDsj())
.set("ddb",l.getDdb())
.set("drrq",l.getDrrq())
.set("drr",l.getDrr())
.eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl())
.eq("DC_FD",l.getDcFd())
);
}else {
l.setDrr(username);
l.setDrrq(day);
this.save(l);
}
});
}
}

@ -0,0 +1,42 @@
package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper;
import com.dsic.gj_erp.service.jhgk.DmQfxqService;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
import com.dsic.gj_erp.service.jhgk.DmYdjhService;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-09
*/
@Service
public class DmYdjhServiceImpl extends ServiceImpl<DmYdjhMapper, DmYdjh> implements DmYdjhService {
private DmQfxqService qfxqService;
private DmSygdMxService sygdMxService;
@Override
public void tjydjh(){
//根据 前方需求 三月滚动 排产
//查看前方需求是否已导入
List<DmQfxq> qfxqList= qfxqService.list(new QueryWrapper<DmQfxq>().eq("substring(db,0,8) ", DateUtil.format(DateUtil.nextMonth(),"yyyy/MM")));
sygdMxService.list(new QueryWrapper<DmSygdMx>().eq("",""));
}
}

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper">
</mapper>

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.dsic.gj_erp.bean.jhgk.DmYdjh">
<id column="id" property="id" />
<result column="dc_ch" property="dcCh" />
<result column="dc_ch1" property="dcCh1" />
<result column="dc_pl" property="dcPl" />
<result column="LQLB" property="lqlb" />
<result column="tzbh" property="tzbh" />
<result column="wpgg" property="wpgg" />
<result column="wpxh" property="wpxh" />
<result column="hxcd" property="hxcd" />
<result column="qgcd" property="qgcd" />
<result column="qbs" property="qbs" />
<result column="pklx" property="pklx" />
<result column="pkcd" property="pkcd" />
<result column="ljsl" property="ljsl" />
<result column="zl" property="zl" />
<result column="lx" property="lx" />
<result column="xcms" property="xcms" />
<result column="kw" property="kw" />
<result column="slrq" property="slrq" />
<result column="slry" property="slry" />
<result column="pw" property="pw" />
<result column="pwry" property="pwry" />
<result column="pwrq" property="pwrq" />
<result column="hxsb" property="hxsb" />
<result column="hxry" property="hxry" />
<result column="hxrq" property="hxrq" />
<result column="qgsb" property="qgsb" />
<result column="qgry" property="qgry" />
<result column="qgrq" property="qgrq" />
<result column="dmcd" property="dmcd" />
<result column="dmsb" property="dmsb" />
<result column="dmry" property="dmry" />
<result column="dmrq" property="dmrq" />
<result column="pwsb" property="pwsb" />
<result column="pksb" property="pksb" />
<result column="pkry" property="pkry" />
<result column="pkrq" property="pkrq" />
<result column="DC_FD" property="dcFd" />
<result column="gjjs_dz" property="gjjsDz" />
<result column="gjjs_xz" property="gjjsXz" />
<result column="jsq_tlt" property="jsqTlt" />
<result column="jsq_lqb" property="jsqLqb" />
<result column="dhqd" property="dhqd" />
<result column="order_bs" property="orderBs" />
<result column="arrival_bs" property="arrivalBs" />
<result column="qy" property="qy" />
<result column="jzbs" property="jzbs" />
<result column="jzsb" property="jzsb" />
<result column="jzry" property="jzry" />
<result column="qjgsb" property="qjgsb" />
<result column="qjgry" property="qjgry" />
<result column="qjgrq" property="qjgrq" />
<result column="dcCh2" property="dcCh2" />
<result column="gjks" property="gjks" />
<result column="gxsj" property="gxsj" />
<result column="hxkc_cd" property="hxkcCd" />
<result column="qgkc_cd" property="qgkcCd" />
<result column="jssj" property="jssj" />
<result column="jzrq" property="jzrq" />
<result column="hxcd_kc" property="hxcdKc" />
<result column="qgcd_kc" property="qgcdKc" />
<result column="zt" property="zt" />
<result column="xcgs" property="xcgs" />
<result column="bclqzl" property="bclqzl" />
<result column="bcshzl" property="bcshzl" />
<result column="bcylzl" property="bcylzl" />
<result column="bcljtlzl" property="bcljtlzl" />
<result column="bcqpyld" property="bcqpyld" />
<result column="ylbhgg" property="ylbhgg" />
<result column="parent_id" property="parentId" />
</resultMap>
</mapper>
Loading…
Cancel
Save