mxList;
+}
diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java
index 856eb0a..b060239 100644
--- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java
+++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdController.java
@@ -2,21 +2,33 @@ package com.dsic.gj_erp.controller.jhgk;
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.jcsj.EmSbcnp;
+import com.dsic.gj_erp.bean.jhgk.DmDhqdp;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
+import com.dsic.gj_erp.bean.jhgk.excel.QfExcel;
+import com.dsic.gj_erp.bean.jhgk.excel.SyExcel;
+import com.dsic.gj_erp.exception.CustomException;
+import com.dsic.gj_erp.listeners.ExcelQFListener;
+import com.dsic.gj_erp.listeners.ExcelSYListener;
import com.dsic.gj_erp.service.jhgk.DmSygdService;
import com.dsic.gj_erp.service.sy.SYService;
+import io.swagger.annotations.ApiOperation;
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 org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
/**
*
@@ -36,15 +48,45 @@ public class DmSygdController {
@AuthFunction
public ResultBean getList(@RequestBody DmSygd sygd){
List list= service.list(new QueryWrapper()
- .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())
+ .eq("gd_zt",sygd.getGdZt())
+ .ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"sl_sj",sygd.getBeginTime())
+ .le(StrUtil.isNotEmpty(sygd.getEndTime()),"sl_sj",sygd.getEndTime())
.orderByAsc("dc_ch,dc_pl")
);
return new ResultBean(list);
}
+ @PostMapping("/upload")
+ @AuthFunction
+ @ResponseBody
+ public ResultBean uploadSy(@RequestParam("file") MultipartFile file , HttpServletRequest req) throws Exception, CustomException {
+
+ ExcelSYListener objectListener = new ExcelSYListener();
+ EasyExcel.read(file.getInputStream(), SyExcel.class, objectListener).sheet(0).headRowNumber(1).doRead();
+ List objList = objectListener.getObjectList();
+ service.uploadSy(objList,req);
+ return new ResultBean();
+ }
+
+ //提交
+ //审核
+ //退回
+
+ @ApiOperation(value = "批量提交/退回")
+ @PostMapping("/tj")
+ @AuthFunction
+ @ResponseBody
+ public ResultBean tj(@RequestBody List list){
+ service.tj(list);
+ return new ResultBean();
+ }
+
+ @ApiOperation(value = "批量审核")
+ @PostMapping(value = "/sh")
+ public ResultBean sh(@RequestBody List dmSygds) {
+ service.sh(dmSygds);
+ return new ResultBean();
+ }
}
diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
index 3341a68..ca9c0d5 100644
--- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
+++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxController.java
@@ -5,8 +5,12 @@ 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.jcsj.DmCzplpNew;
+import com.dsic.gj_erp.bean.jcsj.EmSbcnp;
+import com.dsic.gj_erp.bean.jcsj.EmSbjbb;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
+import com.dsic.gj_erp.service.jcsj.EmSbcnpService;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
import com.dsic.gj_erp.service.sy.SYService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -18,6 +22,9 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
/**
*
@@ -33,6 +40,8 @@ public class DmSygdMxController {
@Autowired
private DmSygdMxService service;
+ @Autowired
+ private EmSbcnpService emSbcnpService;
@RequestMapping("/getList")
@AuthFunction
@@ -42,15 +51,10 @@ public class DmSygdMxController {
.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("dc_ch,dc_pl,jssj")
+ .orderByAsc("jssj,dc_ch,dc_pl")
);
return new ResultBean(list);
}
- @RequestMapping("/sygdPC")
- @AuthFunction
- public ResultBean sygdPC(){
- return new ResultBean(service.sygdPC());
- }
@RequestMapping("/saveByDcch")
@AuthFunction
@@ -58,10 +62,41 @@ public class DmSygdMxController {
return new ResultBean(service.saveByDcch(map));
}
- @RequestMapping("/getKwList")
+ @RequestMapping("/symxhz")
+ @AuthFunction
+ public ResultBean symxhz(@RequestBody List list){
+ Map map=new HashMap<>();
+ //线表计划
+ //批量信息
+ //图纸信息
+ //到货信息
+ //跨位生产信息
+ map.put("xbList",service.getXBList(list));
+ map.put("plList",service.getPl(list));
+ map.put("tzList",service.getTZList(list));
+ map.put("dhList",service.getDhList(list));
+ map.put("kwList",service.getKwList(list));
+ return new ResultBean(map);
+ }
+ @RequestMapping("/getCnsb")
@AuthFunction
- public ResultBean getKwList(@RequestBody List list ){
- return new ResultBean(service.getKwList(list));
+ public ResultBean getCnsb(){
+ List list= emSbcnpService.list();
+ Map> map= list.stream().filter(l -> Objects.nonNull(l.getGx())).collect(Collectors.groupingBy(EmSbcnp::getGx));
+ return new ResultBean(map);
+ }
+ @RequestMapping("/sygdPC")
+ @AuthFunction
+ public ResultBean sygdPC(){
+ return new ResultBean(service.sygdPC());
+ }
+
+ @RequestMapping("/saveList")
+ @AuthFunction
+ public ResultBean saveList( @RequestBody List list ){
+ service.saveBatch(list);
+ //TODO 重新排产
+ return new ResultBean();
}
@RequestMapping("/tqSygd")
@@ -69,6 +104,5 @@ public class DmSygdMxController {
public ResultBean tqSygd( ){
return service.tqSygd();
}
-
}
diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java
index e17d425..58977ca 100644
--- a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java
+++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxMapper.java
@@ -3,6 +3,9 @@ package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
+import com.dsic.gj_erp.bean.jhgk.dto.Dhdto;
+
+import java.util.List;
/**
*
@@ -14,4 +17,5 @@ import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
*/
public interface DmSygdMxMapper extends BaseMapper {
+ Dhdto getDhsl(Dhdto dhdto);
}
diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java
index c0f224a..7339b14 100644
--- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java
+++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxService.java
@@ -2,9 +2,8 @@ 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.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
-import com.dsic.gj_erp.bean.jhgk.dto.Kwdto;
+import com.dsic.gj_erp.bean.jhgk.dto.*;
import java.util.HashMap;
import java.util.List;
@@ -22,5 +21,9 @@ public interface DmSygdMxService extends IService {
Map sygdPC();
List saveByDcch(HashMap> map);
List getKwList(List list);
+ List getXBList(List list);
+ List getPl(List list);
+ List getTZList(List list);
+ List getDhList(List list);
ResultBean tqSygd();
}
diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java
index 4ef4afc..529e75a 100644
--- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java
+++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdService.java
@@ -5,7 +5,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmZrcjh;
+import com.dsic.gj_erp.bean.jhgk.excel.SyExcel;
+import org.springframework.web.bind.annotation.RequestBody;
+import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;
@@ -19,6 +22,10 @@ import java.util.Map;
*/
public interface DmSygdService extends IService {
- public Map getSygds();
+ Map getSygds();
+ Map uploadSy(List list, HttpServletRequest req);
+ Boolean tj(List dmSygds);
+ Boolean sh(List dmSygds);
+
}
diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java
index 565b0c0..b0d20fa 100644
--- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java
+++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxServiceImpl.java
@@ -8,25 +8,26 @@ 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.DmBom;
+import com.dsic.gj_erp.bean.jcsj.DmCzplpNew;
import com.dsic.gj_erp.bean.jcsj.EmGcrl;
-import com.dsic.gj_erp.bean.jhgk.DmSygd;
-import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
-import com.dsic.gj_erp.bean.jhgk.DmZrcjh;
-import com.dsic.gj_erp.bean.jhgk.dto.Kwdto;
+import com.dsic.gj_erp.bean.jhgk.*;
+import com.dsic.gj_erp.bean.jhgk.dto.*;
import com.dsic.gj_erp.mapper.jcsj.DmBomMapper;
import com.dsic.gj_erp.mapper.jcsj.EmGcrlMapper;
-import com.dsic.gj_erp.mapper.jhgk.DmSygdMapper;
import com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper;
import com.dsic.gj_erp.mapper.jhgk.DmZrcjhMapper;
+import com.dsic.gj_erp.service.jcsj.DmCzplpNewService;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
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 org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
-import java.util.function.Function;
import java.util.stream.Collectors;
/**
@@ -48,6 +49,12 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
private EmGcrlMapper gcrlMapper;
@Resource
private DmSygdService sygdService;
+ @Resource
+ private DmCzplpNewService plService;
+ @Resource
+ private DmXbjhService xbService;
+ @Resource
+ private DmTzjhService tzjhService;
/**
* 中日程分解
@@ -62,42 +69,63 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
//1.接下来3个月的 中日程 数据
// List zrcjhs= zrcjhMapper.selectList(new QueryWrapper()
// .select("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
-// .between("gjks",
+// .between("gjjs_dz",
+// "(SELECT CONVERT(varchar(10),DATEADD(m,1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111))",
+// "(Select CONVERT(varchar(10), eomonth(GETDATE(),3), 111))").or()
+// .between("gjjs_dz",
// "(SELECT CONVERT(varchar(10),DATEADD(m,1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111))",
// "(Select CONVERT(varchar(10), eomonth(GETDATE(),3), 111))")
// .groupBy("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
// );
-// if (zrcjhs.size()<1){
-// new Exception("中日程中没有未来三个月的数据!");
-// }
- //todo 应该用结束时间排 or
- //测试
+
+ //TODO 需测试
List zrcjhs= zrcjhMapper.selectList(new QueryWrapper()
.select("DC_CH,stuff( ( SELECT ' ' + c.DC_FD FROM dm_zrcjh c WHERE c.DC_CH=dm_zrcjh.DC_CH and c.DC_PL=dm_zrcjh.DC_PL FOR xml path ( '' ) ), 1, 1, '' ) AS dcFd," +
- "DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
- .between("gjks",
+ "DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd,SUM(zl) as zl")
+ .between("gjjs_dz",
+ "2023/08/01",
+ "2023/08/31")
+ .or()
+ .between("gjjs_xz",
"2023/08/01",
"2023/08/31")
.groupBy("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd")
);
- //2.如果未来3个月信息内的船号、批号,已经排产过,那么根据船号、批号删除,重新排
- int i= this.count(new QueryWrapper()
- .eq("dc_ch",zrcjhs.get(0).getDcCh())
- .eq("dc_pl",zrcjhs.get(0).getDcPl())
- );
- if (i>0){
- for (DmZrcjh z:zrcjhs){
- this.remove(new QueryWrapper()
- .eq("dc_ch",z.getDcCh())
- .eq("dc_pl",z.getDcPl()));
- }
- }
+ if (zrcjhs.size()<1){map2.put("message","请导入中日程!");return map2;}
+ List zrcjhsNew=new ArrayList<>();
+ //TODO 2.如果要重新排产,应当先根据 船号、批量 删除对应数父级状态为编制数据,及对应明细数据
+ for (DmZrcjh zrc:zrcjhs){
+ //有父级数据的
+ if (sygdService.remove(new QueryWrapper()
+ .eq("DC_CH",zrc.getDcCh())
+ .eq("DC_PL",zrc.getDcPl())
+ .eq("gd_zt","0")//编辑
+ )) {
+ this.remove(new QueryWrapper()
+ .eq("dc_ch",zrc.getDcCh())
+ .eq("dc_pl",zrc.getDcPl()));
+ zrcjhsNew.add(zrc);
+ }else {
+ //无父级数据的
+ this.remove(new QueryWrapper()
+ .eq("dc_ch",zrc.getDcCh())
+ .eq("dc_pl",zrc.getDcPl())
+ .last("and parent_id is null"));
+ zrcjhsNew.add(zrc);
+ }
+ }
+
+ if(zrcjhsNew.size()<1){
+ map2.put("message","无可排产数据");
+ return map2;
+ }
+
//3.用中日程中的 船号 批量 ,在BOM中找明细
List mxList=new ArrayList<>();
List no_tlt=new ArrayList<>();//在BOM中没有对应数据的中日程信息
- for (DmZrcjh zrcjh : zrcjhs) {
- //②BOM中对应数据
+ for (DmZrcjh zrcjh : zrcjhsNew) {
+ //TODO ②BOM中对应数据 未计算型材数据
List bomList= bomMapper.selectList(new QueryWrapper()
.select("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
@@ -107,6 +135,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
.groupBy("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" +
"pklx,pkcd,qbs,dmcd,ljsl")
);
+
if(bomList.size()<1){
no_tlt.add(zrcjh);
}else {
@@ -152,6 +181,14 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
for (DmBom b:list){
DmSygdMx mx=new DmSygdMx();
zrcToMx(zrcjh,mx);
+// mx.setXcms(b.getXcshms());
+// 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;
+ mx.setBcshzl(c);
mx.setZl(b.getZl());
mx.setTzbh(b.getTzbh());
mx.setLqlb(b.getLqlb());
@@ -227,6 +264,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
m.setDcPl(zrcjh.getDcPl());
m.setDcFd(zrcjh.getDcFd());
m.setGjks(zrcjh.getGjks());
+ m.setBcshzl(zrcjh.getZl());
m.setGjjsDz(zrcjh.getGjjsDz());
m.setGjjsXz(zrcjh.getGjjsXz());
m.setJsqTlt(zrcjh.getJsqTlt());
@@ -245,7 +283,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
List mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class);
List no_tlt_ch= BeanUtil.copyToList(map.get("no_tlt_ch"),DmSygdMx.class);
- //1.根据选择的目标船只,查询数据,为本船只赋值
+ //1.根据选择的*目标船只,查询数据,为本船只赋值
for (DmZrcjh z:zrcjhs){
for (DmSygdMx mx:no_tlt_ch){
if (z.getDcCh().equals(mx.getDcCh())){
@@ -279,33 +317,27 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
* @param list
*/
public void ypc(List list){
- //1.根据钢加结束时间排序,决定生产顺序
+ //1.根据组立结束时间排序,决定生产顺序
list =list.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
- //2.未来3个月的工厂日历信息
+ //2.未来工厂日历信息
List gcrlList= gcrlMapper.selectList(new QueryWrapper()
.eq("xxr","1")
- .between("gl",
- "2023/08/01",
- "2023/08/31")
+// .between("gl","2023/08/01","2023/08/31")
+ .gt("gl","2023/08/01")
+// DateUtil.date().toString("yyyy/MM/dd"))
.orderByAsc("gl"));
//3.预排产
- //TODO 假设:上料产能22张/小时,每天8小时工作时间;又套料图需当天完成
+ //TODO 假设:产能测算266.9;又套料图需当天完成
for (int i = 0; i < gcrlList.size(); i++) {
- for (int j = 0; j < (8*22); j++) {
- int index=(8*22)*i+j;
+ for (int j = 0; j < 266; j++) {
+ int index=266*i+j;
if (list.size()>index){
-// if (list.get(index).getLx().equals("B")){
- //1抛
list.get(index).setPwrq(gcrlList.get(i).getGl());
list.get(index).setSlrq(gcrlList.get(i).getGl());
list.get(index).setHxrq(gcrlList.get(i).getGl());
list.get(index).setQgrq(gcrlList.get(i).getGl());
-// }else {
-// //2抛
-// }
-
}else {
- j=(8*22);
+ j=266;
i=gcrlList.size();
}
}
@@ -354,44 +386,11 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
}
- /**
- * 提取跨位信息
- * @param list
- * @return
- */
- public List getKwList(List list){
- //1.将明细信息,按照跨位分组
- Map> map=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") ));
- List kwdtoList=new ArrayList<>();
- //2.按照日期,统计每个跨位信息
- for (String kw:map.keySet()){
- //根据上料日期分组
- Map> map1=map.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getSlrq()).orElse("0") ));
- for (String rq:map1.keySet()){
- Kwdto kwdto=new Kwdto();
- kwdto.setRq(rq);
- kwdto.setKw(kw);
- List list1=map1.get(rq);
- kwdto.setTlt_sl(list1.size());
- BigDecimal hx_cd=new BigDecimal(0);
- BigDecimal qg_cd=new BigDecimal(0);
- for (DmSygdMx mx:list1){
- hx_cd=hx_cd.add(ObjectUtil.isEmpty(mx.getHxcd())?new BigDecimal(0):mx.getHxcd());
- qg_cd=qg_cd.add(ObjectUtil.isEmpty(mx.getQgcd())?new BigDecimal(0):mx.getQgcd());
- }
- kwdto.setHx_cd(hx_cd);
- kwdto.setQg_cd(qg_cd);
- kwdtoList.add(kwdto);
- }
- }
- kwdtoList=kwdtoList.stream().sorted(Comparator.comparing(Kwdto::getRq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
- return kwdtoList;
- }
-
/**
* 生成3月滚动计划
* @return
*/
+ @Transactional
public ResultBean tqSygd(){
//1.查询未来3个月明细信息
//测试
@@ -567,10 +566,200 @@ public class DmSygdMxServiceImpl extends ServiceImpl i
//1跨 板数 加工 时间
//1跨 板数 加工 时间
}
+ sygdService.remove(new QueryWrapper().eq("DC_CH",sygd.getDcCh()).eq("DC_PL",sygd.getDcPl()));
sygdList.add(sygd);
}
sygdList = sygdList.stream().sorted(Comparator.comparing(DmSygd::getDcCh).thenComparing(DmSygd::getDcPl)).collect(Collectors.toList());
sygdService.saveBatch(sygdList);
return new ResultBean(sygdList);
}
+
+ /**
+ * 提取跨位信息
+ * @param list
+ * @return
+ */
+ public List getKwList(List list){
+ //1.将明细信息,按照跨位分组
+ Map> map=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("") ));
+ List kwdtoList=new ArrayList<>();
+ //2.按照日期,统计每个跨位信息
+ for (String kw:map.keySet()){
+ //TODO 根据上料日期分组
+ Map> map1=map.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getSlrq()).orElse("无法") ));
+ for (String rq:map1.keySet()){
+ Kwdto kwdto=new Kwdto();
+ kwdto.setRq(rq);
+ kwdto.setKw(kw);
+ List list1=map1.get(rq);
+ kwdto.setTlt_sl(list1.size());
+ BigDecimal hx_cd=new BigDecimal(0);
+ BigDecimal qg_cd=new BigDecimal(0);
+ for (DmSygdMx mx:list1){
+ hx_cd=hx_cd.add(ObjectUtil.isEmpty(mx.getHxcd())?new BigDecimal(0):mx.getHxcd());
+ qg_cd=qg_cd.add(ObjectUtil.isEmpty(mx.getQgcd())?new BigDecimal(0):mx.getQgcd());
+ }
+ kwdto.setHx_cd(hx_cd);
+ kwdto.setQg_cd(qg_cd);
+ kwdto.setMxList(list1);
+ kwdtoList.add(kwdto);
+ }
+ }
+ kwdtoList=kwdtoList.stream().sorted(Comparator.comparing(Kwdto::getRq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
+ return kwdtoList;
+ }
+
+ /**
+ * 提取线表信息
+ * @param list
+ * @return
+ */
+ @Override
+ public List getXBList(List list) {
+ //
+ //线表 年月 船号 重量
+ //批量表重量 中日程重量
+ //明细 按船号 月份 分组 计算重量 排产重量
+
+ //1.根据上料时间 从近到远排序
+ list=list.stream()
+ .filter(mx -> Objects.nonNull(mx.getSlrq()))
+ .sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
+ //2.时间范围内线表计划数据
+ String year=list.get(0).getSlrq().substring(0,4);
+ String begin=list.get(0).getSlrq().substring(5,7);
+ String end=list.get(list.size()-1).getSlrq().substring(5,7);
+ List xbjhs=xbService.list(new QueryWrapper()
+ .eq("nf",year)
+ .between("yf",begin,end));
+ List xbjhdtoList= BeanUtil.copyToList(xbjhs,Xbjhdto.class);
+
+ //3.根据月份和船号分组
+ Map> monthAndCh = list.stream()
+ .filter(mx -> Objects.nonNull(mx.getSlrq())) // group by 的字段不能有null值
+ .collect(Collectors.groupingBy(x-> x.getSlrq().substring(5,7)+x.getDcCh()));
+
+ //4.
+ xbjhdtoList.forEach(dmXbjh->{
+ for (String ch:monthAndCh.keySet()){
+ if (dmXbjh.getDcCh().equals(monthAndCh.get(ch).get(0).getDcCh())
+ && dmXbjh.getYf().equals(monthAndCh.get(ch).get(0).getSlrq().substring(5,7))){
+ Double shzl=0.0;
+ for (DmSygdMx mx:monthAndCh.get(ch)){
+ shzl=shzl+mx.getBcshzl();
+ }
+ dmXbjh.setTlt_zl(shzl);
+ dmXbjh.setMxList(monthAndCh.get(ch));
+ }
+ }
+ });
+ xbjhdtoList=xbjhdtoList.stream()
+ .filter(xb -> Objects.nonNull(xb.getTlt_zl()))
+ .sorted(Comparator.comparing(Xbjhdto::getYf)).collect(Collectors.toList());
+ return xbjhdtoList;
+ }
+
+ /**
+ * 提取批量表信息
+ * @param list
+ * @return
+ */
+ @Override
+ public List getPl(List list) {
+ //根据船号 批量 对应
+ //钢加大组结束期 钢加小组结束期 钢加开始
+ //list 按船号 批量 分段 大小组 分组,排序
+ List list1=new ArrayList();
+ Map> map= list.stream().collect(Collectors.groupingBy(mx->mx.getDcCh()+mx.getDcPl()+mx.getDcFd()));
+
+ for (String key:map.keySet()){
+ DmSygdMx mx=map.get(key).get(0);//TODO 测试数据
+ Pldto pl=new Pldto();
+ //小分段
+ DmCzplpNew czplp =plService.getOne(new QueryWrapper()
+ .select("DC_CH,DC_PL,stuff( ( SELECT ' ' + c.DC_FD FROM dm_czplp_new c WHERE c.DC_CH=dm_czplp_new.DC_CH and c.DC_PL=dm_czplp_new.DC_PL FOR xml path ( '' ) ), 1, 1, '' ) AS dcFd,dzjsq,xzjsq")
+ .eq("DC_CH",mx.getDcCh())
+ .eq("DC_PL",mx.getDcPl())
+ .groupBy("DC_CH,DC_PL,dzjsq,xzjsq")
+ );
+
+ if (ObjectUtil.isNotEmpty(czplp)){
+ BeanUtils.copyProperties(czplp,pl);
+ pl.setGjks_pc(mx.getGjks());//TODO 中日程数据
+ pl.setJsq_dz_pc(mx.getGjjsDz());//TODO 中日程数据
+ pl.setJsq_xz_pc(mx.getGjjsXz());//TODO 中日程数据
+ pl.setMxList(map.get(key));
+ list1.add(pl);
+ }
+ //大组 结束期
+ //小组 结束期
+ }
+ list1=list1.stream().sorted(Comparator.comparing(x->x.getDcCh()+x.getDcPl()+x.getJsq_dz_pc()+x.getJsq_xz_pc(),Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
+ return list1;
+ }
+
+ /**
+ * 提取图纸信息
+ * @param list
+ * @return
+ */
+ @Override
+ public List getTZList(List list) {
+ //图纸计划 dmTzjh 船号 批量
+ List tzjhdtos=new ArrayList<>();
+ Map> map= list.stream().collect(Collectors.groupingBy(mx->mx.getDcCh()+mx.getDcPl()));
+ for (String key:map.keySet()){
+ List list1= map.get(key).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
+ DmTzjh tzjh= tzjhService.getOne(new QueryWrapper()
+ .select("DC_CH,DC_PL,xfq_lqb,jsq_lqb,xfq_tlt,jsq_tlt,stuff( ( SELECT ' ' + c.DC_FD FROM dm_tzjh c WHERE c.DC_CH=dm_tzjh.DC_CH and c.DC_PL=dm_tzjh.DC_PL FOR xml path ( '' ) ), 1, 1, '' ) AS dcFd")
+ .eq("DC_CH",list1.get(0).getDcCh())
+ .eq("DC_PL",list1.get(0).getDcPl())
+ .groupBy("DC_CH,DC_PL,xfq_lqb,jsq_lqb,xfq_tlt,jsq_tlt"));
+ if (ObjectUtil.isNotEmpty(tzjh)){
+ Tzjhdto tzjhdto=new Tzjhdto();
+ BeanUtils.copyProperties(tzjh,tzjhdto);
+ tzjhdto.setTzxqq(list1.get(0).getSlrq());//todo 使用上料日期作为需求期
+ tzjhdto.setMxList(list1);
+ tzjhdtos.add(tzjhdto);
+ }
+ }
+ tzjhdtos=tzjhdtos.stream().sorted(Comparator.comparing(Tzjhdto::getTzxqq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
+ return tzjhdtos;
+ }
+
+ /**
+ * 提取到货信息
+ * @param list
+ * @return
+ */
+ @Override
+ public List getDhList(List list) {
+ //船号 批量 订单号
+ Map> map= list.stream()
+ .filter(mx -> Objects.nonNull(mx.getDhqd()))
+ .collect(Collectors.groupingBy(mx->mx.getDcCh()+mx.getDcPl()+mx.getDhqd()));
+
+ List list1=new ArrayList<>();
+ for (String key:map.keySet()){
+ for (DmSygdMx mx:map.get(key)){
+ Dhdto dhdto=new Dhdto();
+ List mxs=new ArrayList<>();
+ dhdto.setDcCh(mx.getDcCh());
+ dhdto.setDcPl(mx.getDcPl());
+ dhdto.setDhqd(mx.getDhqd());
+ String[] str= mx.getWpgg().split("\\*");
+ dhdto.setWphd(str[0]);
+ dhdto.setWpkd(str[1]);
+ dhdto.setWpcd(str[2]);
+ dhdto.setRkxh(mx.getWpxh());
+ dhdto.setGcxqq(mx.getSlrq());
+ dhdto=baseMapper.getDhsl(dhdto);
+ mxs.add(mx);
+ dhdto.setMxList(mxs);
+ list1.add(dhdto);
+ }
+ }
+ //以list为主
+ return list1;
+ }
}
diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java
index f05ec9a..ec9b7f1 100644
--- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java
+++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdServiceImpl.java
@@ -9,9 +9,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jcsj.DmBclqjbp;
import com.dsic.gj_erp.bean.jcsj.DmBom;
+import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmZrcjh;
+import com.dsic.gj_erp.bean.jhgk.excel.QfExcel;
+import com.dsic.gj_erp.bean.jhgk.excel.SyExcel;
import com.dsic.gj_erp.bean.sy.Dm_zhbmp;
import com.dsic.gj_erp.mapper.jcsj.DmBomMapper;
import com.dsic.gj_erp.mapper.jhgk.DmSygdMapper;
@@ -24,6 +27,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -56,59 +60,40 @@ public class DmSygdServiceImpl extends ServiceImpl impleme
return map;
}
+ @Override
+ public Map uploadSy(List list, HttpServletRequest req){
+ List listForSave=new ArrayList<>();
+ for (SyExcel q:list) {
+ //TODO 处理转码字段
+// this.remove(new QueryWrapper()
+// .eq("DC_CH1",q.getDcCh1())
+// .eq("DC_PL",q.getDcPl())
+// .eq("DC_FD",q.getDcFd()));
+ DmSygd a=new DmSygd();
+ BeanUtil.copyProperties(q,a);
+// a.setBzry((String) req.getAttribute("yhms"));
+// a.setBzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd"));
+ listForSave.add(a);
+ }
+ this.saveBatch(listForSave);
+ return null;
+ }
+ public Boolean tj(List dmSygds){
+ dmSygds.forEach(dmSygd->{
+ String zt=dmSygd.getGdZt();
+ String setZt=zt.equals("1")?"0":"1";
+ dmSygd.setGdZt(setZt);
+ });
+ return this.updateBatchById(dmSygds);
+ }
+ public Boolean sh(List dmSygds){
+ dmSygds.forEach(dmSygd->{
+ String setZt="2";
+ dmSygd.setGdZt(setZt);
+ });
+ return this.updateBatchById(dmSygds);
+ }
-
-
-// mx.setKwxx(b.getTzbh().substring(4,8));
-// mx.setKw(b.getTzbh().substring(4,7));
-// mx.setLqlb(b.getTzbh().substring(4,5).equals("N")?"1020":
-// b.getTzbh().substring(4,5).equals("S")?"1010":"X");
-// if (b.getTzbh().substring(7,8).equals("D")){
-// //tlt.substring(7,8).equals("D")?"1110" 中大组立
-// mx.setZl("1110");
-// }else {
-// if (b.getTzbh().substring(5,6).equals("8")){
-// //tlt.substring(5,6).equals("8")?"1120" 光电
-// mx.setZl("1120");
-// }else if(b.getTzbh().substring(6,8).equals("XX")){
-// //tlt.substring(6,8).equals("XX")?"4230" 焊接机器人肘板
-// mx.setZl("4230");
-// }else {
-// //tlt.substring(7,8).equals("X")?"1010" 小组立
-// mx.setZl("1010");
-// }
-// }
-
- // Map> kwxx = mxList.stream().collect(Collectors.groupingBy(DmSygdMx::getKwxx));
-// s.setMxList(mxList);
-// s.setTltSl(mxList.size());
-// s.setSlSl(mxList.size());
-// s.setPwSl(mxList.size());
-// s.setN1ad(ObjectUtil.isNotEmpty(kwxx.get("N1AD"))?kwxx.get("N1AD").size():0);
-// s.setN1ax(ObjectUtil.isNotEmpty(kwxx.get("N1AX"))?kwxx.get("N1AX").size():0);
-// s.setN1ld(ObjectUtil.isNotEmpty(kwxx.get("N1LD"))?kwxx.get("N1LD").size():0);
-// s.setN2bd(ObjectUtil.isNotEmpty(kwxx.get("N2BD"))?kwxx.get("N2BD").size():0);
-// s.setN2bx(ObjectUtil.isNotEmpty(kwxx.get("N2BX"))?kwxx.get("N2BX").size():0);
-// s.setN2cd(ObjectUtil.isNotEmpty(kwxx.get("N2CD"))?kwxx.get("N2CD").size():0);
-// s.setN2cx(ObjectUtil.isNotEmpty(kwxx.get("N2CX"))?kwxx.get("N2CX").size():0);
-// s.setN2jd(ObjectUtil.isNotEmpty(kwxx.get("N2JD"))?kwxx.get("N2JD").size():0);
-// s.setN2jx(ObjectUtil.isNotEmpty(kwxx.get("N2JX"))?kwxx.get("N2JX").size():0);
-// s.setN2td(ObjectUtil.isNotEmpty(kwxx.get("N2TD"))?kwxx.get("N2TD").size():0);
-// s.setN2tx(ObjectUtil.isNotEmpty(kwxx.get("N2TX"))?kwxx.get("N2TX").size():0);
-// s.setN3cd(ObjectUtil.isNotEmpty(kwxx.get("N3CD"))?kwxx.get("N3CD").size():0);
-// s.setN3cx(ObjectUtil.isNotEmpty(kwxx.get("N3CX"))?kwxx.get("N3CX").size():0);
-// s.setN3hd(ObjectUtil.isNotEmpty(kwxx.get("N3HD"))?kwxx.get("N3HD").size():0);
-// s.setN3hx(ObjectUtil.isNotEmpty(kwxx.get("N3HX"))?kwxx.get("N3HX").size():0);
-// s.setN4pd(ObjectUtil.isNotEmpty(kwxx.get("N4PD"))?kwxx.get("N4PD").size():0);
-// s.setN4px(ObjectUtil.isNotEmpty(kwxx.get("N4PX"))?kwxx.get("N4PX").size():0);
-// s.setN4xx(ObjectUtil.isNotEmpty(kwxx.get("N4XX"))?kwxx.get("N4XX").size():0);
-// s.setS2td(ObjectUtil.isNotEmpty(kwxx.get("S2TD"))?kwxx.get("S2TD").size():0);
-// s.setS2tx(ObjectUtil.isNotEmpty(kwxx.get("S2TX"))?kwxx.get("S2TX").size():0);
-// s.setS3pd(ObjectUtil.isNotEmpty(kwxx.get("S3PD"))?kwxx.get("S3PD").size():0);
-// s.setS3px(ObjectUtil.isNotEmpty(kwxx.get("S3PX"))?kwxx.get("S3PX").size():0);
-// s.setS3xx(ObjectUtil.isNotEmpty(kwxx.get("S3XX"))?kwxx.get("S3XX").size():0);
-// s.setX7xd(ObjectUtil.isNotEmpty(kwxx.get("N1AD"))?kwxx.get("N1AD").size():0);
-// s.setX7xx(ObjectUtil.isNotEmpty(kwxx.get("N1AD"))?kwxx.get("N1AD").size():0);
}
diff --git a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
index cb82a3f..4a32a35 100644
--- a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
+++ b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml
@@ -15,7 +15,7 @@
-
+
@@ -41,4 +41,25 @@
+