From 44910e569bf287b1266b6a413c042e388554b24f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=93=B2=E5=A5=87?= <13840175730@139.com> Date: Wed, 19 Feb 2025 17:04:17 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=96=B0=E5=AF=BC=E5=85=A5=E6=9C=88=E5=BA=A6?= =?UTF-8?q?=E8=AE=A1=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 4 +- .../dsic/gj_erp/bean/jhgk/YdjhImportNew.java | 163 +++++ .../com/dsic/gj_erp/bean/pgd/PgdTzjh.java | 15 +- .../jhgk/YdjhImportNewController.java | 65 ++ .../listeners/ExcelYdjhImportNewListener.java | 31 + .../mapper/jhgk/YdjhImportNewMapper.java | 14 + .../jhgk/impl/YdjhImportNewService.java | 616 ++++++++++++++++++ .../mappers/jhgk/YdjhImportNewMapper.xml | 9 + 8 files changed, 911 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/YdjhImportNew.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/YdjhImportNewController.java create mode 100644 src/main/java/com/dsic/gj_erp/listeners/ExcelYdjhImportNewListener.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/YdjhImportNewMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportNewService.java create mode 100644 src/main/resources/mappers/jhgk/YdjhImportNewMapper.xml diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java index 8e8e8f1..d051e32 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMx.java @@ -281,6 +281,7 @@ public class DmSygdMx implements Serializable { } } + public static DmSygdMx ofWithDmSygdMxlj(DmSygdMxLj lj){ DmSygdMx mx = new DmSygdMx(); BeanUtil.copyProperties(lj,mx); @@ -374,7 +375,4 @@ public class DmSygdMx implements Serializable { this.ylbhgg=bom.getYlbhgg(); } - public boolean isAvailable(){ - return !StrUtil.isAllBlank(this.slrq,this.xcpw,this.pw,this.qgrq,this.qgjs,this.mbjb,this.xcmb,this.fdxq,this.gdjs); - } } diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/YdjhImportNew.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/YdjhImportNew.java new file mode 100644 index 0000000..7022714 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/YdjhImportNew.java @@ -0,0 +1,163 @@ +package com.dsic.gj_erp.bean.jhgk; + +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 com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + + +@Getter +@Setter +@TableName("ydjh_import_new") +public class YdjhImportNew { + + @TableId(type = IdType.AUTO) + private String id; + + @ExcelProperty("序号") + private String xh; + + @ExcelProperty("产品") + private String dcCh; + + @ExcelProperty("批量") + private String dcPl; + + @ExcelProperty("分段") + private String dcFd; + + @ExcelProperty("板数") + private String 板数; + + @ExcelProperty("上料\n完成") + @DateTimeFormat("yyyy/MM/dd") + private String 上料完成; + + @ExcelProperty("型材抛丸") + @DateTimeFormat("yyyy/MM/dd") + private String 型材抛丸; + + @ExcelProperty("抛丸\n完成") + @DateTimeFormat("yyyy/MM/dd") + private String 抛丸完成; + + @ExcelProperty("一垮\n龙门\n板数") + private String 一垮龙门板数; + + @ExcelProperty("一垮\n数控\n板数") + private String 一垮数控板数; + + @ExcelProperty(value = "切割完成",index = 10) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成1; + + @ExcelProperty("二垮\n面板\n板数") + private String 二跨面板板数; + + @ExcelProperty(value = "切割完成",index = 12) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成2; + + @ExcelProperty("二垮\n数控\n板数") + private String 二跨数控板数; + + @ExcelProperty(value = "切割完成",index = 14) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成3; + + @ExcelProperty("三垮\n平铁\n板数") + private String 三跨平铁板数; + + @ExcelProperty(value = "切割完成",index = 16) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成4; + + @ExcelProperty("曲平铁曲完成") + @DateTimeFormat("yyyy/MM/dd") + private String 曲平铁曲完成; + + @ExcelProperty("三垮\n数控\n板数") + private String 三跨数控板数; + + @ExcelProperty(value = "切割完成",index = 19) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成5; + + @ExcelProperty("曲外板曲完成") + @DateTimeFormat("yyyy/MM/dd") + private String 曲外板曲完成; + + @ExcelProperty("四区\n腹板\n板数") + private String 四区腹板板数; + + @ExcelProperty(value = "切割完成",index = 22) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成6; + + @ExcelProperty("四区\n数控\n板数") + private String 四区数控板数; + + @ExcelProperty(value = "切割完成",index = 24) + @DateTimeFormat("yyyy/MM/dd") + private String 切割完成7; + + @ExcelProperty("面板挤边完成") + @DateTimeFormat("yyyy/MM/dd") + private String 面板挤边完成; + + @ExcelProperty("面板切割完成") + @DateTimeFormat("yyyy/MM/dd") + private String 面板切割完成; + + @ExcelProperty("七垮\n型材\n米数") + private String 七跨型材米数; + + @ExcelProperty("型材切割完成") + @DateTimeFormat("yyyy/MM/dd") + private String 型材切割完成; + + @ExcelProperty("光电 完成") + @DateTimeFormat("yyyy/MM/dd") + private String 光电完成; + + @ExcelProperty("小组\n配送\n完成") + @DateTimeFormat("yyyy/MM/dd") + private String 小组配送完成; + + @ExcelProperty("备注") + private String 备注; + + private String fdxq; + + private String 文件名; + + private boolean nonBom=true; + + private String mbcz; + + private String qfxqrqxz; + + private String qfxqrqdz; + + private String zt="0"; + + private String bzr; + + private String bzrq; + + public void tj(){ + this.zt=ZtEnum.TJ.ordinal()+""; + } + + public void sh(){ + this.zt=ZtEnum.SH.ordinal()+""; + } + + public enum ZtEnum{ + BZ,TJ,SH + } + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/pgd/PgdTzjh.java b/src/main/java/com/dsic/gj_erp/bean/pgd/PgdTzjh.java index 3a0d357..89e9f33 100644 --- a/src/main/java/com/dsic/gj_erp/bean/pgd/PgdTzjh.java +++ b/src/main/java/com/dsic/gj_erp/bean/pgd/PgdTzjh.java @@ -3,6 +3,7 @@ package com.dsic.gj_erp.bean.pgd; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.dsic.gj_erp.bean.jhgk.YdjhImport; +import com.dsic.gj_erp.bean.jhgk.YdjhImportNew; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -80,15 +81,23 @@ public class PgdTzjh implements Serializable { private String fkry; - public static PgdTzjh of(YdjhImport jh,String pl){ + public static PgdTzjh of(YdjhImport jh, String pl){ + PgdTzjh tzjh = new PgdTzjh(); + tzjh.setCzbh(jh.getDcCh()); + tzjh.setPl(pl); + tzjh.setQfxqrqxz(jh.getQfxqrqxz()); + tzjh.setQfxqrqdz(jh.getQfxqrqdz()); + tzjh.setZt("01"); + return tzjh; + } + + public static PgdTzjh of(YdjhImportNew jh, String pl){ PgdTzjh tzjh = new PgdTzjh(); tzjh.setCzbh(jh.getDcCh()); tzjh.setPl(pl); tzjh.setQfxqrqxz(jh.getQfxqrqxz()); tzjh.setQfxqrqdz(jh.getQfxqrqdz()); -// tzjh.setFd(fd); tzjh.setZt("01"); -// tzjh.setTzzt("0"); return tzjh; } } diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/YdjhImportNewController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/YdjhImportNewController.java new file mode 100644 index 0000000..ae6f61e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/YdjhImportNewController.java @@ -0,0 +1,65 @@ +package com.dsic.gj_erp.controller.jhgk; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; +import com.dsic.gj_erp.annotation.AuthFunction; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.jhgk.YdjhImportNew; +import com.dsic.gj_erp.listeners.ExcelYdjhImportNewListener; +import com.dsic.gj_erp.service.jhgk.impl.YdjhImportNewService; +import lombok.AllArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.List; + + +@RestController +@RequestMapping("ydjhImportNew") +@AllArgsConstructor +public class YdjhImportNewController { + + private final YdjhImportNewService ydjhImportNewService; + + @GetMapping("listByFileName") + public ResultBean listByFileName(String fileName) { + return new ResultBean<>(ydjhImportNewService.listByFileName(fileName)); + } + + @RequestMapping("/getFileNameList") + public ResultBean getFileNameList(){ + return new ResultBean<>(ydjhImportNewService.getFileNameList()); + } + + @RequestMapping("/ydjhImportNew") + @AuthFunction + public ResultBean ydjhImportNew(@RequestParam("file") MultipartFile file, HttpServletRequest req) throws IOException { + ExcelYdjhImportNewListener objectListener = new ExcelYdjhImportNewListener(); + EasyExcel.read(file.getInputStream(), YdjhImportNew.class, objectListener).sheet(0).headRowNumber(1).doRead(); + List objList = objectListener.getObjectList(); + + String fileName = file.getOriginalFilename(); + fileName= StrUtil.removeSuffix(fileName, ".xls"); + fileName=StrUtil.removeSuffix(fileName, ".xlsx"); + ydjhImportNewService.handler(objList, fileName, req); + return new ResultBean(fileName); + } + + @GetMapping("/tj") + public ResultBean tj(String fileName) { + ydjhImportNewService.tj(fileName); + return new ResultBean<>(); + } + + @GetMapping("/sh") + public ResultBean sh(String fileName) { + ydjhImportNewService.sh(fileName); + return new ResultBean<>(); + } +} diff --git a/src/main/java/com/dsic/gj_erp/listeners/ExcelYdjhImportNewListener.java b/src/main/java/com/dsic/gj_erp/listeners/ExcelYdjhImportNewListener.java new file mode 100644 index 0000000..fdc02e8 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/listeners/ExcelYdjhImportNewListener.java @@ -0,0 +1,31 @@ +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.YdjhImportNew; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Excel通用监听器 + */ +public class ExcelYdjhImportNewListener extends AnalysisEventListener { + + @Getter + List objectList = new ArrayList<>(); + + @Override + public void invoke(YdjhImportNew excelDemo, AnalysisContext analysisContext) { + objectList.add(excelDemo); + } + + @Override + public void doAfterAllAnalysed(AnalysisContext analysisContext) { + + } + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/YdjhImportNewMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/YdjhImportNewMapper.java new file mode 100644 index 0000000..b169def --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/YdjhImportNewMapper.java @@ -0,0 +1,14 @@ +package com.dsic.gj_erp.mapper.jhgk; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.YdjhImport; +import com.dsic.gj_erp.bean.jhgk.YdjhImportNew; +import org.apache.ibatis.annotations.Mapper; + +import java.util.List; + +@Mapper +public interface YdjhImportNewMapper extends BaseMapper { + + List getFileNameList(); +} diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportNewService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportNewService.java new file mode 100644 index 0000000..f931a79 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/YdjhImportNewService.java @@ -0,0 +1,616 @@ +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.ObjUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.core.toolkit.support.SFunction; +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.*; +import com.dsic.gj_erp.bean.jhgk.excel.JhxfExcel; +import com.dsic.gj_erp.bean.pgd.PgdTzjh; +import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper; +import com.dsic.gj_erp.mapper.jhgk.YdjhImportMapper; +import com.dsic.gj_erp.mapper.jhgk.YdjhImportNewMapper; +import com.dsic.gj_erp.service.jcsj.DmBomService; +import com.dsic.gj_erp.service.jcsj.DmCbxxpService; +import com.dsic.gj_erp.service.jhgk.DmSygdMxService; +import com.dsic.gj_erp.service.jhgk.DmYdjhService; +import com.dsic.gj_erp.service.pgd.PgdTzjhService; +import lombok.AllArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.support.TransactionTemplate; + +import javax.servlet.http.HttpServletRequest; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; +import java.util.function.Consumer; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class YdjhImportNewService extends ServiceImpl { + + private final DmSygdxqMapper sygdxqMapper; + private final DmBomService bomService; + private final DmCbxxpService dmCbxxpService; + private final PgdTzjhService tzjhService; + private final DmYdjhService dmYdjhService; + private final TransactionTemplate transactionTemplate; + private final DmSygdMxService sygdMxService; + private final RedisTemplate redisTemplate; + + private static final String GJSCGK_SYGDMX_KEY = "GJSCGK::SYGDMX::"; + private static final String GJSCGK_TZJH_KEY = "GJSCGK::TZJH::"; + + public List getFileNameList() { + return baseMapper.getFileNameList(); + } + + public List listByFileName(String fileName) { + List list = this.list(Wrappers.lambdaQuery() + .eq(StrUtil.isNotEmpty(fileName), YdjhImportNew::get文件名, fileName) + .orderByAsc(YdjhImportNew::getId) + ); + list.stream().filter(item->StrUtil.isNotEmpty(item.getDcPl())) + .forEach(item->{ + List bomList = bomService.getBomUni(item.getDcCh(),item.getDcPl()); + if (ObjUtil.isNotEmpty(bomList)){ + item.set板数(bomList.size()+""); + Map> collect = bomList.stream().collect(Collectors.groupingBy(DmBom::getKw)); + //一垮龙门和一垮数控 + if (item.get切割完成1() != null) { + Optional.ofNullable(collect.get("7")).ifPresent(bom -> { + item.set一垮龙门板数(bom.size()+""); + }); + + Optional.ofNullable(collect.get("8")).ifPresent(bom -> { + item.set一垮数控板数(bom.size()+""); + }); + } + + if (item.get切割完成2() != null) { + Optional.ofNullable(collect.get("5")).ifPresent(bom -> { + item.set二跨面板板数(bom.size()+""); + }); + } + + if (item.get切割完成3() != null) { + AtomicInteger atomicInteger = new AtomicInteger(0); + Optional.ofNullable(collect.get("9")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + + Optional.ofNullable(collect.get("10")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + + Optional.ofNullable(collect.get("12")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + item.set二跨数控板数(atomicInteger.toString()); + } + + if (item.get切割完成4() != null) { + AtomicInteger atomicInteger = new AtomicInteger(0); + Optional.ofNullable(collect.get("6")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + + Optional.ofNullable(collect.get("14")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + item.set三跨平铁板数(atomicInteger.toString()); + } + + if (item.get切割完成5() != null) { + Optional.ofNullable(collect.get("13")).ifPresent(bom -> { + item.set三跨数控板数(bom.size()+""); + }); + } + + if (item.get切割完成6() != null) { + Optional.ofNullable(collect.get("11")).ifPresent(bom -> { + item.set四区腹板板数(bom.size()+""); + }); + } + + if (item.get切割完成7() != null) { + AtomicInteger atomicInteger = new AtomicInteger(0); + Optional.ofNullable(collect.get("15")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + + Optional.ofNullable(collect.get("16")).ifPresent(bom -> { + atomicInteger.addAndGet(bom.size()); + }); + item.set四区数控板数(atomicInteger.toString()); + } + } + }); + return list; + } + + public void sh(String fileName) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(YdjhImportNew::get文件名, fileName) + .eq(YdjhImportNew::getZt, YdjhImportNew.ZtEnum.TJ.ordinal()); + List list = this.updateData(wrapper, YdjhImportNew::sh); + if (ObjUtil.isEmpty(list)){ + return; + } + List updateList=new ArrayList<>(); + list.stream().filter(item->StrUtil.isAllNotEmpty(item.getDcCh(),item.getDcPl())) + .forEach(item->{ + String dcPl = item.getDcPl(); + + try { + dcPl = String.format("%03d", Integer.parseInt(dcPl)); + } catch (Exception ignored) { + } + List ydjhList = dmYdjhService.list(Wrappers.lambdaQuery().eq(DmYdjh::getDcCh, dcPl)); + if (ObjUtil.isNotEmpty(ydjhList)){ + Map> collect = ydjhList.stream().collect(Collectors.groupingBy(DmYdjh::getKw)); + //一垮龙门和一垮数控 + if (item.get切割完成1() != null) { + Optional.ofNullable(collect.get("7")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成1()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + + Optional.ofNullable(collect.get("8")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成1()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成2() != null) { + Optional.ofNullable(collect.get("5")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成2()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成3() != null) { + Optional.ofNullable(collect.get("9")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成3()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + + Optional.ofNullable(collect.get("10")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成3()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + + Optional.ofNullable(collect.get("12")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成3()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成4() != null) { + Optional.ofNullable(collect.get("6")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成4()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + + Optional.ofNullable(collect.get("14")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成4()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成5() != null) { + Optional.ofNullable(collect.get("13")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成5()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成6() != null) { + Optional.ofNullable(collect.get("11")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成6()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + + if (item.get切割完成7() != null) { + Optional.ofNullable(collect.get("15")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成7()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + + }); + + Optional.ofNullable(collect.get("16")).ifPresent(ydjhs -> { + ydjhs.forEach(ydjh->{ + DmYdjh dmYdjh = this.updateYdjh(item.get上料完成(),item.get抛丸完成(),item.get切割完成7()); + dmYdjh.setId(ydjh.getId()); + updateList.add(dmYdjh); + }); + }); + } + } + }); + + dmYdjhService.updateBatchById(updateList); + } + + private DmYdjh updateYdjh(String slrq,String pwrq,String qgrq){ + DmYdjh dmYdjh = new DmYdjh(); + dmYdjh.setSljhrq(slrq); + dmYdjh.setPwjhrq(pwrq); + dmYdjh.setHxjhrq(qgrq); + dmYdjh.setQgjhrq(qgrq); + return dmYdjh; + } + + public void tj(String fileName) { + LambdaQueryWrapper wrapper = Wrappers.lambdaQuery() + .eq(YdjhImportNew::get文件名, fileName) + .eq(YdjhImportNew::getZt, YdjhImportNew.ZtEnum.BZ.ordinal()); + List list = this.updateData(wrapper, YdjhImportNew::tj); + + List sygdMxList = new ArrayList<>(); + List tzjhList = new ArrayList<>(); + if (ObjUtil.isEmpty(list)){ + return; + } + list.forEach(item -> { + String dcPl = item.getDcPl(); + + try { + dcPl = String.format("%03d", Integer.parseInt(dcPl)); + } catch (Exception ignored) { + } + item.setDcPl(dcPl); + List sygdmx = (List) redisTemplate.opsForHash().get(GJSCGK_SYGDMX_KEY + fileName, item.getDcCh() + "_" + dcPl); + if (ObjUtil.isNotEmpty(sygdmx)) { + sygdMxList.addAll(sygdmx); + } + PgdTzjh tzjh = (PgdTzjh) redisTemplate.opsForHash().get(GJSCGK_TZJH_KEY + fileName, item.getDcCh() + "_" + dcPl); + if (ObjUtil.isNotEmpty(tzjh)){ + tzjhList.add(tzjh); + } + }); + + if (ObjUtil.isAllEmpty(sygdMxList,tzjhList)){ + return; + } + transactionTemplate.execute((status)->{ + list.stream().filter(item -> StrUtil.isAllNotEmpty(item.getDcCh(),item.getDcPl())) + .forEach(item->{ + sygdMxService.remove(new QueryWrapper() + .eq("dc_ch", item.getDcCh()) + .eq("dc_pl", item.getDcPl()) + ); + //清理未处理的图纸计划 + tzjhService.remove(Wrappers.lambdaQuery() + .eq(PgdTzjh::getCzbh,item.getDcCh()) + .eq(PgdTzjh::getPl,item.getDcPl()) + .and(it->it.isNull(PgdTzjh::getFkrq).or().eq(PgdTzjh::getFkrq,"")) + ); + }); + + sygdMxService.saveBatch(sygdMxList); + + //图纸计划入库 + tzjhService.saveBatch(tzjhList); + return true; + }); +// redisTemplate.opsForHash().delete(GJSCGK_SYGDMX_KEY+fileName); +// redisTemplate.opsForHash().delete(GJSCGK_TZJH_KEY+fileName); + } + + private List updateData(LambdaQueryWrapper wrapper, Consumer handler) { + List list = this.list(wrapper); + list.forEach(item -> { + YdjhImportNew ydjhImportNew = new YdjhImportNew(); + ydjhImportNew.setId(item.getId()); + ydjhImportNew.setNonBom(item.isNonBom()); + handler.accept(ydjhImportNew); + this.updateById(ydjhImportNew); + }); + return list; + } + + public void handler(List list, String fileName, HttpServletRequest request) { + //三月滚动明细 + this.createSygdmx(list, fileName); + + //没有基础数据的计划生成图纸计划 + this.createTzjh(list, fileName, request); + + transactionTemplate.execute((status) -> { + list.stream().filter(item -> StrUtil.isAllNotEmpty(item.getDcCh(), item.getDcPl())) + .forEach(item -> { + item.set文件名(fileName); + this.remove(new QueryWrapper() + .eq("dc_ch", item.getDcCh()) + .eq("dc_pl", item.getDcPl()) + .eq("文件名", fileName)//根据同名文件进行删除 + ); + }); + list.forEach(this::save); + return true; + }); + } + + private void createTzjh(List list, String fileName, HttpServletRequest request) { + String yhms = (String) request.getAttribute("yhms"); + String date = DateUtil.date().toString("yyyy/MM/dd"); + + list.stream() + .filter(YdjhImportNew::isNonBom) + .forEach(item -> { + String dcPl = item.getDcPl(); + + try { + dcPl = String.format("%03d", Integer.parseInt(dcPl)); + } catch (Exception ignored) { + } + + PgdTzjh dmTzjh = PgdTzjh.of(item, dcPl); + dmTzjh.setBzry(yhms); + dmTzjh.setBzrq(date); + redisTemplate.opsForHash().put(GJSCGK_TZJH_KEY + fileName, item.getDcCh() + "_" + dcPl, dmTzjh); + }); + } + + /** + * 月度计划导入,不使用月度计划只能排产功能前提下使用该功能导入月度计划 + */ + private void createSygdmx(List objList, String fileName) { + + objList.stream() + .filter(item -> !item.getDcPl().contains("-"))//批次范围的数据暂不处理 + .forEach(item -> { + + List addList = new ArrayList<>(); + String dcPl = item.getDcPl(); + + try { + dcPl = String.format("%03d", Integer.parseInt(dcPl)); + } catch (Exception ignored) { + } + + List bomList = bomService.getBomUni(item.getDcCh(), dcPl); + + if (ObjUtil.isEmpty(bomList)) { + //无bom,明细数据使用目标船只替代,切在作业计划中生成一条(按照kw进行区分)数据 + return; + } + + if (ObjUtil.isNotEmpty(bomList)) { + item.setNonBom(false); + } + + //修正前方需求数据 + List dmSygdxqs = sygdxqMapper.selectList(Wrappers.lambdaQuery() + .eq(DmSygdxq::getDcCh, item.getDcCh()).eq(DmSygdxq::getDcPl, dcPl)); + if (ObjUtil.isNotEmpty(dmSygdxqs)) { + DmSygdxq dmSygdxq = dmSygdxqs.get(0); + item.setQfxqrqxz(dmSygdxq.getXzglxq()); + item.setQfxqrqdz(dmSygdxq.getDzglxq()); + } + + Map> collect = bomList.stream().collect(Collectors.groupingBy(DmBom::getKw)); + //一垮龙门和一垮数控 + if (item.get切割完成1() != null) { + Optional.ofNullable(collect.get("7")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成1()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + Optional.ofNullable(collect.get("8")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成1()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + + if (item.get切割完成2() != null) { + Optional.ofNullable(collect.get("5")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成2()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + + if (item.get切割完成3() != null) { + Optional.ofNullable(collect.get("9")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成3()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + Optional.ofNullable(collect.get("10")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成3()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + Optional.ofNullable(collect.get("12")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成3()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + + if (item.get切割完成4() != null) { + Optional.ofNullable(collect.get("6")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成4()); + dmSygdMx.setQbs("1"); + dmSygdMx.setQjgrq(item.get曲平铁曲完成()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + Optional.ofNullable(collect.get("14")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成4()); + dmSygdMx.setQbs("1"); + dmSygdMx.setQjgrq(item.get曲平铁曲完成()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + } + + if (item.get切割完成5() != null) { + Optional.ofNullable(collect.get("13")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成5()); + dmSygdMx.setQbs("1"); + dmSygdMx.setQjgrq(item.get曲外板曲完成()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + + if (item.get切割完成6() != null) { + Optional.ofNullable(collect.get("11")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成6()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + + if (item.get切割完成7() != null) { + Optional.ofNullable(collect.get("15")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成7()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + + Optional.ofNullable(collect.get("16")).ifPresent(boms -> { + boms.forEach(bom -> { + DmSygdMx dmSygdMx = new DmSygdMx(); + dmSygdMx.setDcCh(item.getDcCh()); + dmSygdMx.setDcPl(item.getDcPl()); + dmSygdMx.setQgrq(item.get切割完成7()); + dmSygdMx.setJssj(item.getQfxqrqxz()); + dmSygdMx.setGjjsDz(item.getQfxqrqdz()); + dmSygdMx.setBomData(bom); + addList.add(dmSygdMx); + }); + }); + } + redisTemplate.opsForHash().put(GJSCGK_SYGDMX_KEY + fileName, item.getDcCh() + "_" + dcPl, addList); + }); + } +} diff --git a/src/main/resources/mappers/jhgk/YdjhImportNewMapper.xml b/src/main/resources/mappers/jhgk/YdjhImportNewMapper.xml new file mode 100644 index 0000000..c1bb47f --- /dev/null +++ b/src/main/resources/mappers/jhgk/YdjhImportNewMapper.xml @@ -0,0 +1,9 @@ + + + + + + +