From 2099a132571c00a786edc7bf39701e379efcdb46 Mon Sep 17 00:00:00 2001 From: xiaoning <1097449274@qq.com> Date: Mon, 27 Nov 2023 13:17:02 +0800 Subject: [PATCH] xn --- .../com/dsic/gj_erp/bean/jcsj/EmGcrl.java | 2 + .../com/dsic/gj_erp/bean/jcsj/EmSbcnp.java | 3 +- .../com/dsic/gj_erp/bean/jhgk/DmSygdMx.java | 104 +- .../com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java | 259 +++++ .../com/dsic/gj_erp/bean/jhgk/DmYdjh.java | 6 - .../com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java | 25 +- .../com/dsic/gj_erp/bean/jhgk/dto/Pldto.java | 8 +- .../dsic/gj_erp/bean/jhgk/dto/Xbjhdto.java | 4 +- .../controller/jhgk/DmQfxqController.java | 49 +- .../controller/jhgk/DmSygdMxController.java | 25 +- .../controller/jhgk/DmSygdMxLjController.java | 20 + .../controller/jhgk/DmSygdxqController.java | 10 +- .../controller/jhgk/DmYdjhController.java | 4 +- .../gj_erp/dao/jcsj/EmSbjbbRepository.java | 2 +- .../gj_erp/dao/sy/Dm_zhbmpRepository.java | 2 +- .../gj_erp/mapper/jhgk/DmSygdMxLjMapper.java | 17 + .../gj_erp/mapper/jhgk/DmSygdMxMapper.java | 10 + .../dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java | 4 + .../service/jcsj/impl/EmGcrlServiceImpl.java | 25 +- .../service/jcsj/impl/EmSbcnpServiceImpl.java | 2 +- .../service/jhgk/DmSygdMxLjService.java | 17 + .../gj_erp/service/jhgk/DmSygdMxService.java | 8 +- .../gj_erp/service/jhgk/DmYdjhService.java | 5 +- .../service/jhgk/impl/DmQfxqServiceImpl.java | 46 +- .../jhgk/impl/DmSygdMxLjServiceImpl.java | 21 + .../jhgk/impl/DmSygdMxServiceImpl.java | 999 +++++++----------- .../jhgk/impl/DmSygdxqServiceImpl.java | 8 + .../service/jhgk/impl/DmYdjhServiceImpl.java | 79 +- .../service/jhgk/impl/DmZrcjhServiceImpl.java | 92 +- .../mappers/jhgk/DmSygdMxLjMapper.xml | 89 ++ .../resources/mappers/jhgk/DmSygdMxMapper.xml | 214 +++- .../resources/mappers/jhgk/DmYdjhMapper.xml | 222 ++-- 32 files changed, 1451 insertions(+), 930 deletions(-) create mode 100644 src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java create mode 100644 src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxLjController.java create mode 100644 src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxLjMapper.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxLjService.java create mode 100644 src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxLjServiceImpl.java create mode 100644 src/main/resources/mappers/jhgk/DmSygdMxLjMapper.xml 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 54384fd..ec7bb3f 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 @@ -58,4 +58,6 @@ public class EmGcrl implements Serializable { @ApiModelProperty(value = "工作日历(一年中的第几天)") private String gzlr; + @ApiModelProperty(value = "最近的工作日") + private String gzr; } diff --git a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java index cc663c3..2086d67 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java +++ b/src/main/java/com/dsic/gj_erp/bean/jcsj/EmSbcnp.java @@ -32,7 +32,8 @@ public class EmSbcnp implements Serializable { @ApiModelProperty(value = "设备编号") // @Id - @TableId(value = "SBBH", type = IdType.ASSIGN_UUID) + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; private String sbbh; @ApiModelProperty(value = "设备名称") 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 0e1f22d..234a46b 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 @@ -17,7 +17,7 @@ import java.math.BigDecimal; *

* * @author xn - * @since 2023-10-09 + * @since 2023-11-21 */ @Data @EqualsAndHashCode(callSuper = false) @@ -58,13 +58,13 @@ public class DmSygdMx implements Serializable { private String qbs; @ApiModelProperty(value = "坡口类型") - private String pklx; + private Double pklx; @ApiModelProperty(value = "坡口长度") - private Double pkcd=1.0; + private Double pkcd; @ApiModelProperty(value = "零件数量") - private BigDecimal ljsl; + private Double ljsl; @ApiModelProperty(value = "组立") private String zl; @@ -73,7 +73,7 @@ public class DmSygdMx implements Serializable { private String lx; @ApiModelProperty(value = "型材米数") - private BigDecimal xcms; + private Double xcms; @ApiModelProperty(value = "跨位") private String kw; @@ -111,57 +111,13 @@ public class DmSygdMx implements Serializable { @ApiModelProperty(value = "切割日期") private String qgrq; - @ApiModelProperty(value = "打磨长度") - private Double dmcd; - - @ApiModelProperty(value = "打磨设备") - private String dmsb; - - @ApiModelProperty(value = "打磨人员") - private String dmry; - - @ApiModelProperty(value = "打磨日期") - private String dmrq; - - @ApiModelProperty(value = "坡口设备") - private String pksb; - - @ApiModelProperty(value = "坡口人员") - private String pkry; - - @ApiModelProperty(value = "坡口日期") - private String pkrq; - @ApiModelProperty(value = "抛丸设备") private String pwsb; + @ApiModelProperty(value = "分段号") @TableField("DC_FD") private String dcFd; - @ApiModelProperty(value = "钢加大组结束") - private String gjjsDz; - - @ApiModelProperty(value = "钢加小组结束") - private String gjjsXz; - - @ApiModelProperty(value = "套料图接收") - private String jsqTlt; - - @ApiModelProperty(value = "领取表接收") - private String jsqLqb; - - @ApiModelProperty(value = "订货清单号") - private String dhqd; - - @ApiModelProperty(value = "订货数量") - private Double orderBs; - - @ApiModelProperty(value = "到货数量") - private Double arrivalBs; - - @ApiModelProperty(value = "区域") - private String qy; - @ApiModelProperty(value = "矫正标识") private String jzbs; @@ -171,15 +127,6 @@ public class DmSygdMx implements Serializable { @ApiModelProperty(value = "矫正人员") private String jzry; - @ApiModelProperty(value = "曲加工设备") - private String qjgsb; - - @ApiModelProperty(value = "曲加工人员") - private String qjgry; - - @ApiModelProperty(value = "曲加工日期") - private String qjgrq; - @ApiModelProperty(value = "本船号") @TableField("dcCh2") private String dcCh2; @@ -189,39 +136,54 @@ public class DmSygdMx implements Serializable { @ApiModelProperty(value = "时间更新时间") private String gxsj; + + @ApiModelProperty(value = "划线空程禅道") + private Double hxkcCd; + + @ApiModelProperty(value = "切割空程长度") + private Double qgkcCd; + @ApiModelProperty(value = "结束时间") private String jssj; - @ApiModelProperty(value = "矫正日期") - private String jzrq; - @ApiModelProperty(value = "划线空程长度") - private String hxcdKc; - @ApiModelProperty(value = "切割空程长度") - private String qgcdKc; - @ApiModelProperty(value = "状态;0编辑 1提交 2下发 3完成 4拖期") - private String zt="0"; + + @ApiModelProperty(value = "状态:0编辑 1提交 2下发 3完成 4拖期") + private String zt; + @ApiModelProperty(value = "根数") private Double xcgs; - @ApiModelProperty(value = "板材领取重量") - private BigDecimal bclqzl; + private Double bclqzl; @ApiModelProperty(value = "板材实耗重量") private Double bcshzl; @ApiModelProperty(value = "板材余料重量") - private BigDecimal bcylzl; + private Double bcylzl; @ApiModelProperty(value = "板材零件套料重量") - private BigDecimal bcljtlzl; + private Double bcljtlzl; @ApiModelProperty(value = "前批余料代") private Double bcqpyld; + private String parentId; + private String ylbhgg; + @TableId(value = "id", type = IdType.ASSIGN_UUID) private String id; + private BigDecimal blgs;//备料总工时 + private BigDecimal pwgs;//抛丸总工时 + private BigDecimal llgs;//理料总工时 + private BigDecimal hxgs;//划线总工时 + private BigDecimal qggs;//切割总工时 + private BigDecimal pkgs;//坡口总工时 + private BigDecimal dmgs;//打磨总工时 + private BigDecimal qgs;//曲加工总工时 + private BigDecimal zpgs;//装配总工时 + @TableField(exist = false) private String beginTime; @TableField(exist = false) 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 new file mode 100644 index 0000000..b11f120 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmSygdMxLj.java @@ -0,0 +1,259 @@ +package com.dsic.gj_erp.bean.jhgk; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * + *

+ * + * @author xn + * @since 2023-11-20 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@ApiModel(value="DmSygdMxLj对象", description="") +public class DmSygdMxLj implements Serializable { + + private static final long serialVersionUID=1L; + + @ApiModelProperty(value = "船号") + private String dcch; + + @ApiModelProperty(value = "目标船号") + private String mbch; + + @ApiModelProperty(value = "数据船号") + private String sjch; + + @ApiModelProperty(value = "批量") + private String pl; + + @ApiModelProperty(value = "分段") + private String fd; + + @ApiModelProperty(value = "需求地点") + private String xqdd; + + @ApiModelProperty(value = "抛丸") + private String pw; + + @ApiModelProperty(value = "领取类别") + private String lqlb; + + @ApiModelProperty(value = "跨位") + private String kw; + + @ApiModelProperty(value = "设备编号") + private String sbbh; + + @ApiModelProperty(value = "设备类型") + private String sclx; + + @ApiModelProperty(value = "组立") + private String zl; + + @ApiModelProperty(value = "物品材质") + private String wpcz; + + @ApiModelProperty(value = "物品规格") + private String wpgg; + + @ApiModelProperty(value = "板厚") + private Double bh; + + @ApiModelProperty(value = "版长") + private Double bc; + + @ApiModelProperty(value = "油漆油漆用量") + private Double yqyl; + + @ApiModelProperty(value = "切割长度") + private Double qgcd; + + @ApiModelProperty(value = "图纸编号") + private String tzbh; + + @ApiModelProperty(value = "套料数量") + private Double tlsl; + + @ApiModelProperty(value = "坡口类型") + private String pklx; + + @ApiModelProperty(value = "曲标识") + private String qbs; + + @ApiModelProperty(value = "坡口長度") + private String pkbs; + + @ApiModelProperty(value = "坡口标识") + private Double pkcd; + + @ApiModelProperty(value = "打磨标识") + private String dmbs; + + @ApiModelProperty(value = "打磨长度") + private Double dmcd; + + @ApiModelProperty(value = "装配顺序") + private Integer zpsx; + + @ApiModelProperty(value = "零件编号") + private String ljbh; + + @ApiModelProperty(value = "零件数量") + private Double ljsl; + + @ApiModelProperty(value = "零件属性") + private String ljsx; + + @ApiModelProperty(value = "单件面积") + private Double djmj; + + @ApiModelProperty(value = "零件单重") + private Double ljdz; + + @ApiModelProperty(value = "备料") + private Double blgs; + + @ApiModelProperty(value = "抛丸") + private Double pwgs; + + @ApiModelProperty(value = "理料") + private Double llgs; + + @ApiModelProperty(value = "划线") + private Double hxgs; + + @ApiModelProperty(value = "切割") + private Double qggs; + + @ApiModelProperty(value = "坡口") + private Double pkgs; + + @ApiModelProperty(value = "曲") + private Double qgs; + + @ApiModelProperty(value = "打磨") + private Double dmgs; + + @ApiModelProperty(value = "装配") + private Double zpgs; + + @ApiModelProperty(value = "反馈备料") + private Double fkblgs; + + @ApiModelProperty(value = "抛丸") + private Double fkpwgs; + + @ApiModelProperty(value = "理料") + private Double fkllgs; + + @ApiModelProperty(value = "划线") + private Double fkhxgs; + + @ApiModelProperty(value = "切割") + private Double fkqggs; + + @ApiModelProperty(value = "坡口") + private Double fkpkgs; + + @ApiModelProperty(value = "曲") + private Double fkqgs; + + @ApiModelProperty(value = "打磨") + private Double fkdmgs; + + @ApiModelProperty(value = "装配") + private Double fkzpgs; + + @ApiModelProperty(value = "分段和") + private String fds; + + @ApiModelProperty(value = "划线长度") + private Double hxcd; + + @ApiModelProperty(value = "根数") + private Double xcgs; + + @ApiModelProperty(value = "米数") + private Double xcshms; + + @ApiModelProperty(value = "板材领取重量") + private Double bclqzl; + + @ApiModelProperty(value = "板材实耗重量") + private Double bcshzl; + + @ApiModelProperty(value = "板材余料重量") + private Double bcylzl; + + @ApiModelProperty(value = "板材零件套料重量") + private Double bcljtlzl; + + @ApiModelProperty(value = "前批余料代") + private Double bcqpyld; + + @ApiModelProperty(value = "小组钢料需求期") + private String xzglxq; + + @ApiModelProperty(value = "大组钢料需求期") + private String dzglxq; + + @ApiModelProperty(value = "计划加工开始时间") + private String kssj; + + @ApiModelProperty(value = "坡口开始时间") + private String pkkssj; + + @ApiModelProperty(value = "坡口结束时间") + private String pkjssj; + + @ApiModelProperty(value = "曲加工开始时间") + private String qkssj; + + @ApiModelProperty(value = "曲加工结束时间") + private String qjssj; + + @ApiModelProperty(value = "打磨开始时间") + private String dmkssj; + + @ApiModelProperty(value = "打磨结束时间") + private String dmjssj; + + @ApiModelProperty(value = "工艺流程") + private String gylc; + + private Integer cs; + + private String lqbs; + + private String bzrq; + + private String bzry; + + private String yidd; + + private String parentId; + + private String ylbhgg; + + private String zt; + + private String type; + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; + + + private String gcrl; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java index 883ae73..dc7c473 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java @@ -202,12 +202,6 @@ public class DmYdjh implements Serializable { @ApiModelProperty(value = "矫正日期") private String jzrq; - @ApiModelProperty(value = "划线空程长度") - private Double hxcdKc; - - @ApiModelProperty(value = "切割空程长度") - private Double qgcdKc; - @ApiModelProperty(value = "状态:0编辑 1提交 2下发 3完成 4拖期") private String zt; diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java index 3b65706..48b0def 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Kwdto.java @@ -9,11 +9,26 @@ import java.util.List; @Data public class Kwdto { - private String rq; - private String kw; - private int tlt_sl; - private BigDecimal hx_cd; - private BigDecimal qg_cd; + private String id; + private String yf;//月份 + private String kw;//跨位 + private String ch;//船号 + private String pl;//批量 + private String fd;//分段 + private BigDecimal bs;//板数 + private String dhqd;//订货清单号 + private BigDecimal lhsl;//来货数量 + private BigDecimal dhsl;//订货数量 + private BigDecimal blgs;//备料总工时 + private BigDecimal pwgs;//抛丸总工时 + private BigDecimal llgs;//理料总工时 + private BigDecimal hxgs;//划线总工时 + private BigDecimal qggs;//切割总工时 + private BigDecimal pkgs;//坡口总工时 + private BigDecimal dmgs;//打磨总工时 + private BigDecimal qjggs;//曲加工总工时 + private BigDecimal zpgs;//装配总工时 + private List mxList; } diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Pldto.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Pldto.java index 57fe3a8..0a77c86 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Pldto.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Pldto.java @@ -9,9 +9,9 @@ import java.util.List; @Data public class Pldto extends DmCzplpNew { - private String jsq_dz_pc; - private String jsq_xz_pc; - private String gjks_pc; + private String dzglxq; + private String xzglxq; + private Integer xzcz; + private Integer dzcz; - private List mxList; } diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Xbjhdto.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Xbjhdto.java index 9d45234..845cead 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Xbjhdto.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/dto/Xbjhdto.java @@ -10,8 +10,8 @@ import java.util.List; @Data public class Xbjhdto extends DmXbjh { - private Double plb_zl;//批量表重量 - private Double zrc_zl;//中日程重量 + private Double xczl;//相差重量 + private Double zrc_zl;//实耗重量 private Double tlt_zl;//套料图重量 private List mxList; diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java index 6037403..b28a11f 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java @@ -22,7 +22,7 @@ import java.util.List; /** *

- * 前端控制器 + * 前端控制器 *

* * @author xn @@ -36,73 +36,78 @@ public class DmQfxqController { DmQfxqService service; @Autowired DmCbxxpService cbxxpService; + //查询 @RequestMapping("/getList") @AuthFunction - public ResultBean getList(@RequestBody DmQfxq qfxq){ - List list=service.list(new QueryWrapper() - .eq(StrUtil.isNotEmpty(qfxq.getDb()),"substring(db,0,8) ",qfxq.getDb()) - .eq(StrUtil.isNotEmpty(qfxq.getZt()),"zt",qfxq.getZt()) - .orderByAsc("DC_CH,cast(dc_pl as int),DC_FD")); + public ResultBean getList(@RequestBody DmQfxq qfxq) { + List list = service.list(new QueryWrapper() + .eq(StrUtil.isNotEmpty(qfxq.getDb()), "substring(db,0,8) ", qfxq.getDb()) + .eq(StrUtil.isNotEmpty(qfxq.getZt()), "zt", qfxq.getZt()) + .orderByAsc("DC_CH,cast(dc_pl as int),DC_FD")); return new ResultBean(list); } @RequestMapping("/getCzxx") @AuthFunction - public ResultBean getCzxx(){ - List list= cbxxpService.list(new QueryWrapper() - .select("cbbm","cbmc") - .eq("wgbs","N") - .orderBy(true, true, "cbbm")); + public ResultBean getCzxx() { + List list = cbxxpService.list(new QueryWrapper() + .select("cbbm", "cbmc") + .eq("wgbs", "N") + .orderBy(true, true, "cbbm")); return new ResultBean(list); } + //导入 @PostMapping("/upload") @AuthFunction @ResponseBody - public ResultBean uploadQf(@RequestParam("file") MultipartFile file , String czbh, HttpServletRequest req) throws Exception, CustomException { + public ResultBean uploadQf(@RequestParam("file") MultipartFile file, String czbh, HttpServletRequest req) throws Exception, CustomException { ExcelQFListener objectListener = new ExcelQFListener(); EasyExcel.read(file.getInputStream(), QfExcel.class, objectListener).sheet(0).headRowNumber(1).doRead(); List objList = objectListener.getObjectList(); - return service.uploadQf(objList,czbh,req); + return service.uploadQf(objList, czbh, req); } //保存 @RequestMapping("/save") @AuthFunction - public ResultBean save(@RequestBody List qfxqs){ + public ResultBean save(@RequestBody List qfxqs) { service.saveBatch(qfxqs); return new ResultBean(); } + //删除 @RequestMapping("/remove") @AuthFunction - public ResultBean remove(@RequestBody List qfxqs){ + public ResultBean remove(@RequestBody List qfxqs) { service.removeByIds(qfxqs); return new ResultBean(); } + //提交/退回 @RequestMapping("/qfxqTJ") @AuthFunction - public ResultBean qfxqTJ(@RequestBody List qfxqs){ - qfxqs.forEach(q->{ + public ResultBean qfxqTJ(@RequestBody List qfxqs) { + qfxqs.forEach(q -> { if (q.getZt().equals("0")) { - q.setZt("1"); - return; + q.setZt("1"); + return; } - if (q.getZt().equals("1")){ + if (q.getZt().equals("1")) { q.setZt("0"); } }); service.updateBatchById(qfxqs); return new ResultBean(); } + //审核 @RequestMapping("/qfxqSH") @AuthFunction - public ResultBean qfxqSH(@RequestBody List qfxqs){ - qfxqs.forEach(q->{ + public ResultBean qfxqSH(@RequestBody List qfxqs) { + qfxqs.forEach(q -> { if (q.getZt().equals("1")) { q.setZt("2"); } 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 b3ce5e8..626cc7c 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 @@ -20,10 +20,7 @@ import org.springframework.web.bind.annotation.RestController; 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.*; import java.util.stream.Collectors; /** @@ -59,19 +56,27 @@ public class DmSygdMxController { @RequestMapping("/saveByDcch") @AuthFunction public ResultBean saveByDcch(@RequestBody HashMap> map ){ - return new ResultBean(service.saveByDcch(map)); + return null; } @RequestMapping("/symxhz") @AuthFunction public ResultBean symxhz(@RequestBody List list){ Map map=new HashMap<>(); + //1.根据上料时间 从近到远排序 + list = list.stream() + .filter(mx -> Objects.nonNull(mx.getJssj())) + .sorted(Comparator.comparing(DmSygdMx::getJssj, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + //2.时间范围内线表计划数据 + String year = list.get(0).getJssj().substring(0, 4); + String begin = list.get(0).getJssj().substring(5, 7); + String end = list.get(list.size() - 1).getJssj().substring(5, 7); - 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)); + 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("tzList",service.getTZList(list)); +// map.put("dhList",service.getDhList(list)); return new ResultBean(map); } @RequestMapping("/getCnsb") diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxLjController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxLjController.java new file mode 100644 index 0000000..253e8ae --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdMxLjController.java @@ -0,0 +1,20 @@ +package com.dsic.gj_erp.controller.jhgk; + + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 前端控制器 + *

+ * + * @author xn + * @since 2023-11-20 + */ +@RestController +@RequestMapping("/dmSygdMxLj") +public class DmSygdMxLjController { + +} + diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdxqController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdxqController.java index dc3563c..53ea807 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdxqController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmSygdxqController.java @@ -97,8 +97,6 @@ public class DmSygdxqController { service.saveXzList(list,username,day); service.saveDzList(list1,username,day); - - return new ResultBean(); } @@ -106,19 +104,19 @@ public class DmSygdxqController { // String a = "2023/08/20"; // String b = "2023/08/21"; // System.out.println(a.compareTo(b)); - System.out.println(DateUtil.format(DateUtil.nextMonth(),"yyyy/MM")); +// System.out.println(DateUtil.format(DateUtil.nextMonth(),"yyyy/MM")); // String[] a={"船只", "批量号", "总段号", "分段号", "大组极重", "总装部最新分段需求期", "钢料需求", "X大板", "X数控件", "X平铁", "X压弯", "X型材", "X二次装T型材"}; -// String[] b={"船只", "批量号", "总段号", "分段号", "大组极重", "钢料需求", "D大板", "D曲板", "D型材T", "D散件"}; +// String[] b={"月份","跨位","船号","批量","分段","板数","订货清单号","到货数量","订货数量","备料总工时","抛丸总工时","理料总工时","划线总工时","切割总工时","坡口总工时","打磨总工时","曲加工总工时"}; // String[] a1={"dcCh","dcPl", "zdh","dcFd","dzjz","zxfdxq", "glxq", "xdb", "xskj,", // "xpt,", "xyw", "xxc", "xtxc", }; -// String[] b1={"dcCh","dcPl","zdh","dcFd","dzjz","glxq", "dqb", "dxc", "dsj", "ddb"}; +// String[] b1={"yf","kw","ch","pl","fd","bs","dhqd","dhsl","dhsl","blgs","pwgs","llgs","hxgs","qggs","pkgs","dmgs","qjggs"}; // for (int i = 0; i < b.length; i++) { // System.out.println("{ field: '"+b1[i]+"', title: '"+b[i]+"', width: 120, \n" + // " filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],\n" + // " filterRender: { name: 'FilterCombination', },\n" + // "},"); // } - +// System.out.println("2023/08/05".substring(0,7)); } } 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 3ac4414..e4e24af 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 @@ -46,8 +46,8 @@ public class DmYdjhController { @RequestMapping("/tjydjh") @AuthFunction public ResultBean tjydjh(){ - service.tjydjh(); - return new ResultBean(); + + return new ResultBean(service.tjydjh()); } } diff --git a/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java index 53ad44a..0a89c16 100644 --- a/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java +++ b/src/main/java/com/dsic/gj_erp/dao/jcsj/EmSbjbbRepository.java @@ -17,6 +17,6 @@ public interface EmSbjbbRepository extends JpaRepository { @Query(nativeQuery = true,value = "SELECT bm,bmsm,bmjb FROM dm_fjbmgl") List sblx(); - @Query(nativeQuery = true,value = "SELECT szcs,sbbh,sbmc FROM EM_SBJBB") + @Query(nativeQuery = true,value = "SELECT szcs,sbbh,sbmc FROM EM_SBJBB where sbzt not in('04','05') or sbzt is null") List BMMCBM(); } diff --git a/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java index b945f79..b4dcd11 100644 --- a/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java +++ b/src/main/java/com/dsic/gj_erp/dao/sy/Dm_zhbmpRepository.java @@ -35,6 +35,6 @@ public interface Dm_zhbmpRepository extends JpaRepository findbmbm(); - @Query(nativeQuery = true,value = "SELECT bm,bmsm FROM DM_ZHBMP WHERE bmlb='qgkw' and CAST(bm as int)>4") + @Query(nativeQuery = true,value = "SELECT bm,bmsm FROM DM_ZHBMP WHERE bmlb='qgkw' and CAST(bm as int)>4 order by bmsm") List findqgkw(); } \ No newline at end of file diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxLjMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxLjMapper.java new file mode 100644 index 0000000..2d49ef8 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmSygdMxLjMapper.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.mapper.jhgk; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj; + +/** + *

+ * Mapper 接口 + *

+ * + * @author xn + * @since 2023-11-20 + */ +public interface DmSygdMxLjMapper 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 58977ca..9fc0b4e 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,7 +3,11 @@ 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.DmSygdMxLj; import com.dsic.gj_erp.bean.jhgk.dto.Dhdto; +import com.dsic.gj_erp.bean.jhgk.dto.Kwdto; +import com.dsic.gj_erp.bean.jhgk.dto.Pldto; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -18,4 +22,10 @@ import java.util.List; public interface DmSygdMxMapper extends BaseMapper { Dhdto getDhsl(Dhdto dhdto); + + List getLjxx(); + List getMx(); + int setParent(); + List getkw(@Param("begin") String begin, @Param("end") String end); + List getPl(@Param("begin") String begin,@Param("end") String end); } diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java index 1828268..1dd2f37 100644 --- a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java @@ -2,8 +2,11 @@ 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.DmYdjh; +import java.util.List; + /** *

* Mapper 接口 @@ -14,4 +17,5 @@ import com.dsic.gj_erp.bean.jhgk.DmYdjh; */ public interface DmYdjhMapper extends BaseMapper { + List getSygdmx(String nextMonth); } diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java index 1939702..c18b4f7 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmGcrlServiceImpl.java @@ -42,7 +42,7 @@ public class EmGcrlServiceImpl extends ServiceImpl impleme EmGcrlRepository emGcrlRepository; - String[] weekArray = { "一", "二", "三", "四", "五", "六","日"}; + String[] weekArray = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日"}; @Override public List getList(JSONObject json) { @@ -52,8 +52,9 @@ public class EmGcrlServiceImpl extends ServiceImpl impleme }else{ queryWrapper.eq("NF", Calendar.getInstance().get(Calendar.YEAR)); } - queryWrapper.orderByDesc("gl"); + queryWrapper.orderByAsc("gl"); List emGcrls=emGcrlMapper.selectList(queryWrapper); + return emGcrls; } @@ -74,25 +75,37 @@ public class EmGcrlServiceImpl extends ServiceImpl impleme LocalDate endDate = LocalDate.of(intNF, 12, 31); // 结束日期:2022年12月31日 List saveList=new ArrayList<>(); LocalDate currentDate = startDate; - + String gzr=""; while (currentDate.isBefore(endDate) || currentDate.isEqual(endDate)) { EmGcrl emGcrl=new EmGcrl(); emGcrl.setNf(nf); String gl = currentDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); emGcrl.setGl(gl); - WeekFields weekFields = WeekFields.of(Locale.getDefault()); +// WeekFields weekFields = WeekFields.of(Locale.getDefault()); + WeekFields weekFields = WeekFields.of(DayOfWeek.MONDAY, 4); Integer weekOfYear = currentDate.get(weekFields.weekOfYear()); emGcrl.setNz(weekOfYear.toString()); - Integer weekOfMonth = currentDate.get(weekFields.weekOfMonth()); - emGcrl.setYz(weekOfMonth.toString()); +// Integer weekOfMonth = currentDate.get(weekFields.weekOfMonth()); +// emGcrl.setYz(weekOfMonth.toString()); DayOfWeek dayOfWeek = currentDate.getDayOfWeek(); Integer dayOfYear= currentDate.getDayOfYear(); emGcrl.setGzlr(dayOfYear.toString()); Integer zj=dayOfWeek.getValue(); emGcrl.setXq(weekArray[zj-1]); if(zj==6||zj==7){ + if (gzr.equals("")){ + EmGcrl l= this.getOne(new QueryWrapper().select("top 1 gzr") + .eq("nf",intNF-1).orderByDesc(" cast(gzlr as int) ")); + if (ObjectUtil.isEmpty(l)){ + throw new RuntimeException("请先生成上一年份信息!"); + } + gzr=l.getGzr(); + } + emGcrl.setGzr(gzr); emGcrl.setXxr("0"); }else { + gzr=emGcrl.getGl(); + emGcrl.setGzr(gzr); emGcrl.setXxr("1"); } saveList.add(emGcrl); diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java index 803ed0e..6062e74 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/EmSbcnpServiceImpl.java @@ -42,7 +42,7 @@ public class EmSbcnpServiceImpl extends ServiceImpl impl // if(StringUtils.isNotEmpty(json.getString("sbmc"))){ // queryWrapper.eq("SBMC",json.getString("sbmc")); // } - List emSbjbbs=emSbcnpMapper.selectList(queryWrapper); + List emSbjbbs=emSbcnpMapper.selectList(queryWrapper.orderByAsc("kw,gx")); return emSbjbbs; } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxLjService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxLjService.java new file mode 100644 index 0000000..00ce6eb --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmSygdMxLjService.java @@ -0,0 +1,17 @@ +package com.dsic.gj_erp.service.jhgk; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj; + +/** + *

+ * 服务类 + *

+ * + * @author xn + * @since 2023-11-20 + */ +public interface DmSygdMxLjService extends IService { + +} 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 7339b14..d8b99db 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 @@ -19,10 +19,10 @@ import java.util.Map; */ public interface DmSygdMxService extends IService { Map sygdPC(); - List saveByDcch(HashMap> map); - List getKwList(List list); - List getXBList(List list); - List getPl(List list); +// List saveByDcch(HashMap> map); + List getKwList(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); List getDhList(List list); ResultBean tqSygd(); diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/DmYdjhService.java b/src/main/java/com/dsic/gj_erp/service/jhgk/DmYdjhService.java index f595adc..6d98bcd 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/DmYdjhService.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/DmYdjhService.java @@ -2,8 +2,11 @@ package com.dsic.gj_erp.service.jhgk; import com.baomidou.mybatisplus.extension.service.IService; +import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmYdjh; +import java.util.List; + /** *

* 服务类 @@ -15,5 +18,5 @@ import com.dsic.gj_erp.bean.jhgk.DmYdjh; public interface DmYdjhService extends IService { - void tjydjh(); + List tjydjh(); } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java index 4bd27b8..c15766f 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java @@ -24,7 +24,7 @@ import java.util.stream.Collectors; /** *

- * 服务实现类 + * 服务实现类 *

* * @author xn @@ -37,27 +37,31 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme @Override @Transactional(rollbackFor = Exception.class) public ResultBean uploadQf(List list, String project, HttpServletRequest req) { - List listForSave=new ArrayList<>(); - Map> chs =list.stream().filter(f -> StringUtils.isNotBlank(f.getDcPl())) - .collect(Collectors.groupingBy(QfExcel::getDcCh,Collectors.mapping(QfExcel::getDcPl,Collectors.toSet()))); - for (String ch:chs.keySet()){ - int i= this.count(new QueryWrapper().eq("DC_CH",ch).in("DC_PL",chs.get(ch))); - if (i>0){ - return new ResultBean(false,10000, "请勿重复导入,船号:"+ch+",批量:"+chs.get(ch)); - } - } - for (QfExcel q:list) { -// this.remove(new QueryWrapper() -// .eq("DC_CH",q.getDcCh()) -// .eq("DC_PL",q.getDcPl()) -// .eq("DC_FD",q.getDcFd())); - DmQfxq a=new DmQfxq(); - BeanUtil.copyProperties(q,a); - a.setBzry((String) req.getAttribute("yhms")); - a.setBzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); - listForSave.add(a); + List listForSave = new ArrayList<>(); + Map> chs = list.stream().filter(f -> StringUtils.isNotBlank(f.getDcPl())) + .collect(Collectors.groupingBy(QfExcel::getDcCh, Collectors.mapping(QfExcel::getDcPl, Collectors.toSet()))); + for (String ch : chs.keySet()) { + int i = this.count(new QueryWrapper().eq("DC_CH", ch).in("DC_PL", chs.get(ch))); + if (i > 0) { + return new ResultBean(false, 10000, "请勿重复导入,船号:" + ch + ",批量:" + chs.get(ch)); } - this.saveBatch(listForSave); + } + for (QfExcel q : list) { + DmQfxq a = new DmQfxq(); + BeanUtil.copyProperties(q, a); + String pl = a.getDcPl().length() == 1 ? "00" + a.getDcPl() : a.getDcPl().length() == 2 ? "0" + a.getDcPl() : a.getDcPl(); + a.setDcPl(pl); + a.setBzry((String) req.getAttribute("yhms")); + a.setBzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); + listForSave.add(a); + } + this.saveBatch(listForSave); + //生成月度计划信息 + generateYdjh(); return new ResultBean(); } + + public void generateYdjh() { + //零件 + } } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxLjServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxLjServiceImpl.java new file mode 100644 index 0000000..28989f3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmSygdMxLjServiceImpl.java @@ -0,0 +1,21 @@ +package com.dsic.gj_erp.service.jhgk.impl; + + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj; +import com.dsic.gj_erp.mapper.jhgk.DmSygdMxLjMapper; +import com.dsic.gj_erp.service.jhgk.DmSygdMxLjService; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author xn + * @since 2023-11-20 + */ +@Service +public class DmSygdMxLjServiceImpl extends ServiceImpl implements DmSygdMxLjService { + +} 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 9d65bc7..f99ab4b 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,11 +6,13 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.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.excel.PlExcel; import com.dsic.gj_erp.bean.jhgk.*; import com.dsic.gj_erp.bean.jhgk.dto.*; import com.dsic.gj_erp.mapper.jcsj.DmBomMapper; @@ -22,6 +24,7 @@ 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.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -33,7 +36,7 @@ import java.util.stream.Collectors; /** *

- * 服务实现类 + * 服务实现类 *

* * @author xn @@ -42,699 +45,489 @@ import java.util.stream.Collectors; @Service public class DmSygdMxServiceImpl extends ServiceImpl implements DmSygdMxService { - @Resource - private DmZrcjhMapper zrcjhMapper; - @Resource - private DmBomMapper bomMapper; @Resource private EmGcrlMapper gcrlMapper; @Resource private DmSygdService sygdService; @Resource - private DmCzplpNewService plService; - @Resource private DmXbjhService xbService; @Resource private DmTzjhService tzjhService; + @Resource + private DmSygdMxLjServiceImpl ljService; /** - * 中日程分解 - * 根据中日程信息,提取相应的BOM数据,合并到套料图级别 + * 三月滚动需求期排产 + * 滚动需求期信息,提取相应的BOM数据,后合并到套料图级别 * 默认提取未来3个月信息 + * * @return */ @Override @Transactional - public Map sygdPC(){ - Map map2= new HashMap(); - //1.接下来3个月的 中日程 数据 -// List zrcjhs= zrcjhMapper.selectList(new QueryWrapper() -// .select("DC_CH,DC_PL,gjks,gjjs_dz,gjjs_xz,jsq_tlt,jsq_lqb,dhqd") -// .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") -// ); - - //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,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") - ); - - 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 : 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") - .eq("dcch",zrcjh.getDcCh()) - .eq("pl",zrcjh.getDcPl().length()<3?"0"+zrcjh.getDcPl():zrcjh.getDcPl()) -// .eq("cs",3) - .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 { - bomToMx(zrcjh,bomList,mxList,"",zrcjh.getDcCh()); - } - } - //4.1 将没有BOM信息的中日程的船号,去重,返回前端,手动选择目标船只 - if (no_tlt.size()>0){ - Map> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh)); - List no_tlt_ch=new ArrayList<>(); - for (String s:map.keySet()){ - DmSygdMx m=new DmSygdMx(); - m.setDcCh(s); - no_tlt_ch.add(m); - } - //可作为目标船只的船 - List haveTltBoms= bomMapper.selectList(new QueryWrapper() - .select("dcch") - .eq("cs",3) - .groupBy("dcch")); - - map2.put("no_tlt",no_tlt); - map2.put("no_tlt_ch",no_tlt_ch); - map2.put("haveTltBoms",haveTltBoms); - }else { - //4.2 如果BOM中数据齐全,直接排产 - ypc(mxList); - } - map2.put("mxList",mxList); - return map2; - } - - /** - *使用中日程、BOM信息,给明细赋值 - * @param zrcjh 中日程对象 - * @param list BOM信息 - * @param mxList 明细信息 - * @param mbch 目标船只 - * @param dcch 本船号 - * @return - */ - public void bomToMx(DmZrcjh zrcjh,List list,List mxList,String mbch,String dcch){ - for (DmBom b:list){ - DmSygdMx mx=new DmSygdMx(); - zrcToMx(zrcjh,mx); - if (StrUtil.isNotEmpty(b.getZl())){ - if(b.getZl().equals("1110")){ - mx.setJssj(mx.getGjjsDz()); - } - if(b.getZl().equals("1010")){ - mx.setJssj(mx.getGjjsXz()); + public Map sygdPC() { + List ljList = baseMapper.getLjxx(); + //零件排产 按时间 船号 批量 图号 排序 + //默认定额 坡口 打磨 曲 + + //todo 保存前判断是否有,已排完的数据 + + ljService.saveBatch(ljList); + + List mxList = baseMapper.getMx(); + mxList.forEach(l -> { + if (StrUtil.isNotEmpty(l.getWpgg())) { + String[] wpgg = l.getWpgg().split("\\*"); + Double c = 0.0; + if (wpgg.length == 3) { + //立方米 + Double d = Double.parseDouble(wpgg[0]) * Double.parseDouble(wpgg[1]) * Double.parseDouble(wpgg[2]) / 1000000000.0; + //密度7.85t/m3 + c = d * 7850; } - if (b.getZl().equals("4230")){//焊接机器人肘板 - mx.setJssj(mx.getGjjsXz()); - } - if (b.getZl().equals("1120")){//TODO 光电 暂时按最小时间排 - if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0) - mx.setJssj(mx.getGjjsXz()); - else - mx.setJssj(mx.getGjjsDz()); - } - }else { - if (mx.getGjjsXz().compareTo(mx.getGjjsDz())>0) - mx.setJssj(mx.getGjjsDz()); - else - mx.setJssj(mx.getGjjsXz()); - } - if (mx.getJssj().compareTo("2023/08/01")<0 || mx.getJssj().compareTo("2023/08/31")>0){ - break; + l.setBcshzl(Double.valueOf(String.format("%.2f", c))); } -// 7850 kg 密度 计算重量 - String[] wpgg=b.getWpgg().split("\\*"); - Double c=0.0; - if (wpgg.length==3){ - //立方米 - Double d= Double.parseDouble(wpgg[0])*Double.parseDouble(wpgg[1])*Double.parseDouble(wpgg[2])/1000000000.0; - //密度7.85t/m3 - c=d*7.85; - } - mx.setBcshzl(c); - mx.setZl(b.getZl()); - mx.setTzbh(b.getTzbh()); - mx.setLqlb(b.getLqlb()); - mx.setLx(b.getTzbh().substring(4,5).equals("X")?"X":"B"); - mx.setWpgg(b.getWpgg()); - mx.setWpxh(b.getWpcz()); - //型材米数 - mx.setLjsl(b.getLjsl()); - //区域 -// mx.setQy(); - mx.setKw(b.getKw()); - //上料日期 - //上料人员 - //矫正标识 - //矫正设备 - //矫正人员 - mx.setPw(b.getPw()); - //抛丸设备 - //抛丸人员 - //抛丸日期 - mx.setHxcd(b.getHxcd()); - //划线空程 - //划线设备 - //划线人员 - //划线日期 - mx.setQgcd(b.getQgcd()); - //切割空程 - //切割设备 - //切割人员 - //切割日期 - mx.setPklx(b.getPklx()); - // mx.setPkcd(b.getPkcd()); - //坡口设备 - //坡口人员 - //坡口日期 - mx.setQbs(b.getQbs()); - //曲加工设备 - //曲加工人员 - //曲加工日期 - // mx.setDmcd(b.getDmcd()); - //打磨设备 - //打磨人员 - //打磨日期 - mx.setDcCh2(dcch); - mx.setDcCh1(mbch); - mx.setGxsj(DateUtil.now()); - - - mxList.add(mx); - } - } + }); + this.saveBatch(mxList); + baseMapper.setParent(); - /** - * 使用中日程信息,给明细赋值 - * @param zrcjh - * @param m - */ - public void zrcToMx(DmZrcjh zrcjh, DmSygdMx m){ - m.setDcCh(zrcjh.getDcCh()); - 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()); - m.setJsqLqb(zrcjh.getJsqLqb()); - m.setDhqd(zrcjh.getDhqd()); - } + //todo 排产 - /** - * 根据选择的目标船只,查询数据,为本船只赋值 - * @param map - * @return - */ - @Override - public List saveByDcch(HashMap> map) { - List zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class); - List mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class); - List no_tlt_ch= BeanUtil.copyToList(map.get("no_tlt_ch"),DmSygdMx.class); - - //1.根据选择的*目标船只,查询数据,为本船只赋值 - for (DmZrcjh z:zrcjhs){ - for (DmSygdMx mx:no_tlt_ch){ - if (z.getDcCh().equals(mx.getDcCh())){ - List bomList= bomMapper.selectList(new QueryWrapper() - .select("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" + - "pklx,pkcd,qbs,dmcd,ljsl") - .eq("dcch",mx.getDcCh1()) - .eq("pl",z.getDcPl().length()<3?"0"+z.getDcPl():z.getDcPl()) - .eq("cs",3) - .groupBy("dcch,sjch,pl,tzbh,lqlb,zl,wpgg,wpcz,kw,hxcd,qgcd,\n" + - "pklx,pkcd,qbs,dmcd,ljsl") - ); - if(bomList.size()<1){ - DmSygdMx mx1=new DmSygdMx(); - zrcToMx(z,mx1); - mxList.add(mx1); - }else { - bomToMx(z,bomList,mxList,mx.getDcCh1(),""); - } - } - } - } - //2.排产 - ypc(mxList); - mxList =mxList.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); - return mxList; + Map map2 = new HashMap(); + map2.put("mxList", mxList); + return map2; } /** * 预排产,根据套料图号及跨位 + * * @param list */ - public void ypc(List list){ - //1.根据组立结束时间排序,决定生产顺序 - list =list.stream().sorted(Comparator.comparing(DmSygdMx::getJssj,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); - //2.未来工厂日历信息 - List gcrlList= gcrlMapper.selectList(new QueryWrapper() - .eq("xxr","1") + public void ypc(List list) { + //1.根据组立结束时间排序,决定生产顺序 + list = list.stream().sorted(Comparator.comparing(DmSygdMx::getJssj, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + //2.未来工厂日历信息 + List gcrlList = gcrlMapper.selectList(new QueryWrapper() + .eq("xxr", "1") // .between("gl","2023/08/01","2023/08/31") - .gt("gl","2023/08/01") + .gt("gl", "2023/08/01") // DateUtil.date().toString("yyyy/MM/dd")) - .orderByAsc("gl")); - //3.预排产 - //TODO 假设:产能测算266.9;又套料图需当天完成 + .orderByAsc("gl")); + //3.预排产 + //TODO 假设:产能测算266.9;又套料图需当天完成 for (int i = 0; i < gcrlList.size(); i++) { for (int j = 0; j < 266; j++) { - int index=266*i+j; - if (list.size()>index){ - 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 { - j=266; - i=gcrlList.size(); + int index = 266 * i + j; + if (list.size() > index) { + 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 { + j = 266; + i = gcrlList.size(); } } // } - this.saveBatch(list); - } - - /** - * 生成3月滚动计划 - * @return - */ - @Transactional - public ResultBean tqSygd(){ - //1.查询未来3个月明细信息 - //测试 -// List list=null; - List list= this.list(new QueryWrapper() - .between("gjks", - "2023/08/01", - "2023/08/31") - ); - if (ObjectUtil.isEmpty(list)||list.size()<1){ - return new ResultBean(null); - } - //根据船号+批量分组 - Map> map=list.stream().collect(Collectors.groupingBy(x->x.getDcCh()+x.getDcPl())); - List sygdList=new ArrayList<>(); - for (String key:map.keySet()){ - DmSygd sygd=new DmSygd(); - List mxList=map.get(key); - sygd.setDcCh(mxList.get(0).getDcCh()); - sygd.setDcPl(mxList.get(0).getDcPl()); - sygd.setDcFd(mxList.get(0).getDcFd()); - sygd.setGjjsDz(mxList.get(0).getGjjsDz()); - sygd.setGjjsXz(mxList.get(0).getGjjsXz()); - sygd.setJsqTlt(mxList.get(0).getJsqTlt()); - sygd.setJsqLqb(mxList.get(0).getJsqLqb()); - sygd.setTltSl(mxList.size()); - sygd.setSlSl(mxList.size()); - sygd.setPwSl(mxList.size()); - //跨位信息 - Map> kwMap=map.get(key).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("0") )); - for (String kw:kwMap.keySet()){ - //组立信息 - Map> zlMap=kwMap.get(kw).stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getZl()).orElse("0") )); - for (String zl:zlMap.keySet()){ - //跨位、组立下,多张套料图的最开始加工时间,最后加工时间;(上料日期) - List kssj= zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); - List jssj= zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList()); - String sj=kssj.get(0).getSlrq()+" - "+jssj.get(0).getSlrq(); - - if (kw.equals("7")){//1跨平直大板 - if(zl.equals("1110")){//大组 - sygd.setN1ad(kssj.size()); - sygd.setN1adSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN1ax(kssj.size()); - sygd.setN1axSj(sj); - } - } - if (kw.equals("8")){//1跨进线板 - sygd.setN1ld(kssj.size()); - sygd.setN1ldSj(sj); - } - if (kw.equals("5")){//2跨T型材面板 - if(zl.equals("1110")){//大组 - sygd.setS2td(kssj.size()); - sygd.setS2tdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setS2tx(kssj.size()); - sygd.setS2txSj(sj); - } - - } - if (kw.equals("9")){//2跨超长超宽板 - if(zl.equals("1110")){//大组 - sygd.setN2bd(kssj.size()); - sygd.setN2bdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN2bx(kssj.size()); - sygd.setN2bxSj(sj); - } - } - if (kw.equals("10")){//2跨超长超宽曲板 - if(zl.equals("1110")){//大组 - sygd.setN2cd(kssj.size()); - sygd.setN2cdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN2cx(kssj.size()); - sygd.setN2cxSj(sj); - } - } - if (kw.equals("11")){//2跨T型材腹板 - if(zl.equals("1110")){//大组 - sygd.setN2td(kssj.size()); - sygd.setN2tdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN2tx(kssj.size()); - sygd.setN2txSj(sj); - } - } - if (kw.equals("12")){//2跨激光切割板 - if(zl.equals("1110")){//大组 - sygd.setN2jd(kssj.size()); - sygd.setN2jdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN2jx(kssj.size()); - sygd.setN2jxSj(sj); - } - - } - if (kw.equals("14")){//3跨厚板 - if(zl.equals("1110")){//大组 - sygd.setN3hd(kssj.size()); - sygd.setN3hdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN3hx(kssj.size()); - sygd.setN3hxSj(sj); - } - - } - if (kw.equals("6")){//3跨平铁 - if(zl.equals("1110")){//大组 - sygd.setS3pd(kssj.size()); - sygd.setS3pdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setS3px(kssj.size()); - sygd.setS3pxSj(sj); - } - if(zl.equals("4230")) {//焊接机器人肘板 - sygd.setS3xx(kssj.size()); - sygd.setS3xxSj(sj); - } - - } - if (kw.equals("13")){//3跨曲板 - if(zl.equals("1110")){//大组 - sygd.setN3cd(kssj.size()); - sygd.setN3cdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN3cx(kssj.size()); - sygd.setN3cxSj(sj); - } - } - if (kw.equals("15")){//4跨普通板 - if(zl.equals("1110")){//大组 - sygd.setN4pd(kssj.size()); - sygd.setN4pdSj(sj); - } - if(zl.equals("1010")) {//小组 - sygd.setN4px(kssj.size()); - sygd.setN4pxSj(sj); - } - if(zl.equals("4230")) {//焊接机器人肘板 - sygd.setN4xx(kssj.size()); - sygd.setN4xxSj(sj); - } - - } - if (kw.equals("16")){//7跨型板 - if(zl.equals("1110")){//大组 - //todo 型材米数 -// sygd.setX7xd(kssj.size()); - sygd.setX7xdSj(sj); - } - if(zl.equals("1010")) {//小组 -// sygd.setX7xx(kssj.size()); - sygd.setX7xxSj(sj); - } - } - if(kw.equals("17")) {//光电 - sygd.setN8gx(kssj.size()); - sygd.setN8gxSj(sj); - } - } - //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; + this.saveBatch(list); } /** * 提取线表信息 + * * @param list * @return */ @Override - public List getXBList(List list) { + public List getXBList(List list, String year, String begin, String end) { // //线表 年月 船号 重量 //批量表重量 中日程重量 //明细 按船号 月份 分组 计算重量 排产重量 - //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); + + List xbjhs = xbService.list(new QueryWrapper() + .eq("nf", year) + .ne("zl", 0) + .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())); + .filter(mx -> Objects.nonNull(mx.getJssj())) // group by 的字段不能有null值 + .collect(Collectors.groupingBy(x -> x.getJssj().substring(5, 7) + x.getDcCh())); //4. - xbjhdtoList.forEach(dmXbjh->{ - for (String ch:monthAndCh.keySet()){ + 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.getYf().equals(monthAndCh.get(ch).get(0).getJssj().substring(5, 7))) { + Double shzl = 0.0; + for (DmSygdMx mx : monthAndCh.get(ch)) { + shzl = shzl + (Objects.isNull(mx.getBcshzl()) ? 0.0 : mx.getBcshzl()); } + shzl = Double.valueOf(String.format("%.2f", Objects.isNull(shzl) ? shzl : shzl / 1000.0)); dmXbjh.setTlt_zl(shzl); + dmXbjh.setXczl(Double.valueOf(String.format("%.2f", shzl - dmXbjh.getZl()))); dmXbjh.setMxList(monthAndCh.get(ch)); } } }); - xbjhdtoList=xbjhdtoList.stream() - .filter(xb -> Objects.nonNull(xb.getTlt_zl())) + Map> yf = xbjhdtoList.stream() + .filter(mx -> Objects.nonNull(mx.getDcCh())) // group by 的字段不能有null值 + .collect(Collectors.groupingBy(x -> x.getYf())); + List list1 = new ArrayList<>(); + + for (String month : yf.keySet()) { + Double tlt_zl = 0.0; + Double zl = 0.0; + List y = yf.get(month); + for (Xbjhdto l : y) { + tlt_zl = tlt_zl + l.getTlt_zl(); + zl = zl + l.getZl(); + } + list1.addAll(yf.get(month)); + Xbjhdto xbjhdto = new Xbjhdto(); + xbjhdto.setDcCh("合计"); + xbjhdto.setXczl(Double.valueOf(String.format("%.2f", tlt_zl - zl))); + xbjhdto.setTlt_zl(tlt_zl); + xbjhdto.setZl(zl); + xbjhdto.setYf(month); + xbjhdto.setNf(y.get(0).getNf()); + list1.add(xbjhdto); + } + list1 = list1.stream() .sorted(Comparator.comparing(Xbjhdto::getYf)).collect(Collectors.toList()); - return xbjhdtoList; + return list1; } /** * 提取批量表信息 - * @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); + public List getPl(String begin, String end) { + String beginTime_lj = ljService.getOne(new QueryWrapper() + .select("top 1 xzglxq ") + .inSql("parent_id ", " SELECT dm_sygd_mx.id from dm_sygd_mx WHERE dm_sygd_mx.jssj BETWEEN '" + begin + "' and '" + end + "'") + .orderByAsc("xzglxq")).getXzglxq(); + String endTime_lj = ljService.getOne(new QueryWrapper() + .select("top 1 xzglxq ") + .inSql("parent_id ", " SELECT dm_sygd_mx.id from dm_sygd_mx WHERE dm_sygd_mx.jssj BETWEEN '" + begin + "' and '" + end + "'") + .orderByDesc("xzglxq")).getXzglxq(); + List pldtoList = baseMapper.getPl(beginTime_lj, endTime_lj); + return pldtoList; + } + + /** + * 提取跨位信息 + * + * @param + * @return + */ + @Override + public List getKwList(List list,String begin, String end) { + List kwdtoList = baseMapper.getkw(begin, end); + + kwdtoList.forEach(l -> { + l.setMxList(list.stream().filter( + m -> m.getDcCh().equals(l.getCh()) + && m.getDcPl().equals(l.getPl()) + && (StrUtil.hasEmpty(m.getKw(),l.getKw())?true: m.getKw().equals(l.getKw())) + && m.getJssj().substring(0,7) .equals(l.getYf()) + ).collect(Collectors.toList())); + +// l.setMxList( +// this.list(new QueryWrapper().eq("dc_ch", l.getCh()) +// .eq("dc_pl", l.getPl()) +// .eq(StrUtil.isNotEmpty(l.getKw()),"kw", l.getKw()) +// .eq("substring(dm_sygd_mx.jssj, 0, 8)", l.getYf()) +// .orderByAsc("jssj"))); + }); + return kwdtoList; + } + + public List getKwList_n(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); } - //大组 结束期 - //小组 结束期 } - 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; +// kwdtoList = kwdtoList.stream().sorted(Comparator.comparing(Kwdto::getRq, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + return kwdtoList; } /** * 提取图纸信息 + * * @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); - } + 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()); + 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); - } - } +// 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; } + + /** + * 生成3月滚动计划 + * + * @return + */ + @Transactional + public ResultBean tqSygd() { + //1.查询未来3个月明细信息 + //测试 +// List list=null; + List list = this.list(new QueryWrapper() + .between("gjks", + "2023/08/01", + "2023/08/31") + ); + if (ObjectUtil.isEmpty(list) || list.size() < 1) { + return new ResultBean(null); + } + //根据船号+批量分组 + Map> map = list.stream().collect(Collectors.groupingBy(x -> x.getDcCh() + x.getDcPl())); + List sygdList = new ArrayList<>(); + for (String key : map.keySet()) { + DmSygd sygd = new DmSygd(); + List mxList = map.get(key); + sygd.setDcCh(mxList.get(0).getDcCh()); + sygd.setDcPl(mxList.get(0).getDcPl()); + sygd.setDcFd(mxList.get(0).getDcFd()); + sygd.setTltSl(mxList.size()); + sygd.setSlSl(mxList.size()); + sygd.setPwSl(mxList.size()); + //跨位信息 + Map> kwMap = map.get(key).stream().collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getKw()).orElse("0"))); + for (String kw : kwMap.keySet()) { + //组立信息 + Map> zlMap = kwMap.get(kw).stream().collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getZl()).orElse("0"))); + for (String zl : zlMap.keySet()) { + //跨位、组立下,多张套料图的最开始加工时间,最后加工时间;(上料日期) + List kssj = zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList()); + List jssj = zlMap.get(zl).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq, Comparator.nullsLast(Comparator.naturalOrder())).reversed()).collect(Collectors.toList()); + String sj = kssj.get(0).getSlrq() + " - " + jssj.get(0).getSlrq(); + + if (kw.equals("7")) {//1跨平直大板 + if (zl.equals("1110")) {//大组 + sygd.setN1ad(kssj.size()); + sygd.setN1adSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN1ax(kssj.size()); + sygd.setN1axSj(sj); + } + } + if (kw.equals("8")) {//1跨进线板 + sygd.setN1ld(kssj.size()); + sygd.setN1ldSj(sj); + } + if (kw.equals("5")) {//2跨T型材面板 + if (zl.equals("1110")) {//大组 + sygd.setS2td(kssj.size()); + sygd.setS2tdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setS2tx(kssj.size()); + sygd.setS2txSj(sj); + } + + } + if (kw.equals("9")) {//2跨超长超宽板 + if (zl.equals("1110")) {//大组 + sygd.setN2bd(kssj.size()); + sygd.setN2bdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN2bx(kssj.size()); + sygd.setN2bxSj(sj); + } + } + if (kw.equals("10")) {//2跨超长超宽曲板 + if (zl.equals("1110")) {//大组 + sygd.setN2cd(kssj.size()); + sygd.setN2cdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN2cx(kssj.size()); + sygd.setN2cxSj(sj); + } + } + if (kw.equals("11")) {//2跨T型材腹板 + if (zl.equals("1110")) {//大组 + sygd.setN2td(kssj.size()); + sygd.setN2tdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN2tx(kssj.size()); + sygd.setN2txSj(sj); + } + } + if (kw.equals("12")) {//2跨激光切割板 + if (zl.equals("1110")) {//大组 + sygd.setN2jd(kssj.size()); + sygd.setN2jdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN2jx(kssj.size()); + sygd.setN2jxSj(sj); + } + + } + if (kw.equals("14")) {//3跨厚板 + if (zl.equals("1110")) {//大组 + sygd.setN3hd(kssj.size()); + sygd.setN3hdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN3hx(kssj.size()); + sygd.setN3hxSj(sj); + } + + } + if (kw.equals("6")) {//3跨平铁 + if (zl.equals("1110")) {//大组 + sygd.setS3pd(kssj.size()); + sygd.setS3pdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setS3px(kssj.size()); + sygd.setS3pxSj(sj); + } + if (zl.equals("4230")) {//焊接机器人肘板 + sygd.setS3xx(kssj.size()); + sygd.setS3xxSj(sj); + } + + } + if (kw.equals("13")) {//3跨曲板 + if (zl.equals("1110")) {//大组 + sygd.setN3cd(kssj.size()); + sygd.setN3cdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN3cx(kssj.size()); + sygd.setN3cxSj(sj); + } + } + if (kw.equals("15")) {//4跨普通板 + if (zl.equals("1110")) {//大组 + sygd.setN4pd(kssj.size()); + sygd.setN4pdSj(sj); + } + if (zl.equals("1010")) {//小组 + sygd.setN4px(kssj.size()); + sygd.setN4pxSj(sj); + } + if (zl.equals("4230")) {//焊接机器人肘板 + sygd.setN4xx(kssj.size()); + sygd.setN4xxSj(sj); + } + + } + if (kw.equals("16")) {//7跨型板 + if (zl.equals("1110")) {//大组 + //todo 型材米数 +// sygd.setX7xd(kssj.size()); + sygd.setX7xdSj(sj); + } + if (zl.equals("1010")) {//小组 +// sygd.setX7xx(kssj.size()); + sygd.setX7xxSj(sj); + } + } + if (kw.equals("17")) {//光电 + sygd.setN8gx(kssj.size()); + sygd.setN8gxSj(sj); + } + } + //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); + } } 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 5fa7ac5..41efdc7 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 @@ -28,6 +28,7 @@ public class DmSygdxqServiceImpl extends ServiceImpl i @Transactional public void saveXzList(List list,String username,String day){ list.forEach(l->{ + l.setDcPl(l.getDcPl().length() == 1 ? "00" + l.getDcPl() : l.getDcPl().length() == 2 ? "0" + l.getDcPl() : l.getDcPl()); DmSygdxq sygdxq=this.getOne(new QueryWrapper() .eq("dc_ch",l.getDcCh()) .eq("dc_pl",l.getDcPl()) @@ -76,6 +77,7 @@ public class DmSygdxqServiceImpl extends ServiceImpl i @Transactional public void saveDzList(List list,String username,String day){ list.forEach(l->{ + l.setDcPl(l.getDcPl().length() == 1 ? "00" + l.getDcPl() : l.getDcPl().length() == 2 ? "0" + l.getDcPl() : l.getDcPl()); DmSygdxq sygdxq=this.getOne(new QueryWrapper() .eq("dc_ch",l.getDcCh()) .eq("dc_pl",l.getDcPl()) @@ -104,5 +106,11 @@ public class DmSygdxqServiceImpl extends ServiceImpl i } }); } + + //零件信息 + public void generateLjxx(List list){ + //根据:本次导入的三月需求期 提取BOM 生成三月需求零件信息 + + } } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmYdjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmYdjhServiceImpl.java index 378b55a..f134288 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmYdjhServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmYdjhServiceImpl.java @@ -1,24 +1,27 @@ package com.dsic.gj_erp.service.jhgk.impl; -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.jcsj.EmGcrl; import com.dsic.gj_erp.bean.jhgk.DmQfxq; import com.dsic.gj_erp.bean.jhgk.DmSygdMx; import com.dsic.gj_erp.bean.jhgk.DmYdjh; import com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper; +import com.dsic.gj_erp.service.jcsj.DmBomService; +import com.dsic.gj_erp.service.jcsj.EmGcrlService; import com.dsic.gj_erp.service.jhgk.DmQfxqService; import com.dsic.gj_erp.service.jhgk.DmSygdMxService; import com.dsic.gj_erp.service.jhgk.DmYdjhService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; /** *

- * 服务实现类 + * 服务实现类 *

* * @author xn @@ -27,16 +30,72 @@ import java.util.List; @Service public class DmYdjhServiceImpl extends ServiceImpl implements DmYdjhService { + @Autowired private DmQfxqService qfxqService; + @Autowired private DmSygdMxService sygdMxService; - @Override - public void tjydjh(){ - //根据 前方需求 三月滚动 排产 - //查看前方需求是否已导入 - List qfxqList= qfxqService.list(new QueryWrapper().eq("substring(db,0,8) ", DateUtil.format(DateUtil.nextMonth(),"yyyy/MM"))); + @Autowired + private DmBomService bomService; + @Autowired + private EmGcrlService gcrlService; + + @Override + public List tjydjh() { + //根据 前方需求 三月滚动 排产 + //1.查看下月的前方需求是否已导入 + //2.根据前方需求的 船号、批量,查找三月滚动明细(板) + //3.根据前方需求期,重新为三月滚动明细排产(板),排产后的数据添加到月度计划,并且反写数据到三月滚动明细 +// List qfxqList= qfxqService.list(new QueryWrapper().eq("substring(db,0,8) ", DateUtil.format(DateUtil.nextMonth(),"yyyy/MM"))); + int i = qfxqService.count(new QueryWrapper() + .eq("substring(db,0,8) ", "2023/08")); + if (i < 1) { + System.out.println("下月的前方需求信息未导入!"); + return null; + } + List sygdmx = baseMapper.getSygdmx("2023/08"); + if (sygdmx.size() < 1) { + System.out.println("请导入零件配套表信息!"); + } + + //TODO 重新排产 +// pc(sygdMxList); + + return sygdmx; - sygdMxService.list(new QueryWrapper().eq("","")); } + public void pc(List sygdMxList){ + //根据jssj从后往前排产 + //跨位信息 设备信息 设备产能 工厂日历 + //1.未来工厂日历信息 + List gcrlList= gcrlService.list(new QueryWrapper() + .eq("xxr","1") + .eq("substring(gl,0,8) ","2023/08") + .orderByAsc("gl")); + //2.未来一个月,可用设备() + for (EmGcrl emGcrl : gcrlList) { + //当天,前方需求的板子 + List list= sygdMxList.stream().filter(x->x.getJssj().equals(emGcrl.getGl())).collect(Collectors.toList()); + if (list.size()>260){ + new Exception("前方需求有问题,每天加工的板数不能大于260张!"); + } + //零件加工:坡口 曲面 打磨 + + //切割 + + //划线 + + //上料 + + + + } + + + //3.排产 + + + } + } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java index aa6661e..d58eb57 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmZrcjhServiceImpl.java @@ -29,7 +29,7 @@ import java.util.Map; /** *

- * 服务实现类 + * 服务实现类 *

* * @author xn @@ -44,79 +44,79 @@ public class DmZrcjhServiceImpl extends ServiceImpl impl @Override public List getList(JSONObject json) { - QueryWrapper queryWrapper=new QueryWrapper<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); // if(StringUtils.isNotEmpty(json.getString("dcCh"))){ // queryWrapper.eq("DC_CH",json.getString("dcCh")); // } - if(StringUtils.isNotEmpty(json.getString("gjks"))){ - String time=json.getString("gjks"); - String startTime=time.split("~")[0]; - String endTime=time.split("~")[1]; - queryWrapper.between("gjks",startTime,endTime); + if (StringUtils.isNotEmpty(json.getString("gjks"))) { + String time = json.getString("gjks"); + String startTime = time.split("~")[0]; + String endTime = time.split("~")[1]; + queryWrapper.between("gjks", startTime, endTime); } - if(StringUtils.isNotEmpty(json.getString("Zt"))){ - queryWrapper.eq("zt",json.getString("Zt")); + if (StringUtils.isNotEmpty(json.getString("Zt"))) { + queryWrapper.eq("zt", json.getString("Zt")); } queryWrapper.orderByAsc("DC_CH,cast(DC_PL as int)"); - // queryWrapper.orderByAsc("DC_PL"); - List dmZrcjhs=dmZrcjhMapper.selectList(queryWrapper); + // queryWrapper.orderByAsc("DC_PL"); + List dmZrcjhs = dmZrcjhMapper.selectList(queryWrapper); return dmZrcjhs; } @Override public List upload(MultipartFile file) throws IOException { - List> list= ExcelUtil.readZRCJH(file); - List dmZrcjhs=new ArrayList<>(); + List> list = ExcelUtil.readZRCJH(file); + List dmZrcjhs = new ArrayList<>(); list.forEach(stringObjectMap -> { DmZrcjh dmZrcjh = modelMapper.map(stringObjectMap, DmZrcjh.class); dmZrcjh.setZt("0"); + String pl = dmZrcjh.getDcPl().length() == 1 ? "00" + dmZrcjh.getDcPl() : dmZrcjh.getDcPl().length() == 2 ? "0" + dmZrcjh.getDcPl() : dmZrcjh.getDcPl(); + dmZrcjh.setDcPl(pl); dmZrcjhs.add(dmZrcjh); }); return dmZrcjhs; } @Override - public void save(HttpServletRequest req,List dmZrcjhs) { - String bzr= (String) req.getAttribute("yhms"); - Date date=new Date(); + public void save(HttpServletRequest req, List dmZrcjhs) { + String bzr = (String) req.getAttribute("yhms"); + Date date = new Date(); - List saveDmzrcjhList=new ArrayList<>(); - SimpleDateFormat sdf= new SimpleDateFormat("yyyy/MM/dd"); - String day=sdf.format(date); + List saveDmzrcjhList = new ArrayList<>(); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); + String day = sdf.format(date); dmZrcjhs.forEach(dmZrcjh -> { - QueryWrapper queryWrapper=new QueryWrapper<>(); - queryWrapper.eq("DC_CH",dmZrcjh.getDcCh()); - queryWrapper.eq("DC_PL",dmZrcjh.getDcPl()); - queryWrapper.eq("DC_FD",dmZrcjh.getDcFd()); - DmZrcjh dmZrcjhOne=dmZrcjhMapper.selectOne(queryWrapper); - if (ObjectUtil.isNotEmpty(dmZrcjhOne)){ - String dmZrcjhOneBzr=dmZrcjhOne.getBzr(); - String dmZrcjhOneBzrq=dmZrcjhOne.getBzrq(); - if (dmZrcjhOneBzr.contains(bzr)){ - String[] bzrStr=dmZrcjhOneBzr.split("@"); - String[] bzrqStr=dmZrcjhOneBzrq.split("@"); - boolean append=false; - for (int i=0;i queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("DC_CH", dmZrcjh.getDcCh()); + queryWrapper.eq("DC_PL", dmZrcjh.getDcPl()); + queryWrapper.eq("DC_FD", dmZrcjh.getDcFd()); + DmZrcjh dmZrcjhOne = dmZrcjhMapper.selectOne(queryWrapper); + if (ObjectUtil.isNotEmpty(dmZrcjhOne)) { + String dmZrcjhOneBzr = dmZrcjhOne.getBzr(); + String dmZrcjhOneBzrq = dmZrcjhOne.getBzrq(); + if (dmZrcjhOneBzr.contains(bzr)) { + String[] bzrStr = dmZrcjhOneBzr.split("@"); + String[] bzrqStr = dmZrcjhOneBzrq.split("@"); + boolean append = false; + for (int i = 0; i < bzrqStr.length; i++) { + if (bzrStr[i].equals(bzr) && bzrqStr[i].equals(day)) { + append = true; break; } } - if (!append){ - String appendBzr=(dmZrcjhOneBzr+"@"+bzr); - String appendBzrq=(dmZrcjhOneBzrq+"@"+day); + if (!append) { + String appendBzr = (dmZrcjhOneBzr + "@" + bzr); + String appendBzrq = (dmZrcjhOneBzrq + "@" + day); dmZrcjh.setBzr(appendBzr); dmZrcjh.setBzrq(appendBzrq); updateById(dmZrcjh); } - } - else { - dmZrcjh.setBzr(dmZrcjhOneBzr+"@"+bzr); - dmZrcjh.setBzrq(dmZrcjhOneBzrq+"@"+day); + } else { + dmZrcjh.setBzr(dmZrcjhOneBzr + "@" + bzr); + dmZrcjh.setBzrq(dmZrcjhOneBzrq + "@" + day); updateById(dmZrcjh); } - } - else { + } else { dmZrcjh.setBzr(bzr); dmZrcjh.setBzrq(day); saveDmzrcjhList.add(dmZrcjh); @@ -126,7 +126,7 @@ public class DmZrcjhServiceImpl extends ServiceImpl impl saveBatch(saveDmzrcjhList); List> lists = Lists.partition(saveDmzrcjhList, 300); - for (List list:lists) { + for (List list : lists) { dmZrcjhMapper.updateCzplpNEW(list); } @@ -135,8 +135,8 @@ public class DmZrcjhServiceImpl extends ServiceImpl impl @Override public void tj(List dmZrcjhs) { dmZrcjhs.forEach(dmZrcjh -> { - String zt=dmZrcjh.getZt(); - String setZt=zt.equals("1")?"0":"1"; + String zt = dmZrcjh.getZt(); + String setZt = zt.equals("1") ? "0" : "1"; dmZrcjh.setZt(setZt); }); updateBatchById(dmZrcjhs); diff --git a/src/main/resources/mappers/jhgk/DmSygdMxLjMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxLjMapper.xml new file mode 100644 index 0000000..ab7b2a9 --- /dev/null +++ b/src/main/resources/mappers/jhgk/DmSygdMxLjMapper.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml index 4a32a35..ccafb16 100644 --- a/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml +++ b/src/main/resources/mappers/jhgk/DmSygdMxMapper.xml @@ -3,43 +3,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + UPDATE dm_sygd_mx_lj set dm_sygd_mx_lj.parent_id=dm_sygd_mx.id + from dm_sygd_mx + WHERE + dm_sygd_mx_lj.dcch=dm_sygd_mx.dc_ch and dm_sygd_mx_lj.pl=dm_sygd_mx.dc_pl and dm_sygd_mx_lj.tzbh= iif(dm_sygd_mx_lj.tzbh is null,'',dm_sygd_mx.tzbh ) + and dm_sygd_mx_lj.xzglxq between '2023/08/01' and '2023/10/31' + -- dm_sygd_mx_lj.xzglxq between +-- (SELECT CONVERT(varchar(10),DATEADD(m,1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE())),111) +-- and +-- (Select CONVERT(varchar(10), eomonth(GETDATE(),3), 111)) + + + diff --git a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml index da9f4d3..fdb8f14 100644 --- a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml +++ b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml @@ -4,76 +4,158 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +