diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java index 8cb6630..a7e5a95 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmDhqdp.java @@ -89,10 +89,32 @@ public class DmDhqdp implements Serializable { @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; + private TypeEnum type;//T型材,板材,型材 private String plzlsl;//批量组立数量 private String kdzlsl;//跨道组立数量 private String ptybsl;//平铁用板数量 + private String dhqdrq;//日期(订货清单) + private String rev;//版本 + private String revisor;//编制 + private String reviewed;//审核 + private String approved;//批准 @TableField(exist = false) private String xh;//序号列用于去除合计行 + + public void setTxc(){ + this.type=TypeEnum.TXC; + } + + public void setXc(){ + this.type=TypeEnum.XC; + } + + public void setBc(){ + this.type=TypeEnum.BC; + } + + private enum TypeEnum{ + TXC,XC,BC + } } diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java index 6058de4..3bb5785 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java @@ -194,4 +194,7 @@ public class DmSygdMxLj implements Serializable { private String id; + public String getUniqueData(){ + return this.dcch+this.pl+this.tzbh; + } } diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmYdjhController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmYdjhController.java index aff4b95..dd0d101 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmYdjhController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmYdjhController.java @@ -72,72 +72,72 @@ public class DmYdjhController { .orderByAsc("jssj,dc_ch,dc_pl,zl,lqlb") ); - Map> collect = list.stream().collect(Collectors.groupingBy(DmYdjh::getDcCh)); - List> resultMap=new ArrayList<>(); +// Map> collect = list.stream().collect(Collectors.groupingBy(DmYdjh::getDcCh)); +// List> resultMap=new ArrayList<>(); //验证数据获取方法,后续可以都在这里进行获取 - collect.forEach((key,val)->{ - List bcKcxx = kcService.getBcKcxx(key); - List czplpNewList = czplpNewService.list(Wrappers.lambdaQuery() - .eq(DmCzplpNew::getDcCh, key) - ); - - val.forEach(item->{ - Map itemMap = BeanUtil.beanToMap(item); - resultMap.add(itemMap); - bcKcxx.forEach(kc->{ - if (item.getDcCh().equals(kc.getDcCh()) - &&item.getDcFd().equals(kc.getDcPl()) - &&item.getTzbh().equals(kc.getDcTh())){ - itemMap.put("kc",kc); - } - }); - czplpNewList.forEach(czplpNew->{ - if (item.getDcCh().equals(czplpNew.getDcCh())&&item.getDcPl().equals(czplpNew.getDcPl())) { - /// 判断颜色 - itemMap.put("czplpNew", czplpNew); -// if (StringUtils.isBlank(czplpNew.getXfqLqb())|| StringUtils.isBlank(item.getSlrq())) { -// // corlor red -// itemMap.put("color", "red"); -// } else { -// DateTime dateStr1 = DateUtil.parse(czplpNew.getXfqLqb(), "yyyy/MM/dd"); -// DateTime dateStr2 = DateUtil.parse(item.getSlrq(), "yyyy/MM/dd"); -// int result = DateUtil.compare(dateStr1, dateStr2); -// if (result > 0) { -// System.out.println(dateStr1 + " is after " + dateStr2); -// itemMap.put("color", "red"); -// } else if (result < 0) { -// System.out.println(dateStr1 + " is before " + dateStr2); -// -// } else { -// System.out.println(dateStr1 + " is equal to " + dateStr2); -// itemMap.put("color", "yellow"); -// } -// } -// if (StringUtils.isBlank(czplpNew.getXfqTlt())||StringUtils.isBlank(item.getHxrq())) { -// // corlor yellow -// itemMap.put("color", "red"); -// } else { -// DateTime dateStr1 = DateUtil.parse(czplpNew.getXfqTlt(), "yyyy/MM/dd"); -// DateTime dateStr2 = DateUtil.parse(item.getHxrq(), "yyyy/MM/dd"); -// int result = DateUtil.compare(dateStr1, dateStr2); -// if (result > 0) { -// System.out.println(dateStr1 + " is after " + dateStr2); -// itemMap.put("color", "red"); -// } else if (result < 0) { -// System.out.println(dateStr1 + " is before " + dateStr2); +// collect.forEach((key,val)->{ +// List bcKcxx = kcService.getBcKcxx(key); +// List czplpNewList = czplpNewService.list(Wrappers.lambdaQuery() +// .eq(DmCzplpNew::getDcCh, key) +// ); // -// } else { -// System.out.println(dateStr1 + " is equal to " + dateStr2); -// itemMap.put("color", "yellow"); -// } -// } - }else { - // itemMap.put("color", "red"); - } - }); - }); - }); - return new ResultBean(resultMap); +// val.forEach(item->{ +// Map itemMap = BeanUtil.beanToMap(item); +// resultMap.add(itemMap); +// bcKcxx.forEach(kc->{ +// if (item.getDcCh().equals(kc.getDcCh()) +// &&item.getDcFd().equals(kc.getDcPl()) +// &&item.getTzbh().equals(kc.getDcTh())){ +// itemMap.put("kc",kc); +// } +// }); +// czplpNewList.forEach(czplpNew->{ +// if (item.getDcCh().equals(czplpNew.getDcCh())&&item.getDcPl().equals(czplpNew.getDcPl())) { +// /// 判断颜色 +// itemMap.put("czplpNew", czplpNew); +//// if (StringUtils.isBlank(czplpNew.getXfqLqb())|| StringUtils.isBlank(item.getSlrq())) { +//// // corlor red +//// itemMap.put("color", "red"); +//// } else { +//// DateTime dateStr1 = DateUtil.parse(czplpNew.getXfqLqb(), "yyyy/MM/dd"); +//// DateTime dateStr2 = DateUtil.parse(item.getSlrq(), "yyyy/MM/dd"); +//// int result = DateUtil.compare(dateStr1, dateStr2); +//// if (result > 0) { +//// System.out.println(dateStr1 + " is after " + dateStr2); +//// itemMap.put("color", "red"); +//// } else if (result < 0) { +//// System.out.println(dateStr1 + " is before " + dateStr2); +//// +//// } else { +//// System.out.println(dateStr1 + " is equal to " + dateStr2); +//// itemMap.put("color", "yellow"); +//// } +//// } +//// if (StringUtils.isBlank(czplpNew.getXfqTlt())||StringUtils.isBlank(item.getHxrq())) { +//// // corlor yellow +//// itemMap.put("color", "red"); +//// } else { +//// DateTime dateStr1 = DateUtil.parse(czplpNew.getXfqTlt(), "yyyy/MM/dd"); +//// DateTime dateStr2 = DateUtil.parse(item.getHxrq(), "yyyy/MM/dd"); +//// int result = DateUtil.compare(dateStr1, dateStr2); +//// if (result > 0) { +//// System.out.println(dateStr1 + " is after " + dateStr2); +//// itemMap.put("color", "red"); +//// } else if (result < 0) { +//// System.out.println(dateStr1 + " is before " + dateStr2); +//// +//// } else { +//// System.out.println(dateStr1 + " is equal to " + dateStr2); +//// itemMap.put("color", "yellow"); +//// } +//// } +// }else { +// // itemMap.put("color", "red"); +// } +// }); +// }); +// }); + return new ResultBean(list); } @RequestMapping("/hz") diff --git a/src/main/java/com/dsic/gj_erp/pc/DataFactory.java b/src/main/java/com/dsic/gj_erp/pc/DataFactory.java index 45eb3ea..06c8eee 100644 --- a/src/main/java/com/dsic/gj_erp/pc/DataFactory.java +++ b/src/main/java/com/dsic/gj_erp/pc/DataFactory.java @@ -33,6 +33,8 @@ import com.dsic.gj_erp.service.jhgk.DmSygdxqService; import com.dsic.gj_erp.service.jhgk.DmZrcjhService; import com.google.common.collect.ImmutableMap; import com.google.common.util.concurrent.AtomicDouble; +import lombok.Getter; +import lombok.Setter; import lombok.extern.slf4j.Slf4j; import java.io.FileOutputStream; @@ -72,9 +74,10 @@ public class DataFactory { public static void 排产4(){ 装载中日程数据(); 套料图所占工序的资源.clear(); - Manager.排产结果=new ArrayList<>(); + 排产结果=new ArrayList<>(); List<钢料需求> list=读取钢料需求1(); +// list=list.stream().filter(item->"G175K-4".equals(item.getDcCh())&&"116".equals(item.getDcPl())).collect(Collectors.toList()); List<钢料需求> 按批次合并 = 合并批次(list); try { @@ -85,23 +88,27 @@ public class DataFactory { }finally { 清理冗余数据(list); } - } + private static final Map lastedData=new HashMap<>(); + public static void 均衡预占(List<钢料需求> list){ 工序CD接口 _工序CD接口 = getBean(工序CD接口.class); List<工序CD> 工序CDS = _工序CD接口.get(); Map 工序CDMap=new HashMap<>(); 工序CDS.forEach(item->工序CDMap.put(item.getGx(),item)); - + lastedData.clear(); for (钢料需求 item:list){ if (ObjUtil.isNotEmpty(item.getBomList())){ - 均衡计算(item,工序CDMap); + PcDto dto=均衡计算(item,工序CDMap); + if (dto!=null){ + lastedData.put(dto.getCh(),dto); + } } } } - private static void 均衡计算(钢料需求 item,Map 工序CDMap){ + private static PcDto 均衡计算(钢料需求 item,Map 工序CDMap){ Constant.工序 依据工序=Constant.工序.切割; //需求日期可利用范围是±3天 int times=-3; @@ -123,15 +130,22 @@ public class DataFactory { DateTime xzglxq = item.get均衡需求日期().offset(DateField.DAY_OF_YEAR,cd); if (xzglxq.isBefore(DateUtil.date())){ - //break; + //continue; } _资源 = 提取资源(xzglxq); + if (_资源.get_date().isBefore(DateUtil.date())){ - //break; + //continue; } //记录6次计算的全部资源 - tmpList.add(_资源); + PcDto dto=lastedData.get(item.getDcCh()); + if (times==-3){ + tmpList.add(_资源); + }else if (dto!=null&&dto.get_资源().get_date().isBefore(_资源.get_date())){ + tmpList.add(_资源); + } + if (_资源.判断切割设备是否可以被占用(切割各设备需求量)){ 执行排产(item.getBomList(),item.get均衡需求日期(),工序CDMap); break; @@ -142,23 +156,31 @@ public class DataFactory { }while (true); //若在需求期±3天内无法正常排产时,查找最大可用空闲资源进行占用 - AtomicReference date=new AtomicReference<>(); if (times>3){ + AtomicReference<资源> _tmp= new AtomicReference<>(); //查找最小可用资源,进行占用 tmpList.sort(Comparator.comparingDouble((tmp)->tmp.get工序产能MAP().get(Constant.工序.切割).get占用())); tmpList.stream().findFirst().ifPresent(tmp->{ - DateTime offset = DateUtil.parse(tmp.getDate()).offset(DateField.DAY_OF_MONTH, -工序CDMap.get(依据工序).getCd()); - 执行排产(item.getBomList(),offset,工序CDMap); - date.set(tmp.getDate()); + 执行排产(item.getBomList(),tmp.get_date(),工序CDMap); + _tmp.set(tmp); }); + _资源=_tmp.get(); } - if (_资源!=null){ - date.set(_资源.getDate()); - }else { - log.info("船号:{},批次:{},早于当前日期无需排产",item.getDcCh(),item.getDcPl()); - return; - } - log.info("船号:{},批次:{},占用资源成功,切割日期:{}",item.getDcCh(),item.getDcPl(),date.get()); + + log.info("船号:{},批次:{},占用资源成功,切割日期:{}",item.getDcCh(),item.getDcPl(),_资源.getDate()); + PcDto pcDto = new PcDto(); + pcDto.setCh(item.getDcCh()); + pcDto.setPl(item.getDcPl()); + pcDto.set_资源(_资源); + return pcDto; + } + + @Getter + @Setter + private static class PcDto{ + private String ch; + private String pl; + private 资源 _资源; } private static void 执行排产(List list,DateTime 参照需求日期,Map 工序CDMap){ @@ -166,6 +188,10 @@ public class DataFactory { for (Bom bom:list){ 套料图工序 _套料图工序 = 套料图工序工厂(bom); + if ("G175K-12".equals(bom.getDcch())&&"077".equals(bom.getPl())){ + System.out.println(参照需求日期); + } + if (_套料图工序==null){ latch.countDown(); log.info("船号:{},批次:{},图纸编号:{},无法找到对应套料图",bom.getDcch(),bom.getPl(),bom.getTzbh()); diff --git a/src/main/java/com/dsic/gj_erp/pc/dto/data/钢料需求.java b/src/main/java/com/dsic/gj_erp/pc/dto/data/钢料需求.java index e87d1c6..edb8995 100644 --- a/src/main/java/com/dsic/gj_erp/pc/dto/data/钢料需求.java +++ b/src/main/java/com/dsic/gj_erp/pc/dto/data/钢料需求.java @@ -84,7 +84,7 @@ public class 钢料需求 { if (this.均衡需求日期 ==null){ return DateUtil.parse(this.xzglxq,"yyyy/MM/dd"); } - return this.均衡需求日期; + return (DateTime) this.均衡需求日期.clone(); } } diff --git a/src/main/java/com/dsic/gj_erp/pc/dto/套料图工序.java b/src/main/java/com/dsic/gj_erp/pc/dto/套料图工序.java index d24854a..3bdfb0d 100644 --- a/src/main/java/com/dsic/gj_erp/pc/dto/套料图工序.java +++ b/src/main/java/com/dsic/gj_erp/pc/dto/套料图工序.java @@ -188,6 +188,9 @@ public abstract class 套料图工序 implements 套料图工序接口 { Integer cd = 工序CD.get(_工序).getCd(); DateTime dateTime = DateUtil.offsetDay(this._需求日期, cd); 资源 _资源 = 提取资源(dateTime); + if ("G175K-12".equals(bom.getDcch())&&"077".equals(bom.getPl())&&_工序== Constant.工序.切割){ + System.out.println(_资源); + } try { if (_资源.占用资源(_工序,this.bom,需求数量)){ // this.bom.set所在资源(_资源); diff --git a/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java b/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java index b20c400..7b152a9 100644 --- a/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java +++ b/src/main/java/com/dsic/gj_erp/pc/service/三月滚动接口.java @@ -2,6 +2,7 @@ package com.dsic.gj_erp.pc.service; import cn.hutool.core.date.DateTime; 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.dsic.gj_erp.bean.ResultBean; @@ -19,8 +20,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @@ -47,8 +47,10 @@ public class 三月滚动接口 { return new ResultBean(false, 1, "请先导入" + begin + " ~ " + end + "分段钢料需求!"); } - //2.根据 - List mxList = ljList.stream().map(DmSygdMx::ofWithDmSygdMxlj).collect(Collectors.toList()); + List mxList = ljList.stream().collect( + Collectors.collectingAndThen( + Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(DmSygdMxLj::getUniqueData))), ArrayList::new) + ).stream().map(DmSygdMx::ofWithDmSygdMxlj).collect(Collectors.toList()); Map> collect = mxList.stream().collect(Collectors.groupingBy(item -> item.getDcCh() + item.getDcPl())); @@ -62,8 +64,10 @@ public class 三月滚动接口 { _工序产能.get设备().values().forEach(_设备->{ _设备.get资源占用图表().forEach(_bom->{ List dmSygdMxes = collect.get(_bom.getDcch() + _bom.getPl()); - for (DmSygdMx mx:dmSygdMxes){ - mx.更新排产信息(_工序产能.get工序(),_资源.getDate()); + if (ObjectUtil.isNotEmpty(dmSygdMxes)){ + for (DmSygdMx mx:dmSygdMxes){ + mx.更新排产信息(_工序产能.get工序(),_资源.getDate()); + } } }); }); @@ -72,16 +76,14 @@ public class 三月滚动接口 { sygdMxService.saveBatch(mxList,500); - new Thread(()->{ - ljList.forEach(lj-> mxList.forEach(mx->{ - if (lj.getDcch().equals(mx.getDcCh()) - &&lj.getPl().equals(mx.getDcPl()) - && (StrUtil.isBlank(lj.getTzbh())||lj.getTzbh().equals(mx.getTzbh()))){ - lj.setParentId(mx.getId()); - } - })); - ljService.saveBatch(ljList,500); - }).start(); + ljList.forEach(lj-> mxList.forEach(mx->{ + if (lj.getDcch().equals(mx.getDcCh()) + &&lj.getPl().equals(mx.getDcPl()) + && (StrUtil.isBlank(lj.getTzbh())||lj.getTzbh().equals(mx.getTzbh()))){ + lj.setParentId(mx.getId()); + } + })); + ljService.saveBatch(ljList,500); List list= sygdMxService.tqSygd1(begin,end); return new ResultBean<>(list); diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java index 720adbe..6168de1 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmDhqdpServiceImpl.java @@ -12,6 +12,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsic.gj_erp.bean.jhgk.DmDhqdp; import com.dsic.gj_erp.mapper.jhgk.DmDhqdpMapper; import com.dsic.gj_erp.service.jhgk.DmDhqdpService; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.*; @@ -24,6 +25,7 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -68,34 +70,66 @@ public class DmDhqdpServiceImpl extends ServiceImpl impl Sheet sheet = workbook.getSheetAt(0); List mergedRegions = sheet.getMergedRegions(); if (mergedRegions.size() > 74) { - String ddh = null; - String dcch = null; - String qc = null; + String ddh = null,dcch = null; + String qc,date,revisor,reviewed,approved; + + HashMap map = new HashMap<>(); CellRangeAddress ddhAddr = mergedRegions.get(68); if (ddhAddr != null) { ddh = this.getMergedData(sheet, ddhAddr); + map.put("ddh",ddh); } CellRangeAddress chAddr = mergedRegions.get(74); if (chAddr != null) { dcch = this.getMergedData(sheet, chAddr); + map.put("dcch",dcch); } CellRangeAddress qcAddr = mergedRegions.get(75); if (qcAddr != null) { qc = this.getMergedData(sheet, qcAddr); qc=StrUtil.subBetween(qc, "(", ")"); + map.put("qc",qc); + } + + CellRangeAddress dateAddr = mergedRegions.get(103); + if (dateAddr != null) { + date = this.getMergedData(sheet, dateAddr); + map.put("date",date); + } + + CellRangeAddress revisorAddr = mergedRegions.get(107); + if (dateAddr != null) { + revisor = this.getMergedData(sheet, revisorAddr); + map.put("revisor",revisor); + } + + CellRangeAddress reviewedAddr = mergedRegions.get(110); + if (reviewedAddr != null) { + reviewed = this.getMergedData(sheet, reviewedAddr); + map.put("reviewed",reviewed); + } + + CellRangeAddress approvedAddr = mergedRegions.get(111); + if (approvedAddr != null) { + approved = this.getMergedData(sheet, approvedAddr); + map.put("approved",approved); } if (StrUtil.isAllNotEmpty(dcch, ddh)) { List list = new ArrayList<>(); - List dmDhqdps = this.readExcel(file, dcch, ddh, qc, 1, req); - List dmDhqdps1 = this.readExcel(file, dcch, ddh, qc, 2, req); + List dmDhqdps = this.readExcel(file, map, 1, req);//T型材 + List dmDhqdps1 = this.readExcel(file, map, 2, req);//板材 + List dmDhqdps2 = this.readExcel(file, map, 3, req);//型材 if (ObjUtil.isNotEmpty(dmDhqdps)) { list.addAll(dmDhqdps); } if (ObjUtil.isNotEmpty(dmDhqdps1)) { list.addAll(dmDhqdps1); } + if (ObjUtil.isNotEmpty(dmDhqdps1)) { + list.addAll(dmDhqdps2); + } this.saveBatch(list.stream().filter(item->StrUtil.isNotEmpty(item.getDcCh())).collect(Collectors.toList())); return list; } @@ -117,7 +151,7 @@ public class DmDhqdpServiceImpl extends ServiceImpl impl } @Transactional - public List readExcel(MultipartFile file, String dcch, String ddh, String qc, int sheet, HttpServletRequest req) throws IOException { + public List readExcel(MultipartFile file, Map map, int sheet, HttpServletRequest req) throws IOException { ExcelReader reader = ExcelUtil.getReader(file.getInputStream()); Map alias = Maps.newLinkedHashMap(); alias.put("序号\nNo.", "xh"); @@ -149,11 +183,23 @@ public class DmDhqdpServiceImpl extends ServiceImpl impl .eq("qc", qc)); dmDhqdps.stream().filter(item->StrUtil.isNotEmpty(item.getXh())&&!item.getXh().contains("合计")) .forEach(l -> { - l.setDcCh(dcch); - l.setQdh(ddh); - l.setQc(qc); + l.setDcCh(map.get("dcch")); + l.setQdh(map.get("ddh")); + l.setQc(map.get("qc")); + l.setDhqdrq(map.get("date")); + l.setRevisor(map.get("revisor")); + l.setReviewed(map.get("reviewed")); l.setDrr(user); l.setDrrq(day); + if (sheet==1){ + l.setTxc(); + } + if (sheet==2){ + l.setBc(); + } + if (sheet==3){ + l.setXc(); + } }); return dmDhqdps; } 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 81b97e6..0d1e7bc 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 @@ -102,9 +102,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i }).collect(Collectors.toList()); this.updateBatchById(collect); //生成作业计划 - new Thread(()->{ - this.generateYdjh(sygdMxes); - }).start(); + this.generateYdjh(sygdMxes); } } @@ -113,6 +111,11 @@ public class DmSygdMxServiceImpl extends ServiceImpl i List ydjhList = sygdMxes.stream().map(item -> { DmYdjh dmYdjh = new DmYdjh(); BeanUtil.copyProperties(item, dmYdjh); + dmYdjh.setSljhrq(item.getSlrq()); + dmYdjh.setPwjhrq(item.getPwrq()); + dmYdjh.setHxjhrq(item.getHxrq()); + dmYdjh.setQgjhrq(item.getQgrq()); + dmYdjh.setZt("0"); return dmYdjh; }).collect(Collectors.toList()); ydjhList.forEach(l->{ @@ -985,7 +988,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i List list = this.list(Wrappers.lambdaQuery() .eq(StrUtil.isNotEmpty(zt),DmSygdMx::getZt,zt) .between(DmSygdMx::getJssj, begin, end) - .orderBy(true,true,DmSygdMx::getDcCh,DmSygdMx::getDcPl,DmSygdMx::getSlrq) + .orderBy(true,true,DmSygdMx::getSlrq) ); Map> collect = list.stream().collect(Collectors.groupingBy(item -> item.getDcCh() +"_"+ item.getDcPl())); diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdxqServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdxqServiceImpl.java index 0641498..a14333b 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdxqServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdxqServiceImpl.java @@ -5,19 +5,22 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsic.gj_erp.bean.jcsj.DmBom; import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.dsic.gj_erp.bean.jhgk.DmDhqdp; import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmSygdxq; import com.dsic.gj_erp.bean.jhgk.DmSygdxqOld; import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper; +import com.dsic.gj_erp.pc.dto.data.Bom; import com.dsic.gj_erp.service.jcsj.DmBomService; import com.dsic.gj_erp.service.jcsj.DmCbxxpService; -import com.dsic.gj_erp.service.jcsj.impl.DmBomServiceImpl; +import com.dsic.gj_erp.service.jhgk.DmDhqdpService; import com.dsic.gj_erp.service.jhgk.DmSygdMxService; import com.dsic.gj_erp.service.jhgk.DmSygdxqOldService; import com.dsic.gj_erp.service.jhgk.DmSygdxqService; @@ -25,8 +28,10 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.Optional; +import java.util.stream.Collectors; /** *

@@ -48,7 +53,8 @@ public class DmSygdxqServiceImpl extends ServiceImpl i @Autowired DmCbxxpService dmCbxxpService; @Autowired - private DmBomServiceImpl dmBomServiceImpl; + DmDhqdpService dhqdpService; + @Override @Transactional @@ -158,19 +164,168 @@ public class DmSygdxqServiceImpl extends ServiceImpl i DmCbxxp one = dmCbxxpService.getOne(Wrappers.lambdaQuery() .eq(DmCbxxp::getCbbm, xq.getDcCh()) ); - Optional.ofNullable(one).ifPresent(item->{ + + if (one!=null){ List bomList = bomService.list(Wrappers.lambdaQuery() .eq(DmBom::getDcch, xq.getDcCh()) .eq(DmBom::getPl, xq.getDcPl()) .eq(DmBom::getFd, xq.getDcFd()) ); xq.setBomList(bomList); - }); + }else{//bom不存在从订货清单获取数据 + List list = dhqdpService.list(Wrappers.lambdaQuery().eq(DmDhqdp::getDcCh, xq.getDcCh())); + List collect = list.stream().filter(item -> item.getPlzlsl().contains(pl)).collect(Collectors.toList()); + + List bomList=new ArrayList<>(); + collect.forEach(item->{ + int num = item.getSdzs().intValue(); + for (int i=0;i{ + String kd= String.valueOf(it.charAt(1)); + String kw= String.valueOf(it.charAt(0)); + String kw4= String.valueOf(it.charAt(2)); + String zl=String.valueOf(it.charAt(3)); + switch (kd){ + case "1": + this.handlerFor1(bom,zl,kw,kw4); + break; + case "2": + this.handlerFor2(bom,zl,kw,kw4); + break; + case "3": + this.handlerFor3(bom,zl,kw,kw4); + break; + case "4": + this.handlerFor4(bom,zl,kw,kw4); + break; + case "7"://型材 + this.handlerFor7(bom,zl,kw,kw4); + break; + case "8"://光电 + this.handlerFor8(bom,zl,kw,kw4); + break; + } + }); + bomList.add(bom); + } + + }); + xq.setBomList(bomList); + + } } } return xqWithBom; } + private void handlerFor1(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1010"); + } + if ("D".equals(zl)){ + bom.setZl("1110"); + } + if ("N".equals(kw)&&"A".equals(kw4)){ + bom.setKw("7"); + } + if ("N".equals(kw)&&"L".equals(kw4)){ + bom.setKw("8"); + } + } + + private void handlerFor2(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1010"); + } + if ("D".equals(zl)){ + bom.setZl("1110"); + } + if ("S".equals(kw)&&"T".equals(kw4)){ + bom.setKw("5"); + } + if ("N".equals(kw)&&"B".equals(kw4)){ + bom.setKw("9"); + } + if ("N".equals(kw)&&"C".equals(kw4)){ + bom.setKw("10"); + } + if ("N".equals(kw)&&"T".equals(kw4)){ + bom.setKw("11"); + } + if ("N".equals(kw)&&"J".equals(kw4)){ + bom.setKw("12"); + } + } + + private void handlerFor3(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1010"); + } + if ("D".equals(zl)){ + bom.setZl("1110"); + } + if ("X".equals(zl)){ + bom.setZl("4230"); + } + if ("S".equals(kw)&&"P".equals(kw4)){ + bom.setKw("6"); + } + if ("S".equals(kw)&&"X".equals(kw4)){ + bom.setKw("6"); + } + if ("N".equals(kw)&&"C".equals(kw4)){ + bom.setKw("13"); + } + if ("N".equals(kw)&&"H".equals(kw4)){ + bom.setKw("14"); + } + } + + private void handlerFor4(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1010"); + } + if ("D".equals(zl)){ + bom.setZl("1110"); + } + if ("X".equals(zl)){ + bom.setZl("4230"); + } + if ("N".equals(kw)&&"P".equals(kw4)){ + bom.setKw("15"); + } + if ("N".equals(kw)&&"X".equals(kw4)){ + bom.setKw("15"); + } + } + + private void handlerFor7(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1010"); + } + if ("D".equals(zl)){ + bom.setZl("1110"); + } + if ("X".equals(kw)&&"X".equals(kw4)){ + bom.setKw("16"); + } + } + + private void handlerFor8(DmBom bom,String zl,String kw,String kw4){ + if ("X".equals(zl)){ + bom.setZl("1120"); + } + if ("N".equals(kw)&&"G".equals(kw4)){ + bom.setKw("17"); + } + } + private List t2(String from, String to,String dcch,String pl){ return baseMapper.getXqWithBom2(from,to,dcch,pl); } diff --git a/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java b/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java index d3e1fc0..30d6e39 100644 --- a/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java +++ b/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java @@ -38,7 +38,7 @@ public class ZyjhService extends ServiceImpl { } public List> gxjhwcqk(){ - DateTime date = DateUtil.lastMonth(); + DateTime date = DateUtil.date(); String from= DateUtil.beginOfMonth(date).toString("yyyy/MM/dd"); String to =DateUtil.endOfMonth(date).toString("yyyy/MM/dd"); return baseMapper.gxjhwcqk(from,to); @@ -49,14 +49,14 @@ public class ZyjhService extends ServiceImpl { } public List> jhwcqk(){ - DateTime date = DateUtil.lastMonth(); + DateTime date = DateUtil.date(); String from= DateUtil.beginOfMonth(date).toString("yyyy/MM/dd"); String to =DateUtil.endOfMonth(date).toString("yyyy/MM/dd"); return baseMapper.jhwcqk(from,to); } public Map gekuachaliang(){ - DateTime date = DateUtil.lastMonth(); + DateTime date = DateUtil.date(); String from= DateUtil.beginOfMonth(date).toString("yyyy/MM/dd"); String to =DateUtil.endOfMonth(date).toString("yyyy/MM/dd"); return baseMapper.gekuachaliang(from,to,"11"); diff --git a/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml b/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml index 001baca..111e0f8 100644 --- a/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml +++ b/src/main/resources/mappers/jhgk/DmSygdxqMapper.xml @@ -62,8 +62,9 @@ ) a where a.rn=1 - order by a.xzglxq + order by a.dc_ch,a.dc_pl +