From 3d5d3253c8b9e31b85dd3b4a3d4b87c48087aadd Mon Sep 17 00:00:00 2001 From: xiaoning <1097449274@qq.com> Date: Sun, 28 Apr 2024 13:21:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AF=BC=E5=85=A5=E5=A5=97=E6=96=99=E5=9B=BE?= =?UTF-8?q?pdf=202.=E4=BF=AE=E6=94=B9=E4=B8=89=E6=9C=88=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E8=AE=A1=E5=88=92=E6=8E=92=E4=BA=A7=EF=BC=8C=E5=88=86=E6=AE=B5?= =?UTF-8?q?=E6=8E=92=E4=BA=A7=E6=97=B6=E5=8A=A0=E4=B8=8A=E5=85=B7=E4=BD=93?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E7=BC=96=E5=8F=B7=EF=BC=8C=203.=E5=B0=8F?= =?UTF-8?q?=E6=B1=A0=E5=AE=9E=E4=BD=93=E7=B1=BB=E5=A2=9E=E5=8A=A0=E5=AD=97?= =?UTF-8?q?=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dsic/gj_erp/bean/jcsj/DmTltpdf.java | 48 +++++ .../com/dsic/gj_erp/bean/jcsj/EmGcrl.java | 5 + .../com/dsic/gj_erp/bean/jcsj/EmGcrlDto.java | 134 ++++++++++++++ .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 10 + .../com/dsic/gj_erp/bean/xiaochi/CutPlan.java | 171 ++++++++++++++++++ .../com/dsic/gj_erp/bean/xiaochi/Device.java | 45 ++++- .../dsic/gj_erp/bean/xiaochi/XiaochiUser.java | 33 +++- .../controller/jcsj/DmBomController.java | 58 +++++- .../controller/jhgk/DmSygdMxController.java | 1 + .../com/dsic/gj_erp/handler/ComputePlan.java | 7 +- .../gj_erp/mapper/jcsj/DmTltpdfMapper.java | 17 ++ .../gj_erp/mapper/jhgk/DmSygdMxMapper.java | 5 + .../gj_erp/service/jcsj/DmTltpdfService.java | 17 ++ .../jcsj/impl/DmTltpdfServiceImpl.java | 21 +++ .../gj_erp/service/jhgk/DmSygdMxService.java | 1 + .../jhgk/impl/DmSygdMxServiceImpl.java | 154 +++++++++++++--- .../resources/mappers/jcsj/DmTltpdfMapper.xml | 8 + .../resources/mappers/jhgk/DmSygdMxMapper.xml | 82 ++++++++- 18 files changed, 782 insertions(+), 35 deletions(-) create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java create mode 100644 src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrlDto.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jcsj/DmTltpdfMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/DmTltpdfService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmTltpdfServiceImpl.java create mode 100644 src/main/resources/mappers/jcsj/DmTltpdfMapper.xml diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java new file mode 100644 index 0000000..1b220bc --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/DmTltpdf.java @@ -0,0 +1,48 @@ +package com.dsic.gj_erp.bean.jcsj; + +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; + +/** + *

+ * + *

+ * + * @author xn + * @since 2024-04-26 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmTltpdf对象", description="") +public class DmTltpdf implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + private String dcCh; + + @ApiModelProperty(value = "图号(不是图纸编号)") + private String th; + + @ApiModelProperty(value = "页码") + private String pageNum; + + @ApiModelProperty(value = "行数") + @TableField("rows") + private String rows; + + @ApiModelProperty(value = "内容") + private String content; + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java index 6496e93..b4501a6 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrl.java @@ -63,4 +63,9 @@ public class EmGcrl implements Serializable { @ApiModelProperty(value = "排班:1:早;2:晚班;3:双班") private String pb; + + private Double bbgs=7.0; + + private Double ybgs=7.0; + } diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrlDto.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrlDto.java new file mode 100644 index 0000000..ecfc921 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmGcrlDto.java @@ -0,0 +1,134 @@ +package com.dsic.gj_erp.bean.jcsj; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.dsic.gj_erp.bean.jhgk.DmSygdxq; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import javax.persistence.Entity; +import javax.persistence.Id; +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-09-15 + */ +@Data +public class EmGcrlDto { + + //工厂日历 + private String gl; + private Double bbgs; + + private Double ybgs; +//设备信息 + private String gx; + + private String sbbh; + + private String sbmc; + + private Double degsYb; + + private Double degs; +//三月滚动计划明细 + @ApiModelProperty(value = "上料日期") + private String slrq; + + private String slsb; + @ApiModelProperty(value = "抛丸日期") + private String pwrq; + @ApiModelProperty(value = "抛丸设备") + private String pwsb; + private String llrq; + private String llsb; + @ApiModelProperty(value = "划线设备") + private String hxsb; + + @ApiModelProperty(value = "划线日期") + private String hxrq; + + @ApiModelProperty(value = "切割设备") + private String qgsb; + + @ApiModelProperty(value = "切割日期") + private String qgrq; + private String pkrq; + private String pksb; + private String dmrq; + private String dmsb; + private String qjgrq; + private String qsb; + private String slgxbm; + private String pwgxbm; + private String llgxbm; + private String hxgxbm; + private String qggxbm; + private String pkgxbm; + private String dmgxbm; + private String qjggxbm; +//前方分段钢料滚动需求 + private String dcFd; + + private String xzglxq; + + private String dzglxq; + + private String dcCh; + + private String dcPl; +//bom + private String lqlb; + private String kw; + + private String zl; + + private String tzbh; + + private String wpgg; + + private String wpcz; + + private BigDecimal ljsl; + + private String lc; + + @ApiModelProperty(value = "备料") + private BigDecimal blgs; + + @ApiModelProperty(value = "抛丸") + private BigDecimal pwgs; + + @ApiModelProperty(value = "理料") + private BigDecimal llgs; + + @ApiModelProperty(value = "划线") + private BigDecimal hxgs; + + @ApiModelProperty(value = "切割") + private BigDecimal qggs; + + @ApiModelProperty(value = "坡口") + private BigDecimal pkgs; + + @ApiModelProperty(value = "曲") + private BigDecimal qgs; + + @ApiModelProperty(value = "打磨") + private BigDecimal dmgs; + + @ApiModelProperty(value = "装配") + private BigDecimal zpgs; + +} 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 18e14e1..ddecdc7 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 @@ -193,6 +193,16 @@ public class DmSygdMx implements Serializable { private String pksb; private String dmsb; private String qsb; + private String slgxbm; + private String pwgxbm; + private String llgxbm; + private String hxgxbm; + private String qggxbm; + private String pkgxbm; + private String dmgxbm; + private String qjggxbm; + + } diff --git a/src/main/java/com/dsic/gj_erp/bean/xiaochi/CutPlan.java b/src/main/java/com/dsic/gj_erp/bean/xiaochi/CutPlan.java index 77934ec..b5806dc 100644 --- a/src/main/java/com/dsic/gj_erp/bean/xiaochi/CutPlan.java +++ b/src/main/java/com/dsic/gj_erp/bean/xiaochi/CutPlan.java @@ -55,4 +55,175 @@ public class CutPlan extends Model { public String getQgjssj(){ return StrUtil.isNotEmpty(this.nestTumikomiTime)?this.nestTumikomiDate+" "+this.nestTumikomiTime:""; } + + private String nestExtC09; + + private Integer nestMarkTime; + + private String nestBozaiName; + + private Double nestExtD03; + + private Double nestExtD09; + + private String nestNameSub3; + + private Integer nestKapWorkNo; + + private String nestExtC06; + + + private Double nestExtD06; + + private Double nestSjyuryou; + + private Double nestCutLengs; + + private Integer nestExtI07; + + + private String nestNouki2Time; + + private Integer nestPartSu; + + private Integer nestPalletNo; + + + private Integer nestMoji; + + private String nestExtC00; + + private Double nestExtD00; + + private String nestYoteiNo; + + private Double nestBudomari; + + private Double nestSizeMy; + + private Double nestTapeLengs; + + private String nestExtC01; + + private String nestKanryoDate; + + private Double nestExtD01; + + private Double nestPjyuryou; + + private Integer nestExtI08; + + private Double nestExtD04; + + private String weekYoteiDate; + + private Integer nestScantlingNo; + + private Integer nestExtI05; + + private Integer nestJEtcTime; + + private String nestMachName; + + private String nestNouki1Time; + + private String nestManufacturer; + + private Integer nestJKakouTime; + + private Integer nestExtI02; + + private Double nestMarkLengs; + + private Integer nestHyoNo; + + private String nestKousinDate; + + private String nestYoteiDate; + + private Integer nestExtI03; + + private String nestModelName; + + private Integer nestDrill; + + private String nestHyoName; + + private String nestYoteiTime; + + private Integer nestExtI09; + + private Integer nestCuttingtableNo; + + private Double nestSizeMx; + + private Integer nestJDandoriTime; + + private Integer nestExtI06; + + private String nestNouki2Date; + + private String nestSakuseiDate; + + private Integer nestKakouTime; + + private Integer nestJCutTime; + + private String nestExtC07; + + private String nestNcNo; + + private String nestKousinTime; + + private Double nestExtD07; + + private Integer nestBozaiIkei; + + private Integer nestExtI00; + + private Integer nestEtcTime; + + private Integer nestZaiNo; + + private Integer dataHi; + + private Integer nestDandoriTime; + + private String nestOaTransfer; + + private Integer nestExtI01; + + private String nestZaiName; + + private Integer dataLow; + + private String nestSakuseiTime; + + private Integer nestJMarkTime; + + private String nestExtC08; + + private Integer nestExtI04; + + private String nestNcName; + + private Integer nestMachNo; + + private String nestNouki1Date; + + private Double nestExtD08; + + private Integer nestItaTorisu; + + private String nestNameSub2; + + private Double nestKjyuryou; + + private Double nestExtD05; + + private Integer nestCutTime; + + private String nestKanryoTime; + + private Double nestExtD02; } diff --git a/src/main/java/com/dsic/gj_erp/bean/xiaochi/Device.java b/src/main/java/com/dsic/gj_erp/bean/xiaochi/Device.java index 13b420d..5ce9fc1 100644 --- a/src/main/java/com/dsic/gj_erp/bean/xiaochi/Device.java +++ b/src/main/java/com/dsic/gj_erp/bean/xiaochi/Device.java @@ -15,8 +15,6 @@ import lombok.Setter; @TableName("iot_m_machine") public class Device extends Model { - @TableId(type = IdType.AUTO) - private Integer id; private String machineId;//设备id private String machineName;//设备名称 @@ -26,4 +24,47 @@ public class Device extends Model { private String machinemodelName;//设备型号 private String torchType;//割枪类型 + + private String updateDatetime; + + @TableId(value = "idd", type = IdType.AUTO) + private Integer idd; + + private Integer orders; + + private String deliveryDate; + + private Double positionX; + + private String createDatetime; + + private String maintenanceDate; + + private Integer id; + + private String loginname; + + private Double customerId; + + private String viewFlag; + + private Double positionY; + + private Double tanto1Id; + + private String isDelete; + + private String updateUser; + + private String online; + + private Double plantId; + + private Integer floorId; + + private Double tanto2Id; + + private String createUser; + + private String ncdataPngPath; } diff --git a/src/main/java/com/dsic/gj_erp/bean/xiaochi/XiaochiUser.java b/src/main/java/com/dsic/gj_erp/bean/xiaochi/XiaochiUser.java index 8800279..0a0b9f6 100644 --- a/src/main/java/com/dsic/gj_erp/bean/xiaochi/XiaochiUser.java +++ b/src/main/java/com/dsic/gj_erp/bean/xiaochi/XiaochiUser.java @@ -14,8 +14,6 @@ import lombok.Setter; @Setter @TableName("iot_m_employee") public class XiaochiUser extends Model { - @TableId(type = IdType.AUTO) - private Integer id; private String employeeNumber; @@ -25,4 +23,35 @@ public class XiaochiUser extends Model { private String position; + private static final long serialVersionUID=1L; + + @TableId(value = "idd", type = IdType.AUTO) + private Integer idd; + + private Integer accessPermission; + + + + private String updateUser; + + private Integer id; + + private String createUser; + + private String phoneNo; + + private String updateDatetime; + + private String createDatetime; + + + private String expireDate; + + private String password; + + private String email; + + private String isDelete; + + } diff --git a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java index 0898456..065142a 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jcsj/DmBomController.java @@ -5,20 +5,26 @@ 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.DmBom; +import com.dsic.gj_erp.bean.jcsj.DmTltpdf; import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; import com.dsic.gj_erp.bean.jcsj.vo.BomVO; import com.dsic.gj_erp.exception.CustomException; import com.dsic.gj_erp.service.jcsj.DmBomService; +import com.dsic.gj_erp.service.jcsj.DmTltpdfService; import com.dsic.gj_erp.service.jcsj.impl.BomUploadServiceImpl; import com.dsic.gj_erp.service.sy.SYService; +import io.swagger.annotations.Authorization; import org.apache.commons.lang3.StringUtils; +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.text.PDFTextStripper; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PostMapping; -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.servlet.http.HttpServletRequest; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -42,7 +48,51 @@ public class DmBomController { BomUploadServiceImpl bomUploadService; @Autowired SYService syService; + @Autowired + DmTltpdfService tltpdfService; + @PostMapping("/uploadPDF") + @Authorization("") + @ResponseBody + public ResultBean uploadPDF(@RequestParam("file") MultipartFile file)throws IOException { +// String pdfFilePath = "E:/runpeng/1润芃工作日志/第21个月/第3周/钢加项目资料/小池/B046HC103HN第046批量数控套料图2023-05-11.pdf"; // PDF文件路径 + PDDocument document = PDDocument.load(file.getInputStream()); + int pageNum = document.getNumberOfPages(); +// + PDFTextStripper stripper = new PDFTextStripper(); + stripper .setSortByPosition(true); //设置为true 则按照行进行读取,默认是false +// // 指定页面读取内容 +// stripper.setStartPage(12); // 设置起始页面,这里设置成0,就表示读取第一个页面 +// stripper.setEndPage(12); // 设置结束页面,这里设置成0,就表示读取第一个页面 +// // 3、获取指定页面的文本内容 + stripper.setStartPage(2); + stripper.setEndPage(2); + String[] text = stripper.getText(document).split("\r\n")[2].split(" "); + String dcCh=text[1]; + String th=text[10]; + List list=new ArrayList<>(); + for (int i = 1; i <= pageNum; i++) { + stripper.setStartPage(i); + stripper.setEndPage(i); + String s = stripper.getText(document); + String[] a=s.split("\r\n"); +// System.out.println("第 " + i +"/"+pageNum+ " 页 :" ); + for (int j=0;j listBom = dmBomService.getListBom(req,map); 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 4fce21e..f2361e7 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 @@ -106,6 +106,7 @@ public class DmSygdMxController { map.put("xbList",service.getXBList(list,year,begin,end)); map.put("plList",service.getPl(list.get(0).getJssj(),list.get(list.size() - 1).getJssj())); map.put("kwList",service.getKwList(list,list.get(0).getJssj(),list.get(list.size() - 1).getJssj())); + map.put("gcrlList",service.getGcrlList(list,list.get(0).getJssj(),list.get(list.size() - 1).getJssj())); // map.put("tzList",service.getTZList(list)); // map.put("dhList",service.getDhList(list)); return new ResultBean(map); diff --git a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java index 37b7c8d..4bb06fb 100644 --- a/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java +++ b/src/main/java/com/dsic/gj_erp/handler/ComputePlan.java @@ -119,7 +119,6 @@ public class ComputePlan { } } }); - } /** @@ -265,13 +264,13 @@ public class ComputePlan { capacity.setCapacity(degs * 7); } if ("3".equals(gcrl.getPb())) { - capacity.setCapacity(degs * 7 + degsYb * 7); + capacity.setCapacity(degs * gcrl.getBbgs() + degsYb * gcrl.getYbgs()); } if ("1".equals(gcrl.getPb())) { - capacity.setCapacity(degs * 7); + capacity.setCapacity(degs * gcrl.getBbgs()); } if ("2".equals(gcrl.getPb())) { - capacity.setCapacity(degsYb * 7); + capacity.setCapacity(degsYb * gcrl.getYbgs()); } // } // }); diff --git a/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmTltpdfMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmTltpdfMapper.java new file mode 100644 index 0000000..9ec554e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jcsj/DmTltpdfMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jcsj; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.DmTltpdf; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2024-04-26 + */ +public interface DmTltpdfMapper extends BaseMapper { + +} 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 91a110a..16eeb8a 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 @@ -2,8 +2,10 @@ package com.dsic.gj_erp.mapper.jhgk; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jcsj.EmGcrlDto; import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj; +import com.dsic.gj_erp.bean.jhgk.DmSygdxq; import com.dsic.gj_erp.bean.jhgk.DmYdjhxf; import com.dsic.gj_erp.bean.jhgk.dto.Dhdto; import com.dsic.gj_erp.bean.jhgk.dto.Kwdto; @@ -35,4 +37,7 @@ public interface DmSygdMxMapper extends BaseMapper { List cgjhdhqk(Map map); List tqSygd1(@Param("begin") String begin,@Param("end")String end); + List getGlgdxq(DmSygdMx sygdMx); + + List getMxMap(@Param("begin") String begin, @Param("end")String end); } diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/DmTltpdfService.java b/src/main/java/com/dsic/gj_erp/service/jcsj/DmTltpdfService.java new file mode 100644 index 0000000..99f262b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/DmTltpdfService.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.service.jcsj; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jcsj.DmTltpdf; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2024-04-26 + */ +public interface DmTltpdfService extends IService { + +} diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmTltpdfServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmTltpdfServiceImpl.java new file mode 100644 index 0000000..dff45af --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/DmTltpdfServiceImpl.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.service.jcsj.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.DmTltpdf; +import com.dsic.gj_erp.mapper.jcsj.DmTltpdfMapper; +import com.dsic.gj_erp.service.jcsj.DmTltpdfService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2024-04-26 + */ +@Service +public class DmTltpdfServiceImpl extends ServiceImpl implements DmTltpdfService { + +} 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 c36fb62..d72e6b0 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 @@ -23,6 +23,7 @@ public interface DmSygdMxService extends IService { ResultBean sygdPC(); // List saveByDcch(HashMap> map); List getKwList(List list,String begin,String end); + List getGcrlList(List list,String begin,String end); List getXBList(List list,String year,String begin,String end); List getPl(String begin,String end); List getTZList(List list); 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 e1e21b3..16cfeb6 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 @@ -6,17 +6,19 @@ import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.fastjson.serializer.SerializerFeature; 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.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.jcsj.EmSbcnp; +import com.dsic.gj_erp.bean.jcsj.*; import com.dsic.gj_erp.bean.jcsj.excel.PlExcel; import com.dsic.gj_erp.bean.jhgk.*; import com.dsic.gj_erp.bean.jhgk.dto.*; +import com.dsic.gj_erp.bean.sy.Dm_zhbmp; +import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository; import com.dsic.gj_erp.handler.ComputePlan; import com.dsic.gj_erp.handler.dto.RealCapacity; import com.dsic.gj_erp.mapper.jcsj.DmBomMapper; @@ -31,6 +33,7 @@ import com.dsic.gj_erp.service.jhgk.DmTzjhService; import com.dsic.gj_erp.service.jhgk.DmXbjhService; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Propagation; @@ -66,7 +69,115 @@ public class DmSygdMxServiceImpl extends ServiceImpl i private DmSygdMxLjServiceImpl ljService; @Resource private EmSbcnpService sbcnpService; + @Autowired + Dm_zhbmpRepository dm_zhbmpRepository; + + public Map> getMxMap(String begin,String end){ + + List list=baseMapper.getMxMap(begin,end); + //1.页面 arr=[日期+工序+设备,...] + //2.后端1 日期范围查询 所有加工内容 按日期+工序+设备 分组 + //上料 + Map> mx= list.stream().collect(Collectors.groupingBy(l->l.getSlrq()+l.getSlgxbm()+l.getSlsb())); + //抛丸 + Map> mxPwMap= list.stream().collect(Collectors.groupingBy(l->l.getPwrq()+l.getPwgxbm()+l.getPwsb())); + //划线 + Map> mxHxMap= list.stream().collect(Collectors.groupingBy(l->l.getHxrq()+l.getHxgxbm()+l.getHxsb())); + //切割 + Map> mxQgMap= list.stream().collect(Collectors.groupingBy(l->l.getQgrq()+l.getQggxbm()+l.getQgsb())); + //坡口 + Map> mxPkMap= list.stream().collect(Collectors.groupingBy(l->l.getPkrq()+l.getPkgxbm()+l.getPksb())); + //打磨 + Map> mxDmMap= list.stream().collect(Collectors.groupingBy(l->l.getDmrq()+l.getDmgxbm()+l.getDmsb())); + //曲 + Map> mxQMap= list.stream().collect(Collectors.groupingBy(l->l.getQjgrq()+l.getQjggxbm()+l.getQsb())); + + mx.putAll(mxPwMap); + mx.putAll(mxHxMap); + mx.putAll(mxQgMap); + mx.putAll(mxPkMap); + mx.putAll(mxDmMap); + mx.putAll(mxQMap); + //循环第二布查询结果 取bom + + //3.后端 日期范围查询所有的需求 + + //4.页面 按照后端1提取list 循环匹配 需求 (同时包含bom) + //把第4步的结果赋值到table + return mx; + } + @Override + public List getGcrlList(List list,String begin,String end) { +// 1.根据list汇总 + Map> listMap= getMxMap(begin,end); + //三月滚动明细 船号 批量 分段 图纸编号 工序 工序加工日期 + //工厂日历 -> 工序+设备 ->三月滚动明细 - 分段钢料滚动需求 + //工序 + ComputePlan c=ComputePlan.instance(); + c.computeRealCapacity(DateUtil.parse(begin,"yyyy/MM/dd"), DateUtil.parse(end,"yyyy/MM/dd")); + JSONObject realDeviceList=c.getRealDeviceList(); + List gcrlList=c.getGcrlList(); + + List pcgx = dm_zhbmpRepository.findByBMLB("PCGX"); + gcrlList.forEach(gcrl->{ + String jgrq=gcrl.getGl(); + Map> map=new HashMap<>(); + //日期+设备list(工序) + if (realDeviceList.size()>1 && ObjectUtil.isNotEmpty(realDeviceList.getJSONArray(gcrl.getGl()))) { + //根据工序分组 + JSONArray data =realDeviceList.getJSONArray(gcrl.getGl()); + String js = JSONObject.toJSONString(data, SerializerFeature.WriteClassName); + List list1=JSONObject.parseArray(js, EmSbjbb.class); + map=list1.stream().collect(Collectors.groupingBy(EmSbjbb::getGx)); + } + //1.页面 arr=[日期+工序+设备,...] + //2.后端1 日期范围查询所有加工内容 按日期+工序+设备 + //循环第二布查询结果 取bom + + //3.后端 日期范围查询所有的需求 + + //4.页面 按照后端1提取list 循环匹配 需求 (同时包含bom) + //把第4步的结果赋值到table + + //日期 工序 + for (Dm_zhbmp dmZhbmp : pcgx) { + String gx=dmZhbmp.getBM(); + if (ObjectUtil.isNotEmpty(map) + &&ObjectUtil.isNotEmpty(map.get(gx)) + &&map.get(gx).size()>0){ + List sbList= map.get(gx); + for (EmSbjbb emSbjbb : sbList) { + String sbbh=emSbjbb.getSbbh(); + if (ObjectUtil.isNotEmpty(listMap.get(jgrq+gx+sbbh))&&listMap.get(jgrq+gx+sbbh).size()>0){ + List l= listMap.get(jgrq+gx+sbbh); + l.stream().collect(Collectors.groupingBy(dto->dto.getDcCh()+dto.getDcPl()+dto.getDcFd())); + } + } + } + } + }); + return new ArrayList<>(); + } + EmGcrlDto getFdglxqs(String gx,DmSygdMx mx,EmGcrl gcrl,EmSbjbb emSbjbb){ + List dmSygdxqs= baseMapper.getGlgdxq(mx); + // 新增一个对象 + EmGcrlDto dto=new EmGcrlDto(); + for (DmSygdxq dmSygdxq : dmSygdxqs) { + dto=BeanUtil.copyProperties(dmSygdxq,EmGcrlDto.class); + dto.setGl(gcrl.getGl()); + dto.setBbgs(gcrl.getBbgs()); + dto.setYbgs(gcrl.getYbgs()); + dto.setGx(gx); + dto.setSbbh(emSbjbb.getSbbh()); + dto.setSbmc(emSbjbb.getSbmc()); + dto.setDegsYb(emSbjbb.getDegsYb()); + dto.setDegs(emSbjbb.getDegs()); + +// dto.setBomList(); + } + return dto; + } /** * 采购计划到货情况 */ @@ -110,6 +221,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i //todo 排产 ypc(mxList); this.saveBatch(mxList); + baseMapper.setParent(begin, end); List list= tqSygd1(begin,end); @@ -122,15 +234,15 @@ public class DmSygdMxServiceImpl extends ServiceImpl i /** * 预排产,根据套料图号及跨位 * - * @param list + * @param list 三月滚动明细 */ public void ypc(List list) { -// Map> mxMap = list.stream().filter(l->StrUtil.isNotEmpty(l.getTzbh())).collect(Collectors.groupingBy(l -> l.getKw() + l.getZl())); + //可用设备/产能 根据日期、跨位+工序 分组 ComputePlan c=ComputePlan.instance(); c.computeRealCapacity(DateUtil.beginOfMonth(DateUtil.date()), DateUtil.endOfMonth(DateUtil.date())); Map>> rel=c.getRealCapacityMap(); - //加工工序list + //产能 List sbcnp =c.getSbcnList(); Map> cnMap = sbcnp.stream().collect(Collectors.groupingBy(l -> l.getTzbh() + l.getZl())); @@ -147,11 +259,11 @@ public class DmSygdMxServiceImpl extends ServiceImpl i * * @param rel 真实产能 * @param l 当前加工钢板 - * @param list 加工顺序 + * @param list 加工顺序 */ public void jggx( Map>> rel,DmSygdMx l,List list){ String date=""; - Map map=new TreeMap<>(); + Map map; for (EmSbcnp cn : list) { //上料 if (cn.getGx().equals("19")) { @@ -159,6 +271,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setSlrq(date); l.setSlsb(map.get("sbbh")); + l.setSlgxbm("19"); } //抛丸 if (cn.getGx().equals("20")) { @@ -166,6 +279,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setPwrq(date); l.setPwsb(map.get("sbbh")); + l.setPwgxbm("20"); } //理料 if (cn.getGx().equals("21")) { @@ -173,6 +287,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setLlrq(date); l.setLlsb(map.get("sbbh")); + l.setLlgxbm("21"); } // 划线 if ("01,02".indexOf(cn.getGx()) > -1 && l.getHxcd()>0) { @@ -180,13 +295,17 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setHxrq(date); l.setHxsb(map.get("sbbh")); + l.setHxgxbm(cn.getGx()); } //切割 if ("03,04,05,06,07".indexOf(cn.getGx()) > -1 && l.getQgcd()>0) { +// . + date=StrUtil.isEmpty(date)?"": DateUtil.offsetDay(DateUtil.parse(date),-1).toString("yyyy/MM/dd"); map=xhcn(rel,cn.getKw(),cn.getGx(),1, date); date=map.get("jgsj"); l.setQgrq(date); l.setQgsb(map.get("sbbh")); + l.setQggxbm(cn.getGx()); } // 坡口 if (ObjectUtil.isNotEmpty(l.getPkcd()) && ("08,10".indexOf(cn.getGx()) > 0)) { @@ -194,6 +313,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setPkrq(date); l.setPksb(map.get("sbbh")); + l.setPkgxbm(cn.getGx()); } // 打磨 if (ObjectUtil.isNotEmpty(l.getDmcd()) && ("16,13".indexOf(cn.getGx()) > 0)) { @@ -201,6 +321,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setDmrq(date); l.setDmsb(map.get("sbbh")); + l.setDmgxbm(cn.getGx()); } // 曲 (个) if (StrUtil.isNotEmpty(l.getQbs()) && cn.getGx().equals("18")) { @@ -208,6 +329,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i date=map.get("jgsj"); l.setQjgrq(date); l.setQsb(map.get("sbbh")); + l.setQjggxbm(cn.getGx()); } // 号料 手工切割 倒棱 切端头 自由边 预组 @@ -230,7 +352,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl i if (gzl==0)return map; String kwAndGx=kw+gx; for (String date:rel.keySet()){ - if (StrUtil.isEmpty(kssj)||date.compareTo(kssj)>=0){ + if (StrUtil.isEmpty(kssj)||date.compareTo(kssj)>0){ //日期下 跨位+工序分组 Map> kwMap= rel.get(date); if (ObjectUtil.isEmpty(kwMap.get(kwAndGx)))break; @@ -249,20 +371,8 @@ public class DmSygdMxServiceImpl extends ServiceImpl i rel.get(date).get(kwAndGx).set(index,l); map.put("jgsj",l.getDate()); map.put("sbbh",l.getDeviceName()); -// break; } } -// for (String kwAndGx :kwMap.keySet()){ -// if (kwAndGx.equals(kw+gx)){ -// // 设备 list -// } -// } -// for (RealCapacity l:rel.get(date)){ -// //设备 改为 跨位 -// if (l.getKw().equals(kw)&&l.getGx().equals(gx)){ -// -// } -// } } } diff --git a/src/main/resources/mappers/jcsj/DmTltpdfMapper.xml b/src/main/resources/mappers/jcsj/DmTltpdfMapper.xml new file mode 100644 index 0000000..9ff31a7 --- /dev/null +++ b/src/main/resources/mappers/jcsj/DmTltpdfMapper.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml index e1daa5a..3b860f3 100644 --- a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml +++ b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml @@ -4,6 +4,15 @@ + + + +