From 25e91b2032ce7f7d88c520fbc4b56357c4a34e03 Mon Sep 17 00:00:00 2001 From: xhj Date: Thu, 31 Oct 2024 08:33:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/dsic/gj_erp/bean/jhgk/DmYdjh.java | 2 +- .../controller/pgd/PgdSljhController.java | 194 ++++++++++++++++-- .../jcsj/impl/BomUploadServiceImpl.java | 187 +++++++++++++++++ .../com/dsic/gj_erp/util/ObjConvertUtils.java | 64 ++++++ .../resources/mappers/jhgk/DmYdjhMapper.xml | 24 +-- 5 files changed, 442 insertions(+), 29 deletions(-) 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 03d9e29..aebd99f 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 @@ -240,7 +240,7 @@ public class DmYdjh implements Serializable { private String db; private String cx; private String txc; - private String jhlx="0"; + private String jhlx; private String jssjOld; diff --git a/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java b/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java index 832b005..de3abd2 100644 --- a/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java +++ b/src/main/java/com/dsic/gj_erp/controller/pgd/PgdSljhController.java @@ -164,6 +164,117 @@ public class PgdSljhController { } + + + + @PostMapping("/slPrintD") + @ResponseBody + public ResultBean slPrintD(HttpServletRequest req, @RequestBody List list) throws Exception, CustomException { + //ls_lsh = F_GETPJH("MM",'00',"MSMS") + String id = syService.f_getpjh("MM", "00", "MSMS"); + //dw_1.object.sllsh[ll_ii] = ls_lsh + //dw_1.object.dyry[ll_ii] = gs_user + //dw_1.object.dyrq[ll_ii] = ls_datetime + ListydupList=new ArrayList<>(); + ListckupList=new ArrayList<>(); + + + + + + List qgkws = dm_zhbmpRepository.findByBMLB("QGKW"); + List zylxs = dm_zhbmpRepository.findByBMLB("zylx"); + List pwwzs = dm_zhbmpRepository.findByBMLB("pwwz"); + List dhql = dm_zhbmpRepository.findByBMLB("DHQL"); + List wpzts = dm_zhbmpRepository.findByBMLB("WPZT"); + + Map qgKwMap = qgkws.stream().collect(Collectors.toMap(Dm_zhbmp::getBM, Dm_zhbmp::getBmsm)); + Map zylxMap = zylxs.stream().collect(Collectors.toMap(Dm_zhbmp::getBM, Dm_zhbmp::getBmsm)); + Map pwwzMap = pwwzs.stream().collect(Collectors.toMap(Dm_zhbmp::getBM, Dm_zhbmp::getBmsm)); + Map dhqlMap = dhql.stream().collect(Collectors.toMap(Dm_zhbmp::getBM, Dm_zhbmp::getBmsm)); + Map wpztMap = wpzts.stream().collect(Collectors.toMap(Dm_zhbmp::getBM, Dm_zhbmp::getBmsm)); + Integer sh=1; + for(SlKc slKc: list){ + slKc.setXh(sh); + sh++; + slKc.setZYLX(zylxMap.get(slKc.getZYLX())); + slKc.setSLDW(qgKwMap.get(slKc.getSLDW())); + slKc.setWPZT(wpztMap.get(slKc.getWPZT())); + + } + int ceil = (int) (Math.ceil((double) list.size() / 40)); + List slKcList= new ArrayList<>(); + if(ceil>1){ + for(int i=0;i list) throws Exception, CustomException { + //ls_lsh = F_GETPJH("MM",'00',"MSMS") + // String id = syService.f_getpjh("MM", "00", "MSMS"); + //dw_1.object.sllsh[ll_ii] = ls_lsh + //dw_1.object.dyry[ll_ii] = gs_user + //dw_1.object.dyrq[ll_ii] = ls_datetime + ListydupList=new ArrayList<>(); + ListckupList=new ArrayList<>(); + for(SlKc slKc: list){ + if(StringUtils.isNotBlank(slKc.getSllsh())){ + ImCkwpkwp imCkwpkwp = new ImCkwpkwp(); + imCkwpkwp.setCkh(slKc.getCKH()); + imCkwpkwp.setWph(slKc.getWPH()); + imCkwpkwp.setKwh(slKc.getKWH()); + imCkwpkwp.setNbsbm(slKc.getNBSBM()); + imCkwpkwp.setSllsh(""); + imCkwpkwp.setDyrq(""); + imCkwpkwp.setDyry(""); + ckupList.add(imCkwpkwp); + // slKc.setDyrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); + } + if(StringUtils.isNotBlank(slKc.getYdid())){ + DmYdjh ydjh =new DmYdjh(); + // 库存主键 没存 + ydjh.setId(slKc.getYdid()); + ydjh.setZt("2"); + ydupList.add(ydjh); + } + } + + dmYdjhService.updateBatchById(ydupList); + imCkwpkwpService.updateBatchByMultiId(ckupList); + + + + return new ResultBean(); + + } + + @PostMapping("/getKcAndSljh") @ResponseBody public ResultBean getKcAndSljh(HttpServletRequest req, @RequestBody Map map) throws Exception, CustomException { @@ -695,34 +806,44 @@ public class PgdSljhController { // 1020 数控 if("1010".equals(lqlb)){ if("1110".equals(zl)){ //数中大 - return "1000"; + return "1005"; } - if("1010".equals(zl)){ //数小 - return "1001"; - } if("1020".equals(zl)){ //数中 - return "1002"; + return "1006"; } if("1060".equals(zl)){ //数大 - return "1003"; + return "1007"; } - if("4207".equals(zl)||"1090".equals(zl)){ //数大 - return "1004"; + if("1030".equals(zl)){ //数大 + return "1008"; } + if("1110".equals(zl)){ //数小 + return "1008"; + } + + + + } if("1020".equals(lqlb)){ - if("1110".equals(zl)){ //手中大 - return "1008"; + if("1010".equals(zl)){ //手中大 + return "1001"; } - if("1010".equals(zl)){ //数小 - return "1005"; + if("1020".equals(zl)){ //数小 + return "1002"; } - if("1020".equals(zl)){ //数中 - return "1006"; + if("1060".equals(zl)){ //数中 + return "1003"; } - if("1060".equals(zl)){ //数大 - return "1007"; + if("1090".equals(zl)){ //数大 + return "1004"; + } + if("1030".equals(zl)){ //数大 + return "1000"; + } + if("1110".equals(zl)){ //数大 + return "1000"; } } @@ -730,6 +851,44 @@ public class PgdSljhController { return "1009"; } return ""; + + +// if ls_zl = '4230' then +// dw_1.object.zylx[ll_j] ='1009' //焊接机器人肘板 +// end if +// //手工 +// if ls_lqlb = '1010' then +// choose case ls_zl +// case '1010' //小组 +// dw_1.object.zylx[ll_j] ='1005' //流向手小 +// case '1020' //中组立 +// dw_1.object.zylx[ll_j] ='1006' //流向手中 +// case '1060' //大组立 +// dw_1.object.zylx[ll_j] ='1007' //流向手大 +// case '1030' //大中组立 +// dw_1.object.zylx[ll_j] ='1008' //流向手中大 +// case '1110' //中大组立 +// dw_1.object.zylx[ll_j] ='1008' //流向手中大 +// end choose +// +// elseif ls_lqlb = '1020' then +// //数控 +// choose case ls_zl +// case '1010' //小组 +// dw_1.object.zylx[ll_j] ='1001' //流向数小 +// case '1020' //中组立 +// dw_1.object.zylx[ll_j] ='1002' //流向数中 +// case '1060' //大组立 +// dw_1.object.zylx[ll_j] ='1003' //流向数大 +// case '1090' //外板曲加工 +// dw_1.object.zylx[ll_j] ='1004' //流向数曲 +// case '1030' //大中组立 +// dw_1.object.zylx[ll_j] ='1000' //流向数中大 +// case '1110' //中大组立 +// dw_1.object.zylx[ll_j] ='1000' //流向数中大 +// +// end choose +// end if } @PostMapping("kcAdnSlBd2") @@ -744,6 +903,7 @@ public class PgdSljhController { qw.eq(StrUtil.isNotEmpty((String)map.get("dcch")),"dc_ch",(String)map.get("dcch")); qw.eq(StrUtil.isNotEmpty((String)map.get("dcpl")),"dc_pl",(String)map.get("dcpl")); qw.eq("isnull(ZT,'')","2").eq("isnull(slkcdw,'')",""); + qw.orderBy(true,true,"sljhrq"); List ydjhs = dmYdjhService.list(qw); //库存标识 不等于 01 没有匹配上 @@ -817,6 +977,8 @@ public class PgdSljhController { slKc.setSLDW(dmYdjh.getKw()); } + + slKc.setDHH(dmYdjh.getSljhrq()); //slKc.setPwwz(dmYdjh.getKw()); slKc.setYdid(dmYdjh.getId()); diff --git a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java index 6f583a8..a105dcc 100644 --- a/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jcsj/impl/BomUploadServiceImpl.java @@ -4,18 +4,23 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.io.FileUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.jcsj.*; import com.dsic.gj_erp.bean.jcsj.vo.BomVO; import com.dsic.gj_erp.bean.jhgk.DmTzjh; +import com.dsic.gj_erp.bean.jhgk.DmYdjh; import com.dsic.gj_erp.bean.sy.Dm_zhbmp; import com.dsic.gj_erp.dao.sy.Dm_zhbmpRepository; import com.dsic.gj_erp.exception.CustomException; import com.dsic.gj_erp.mapper.jcsj.DmBchxmxpMapper; import com.dsic.gj_erp.mapper.jcsj.DmBomMapper; +import com.dsic.gj_erp.mapper.jhgk.DmYdjhMapper; import com.dsic.gj_erp.service.jcsj.*; import com.dsic.gj_erp.service.jhgk.DmTzjhService; +import com.dsic.gj_erp.service.jhgk.DmYdjhService; import com.dsic.gj_erp.service.sy.SYService; +import com.dsic.gj_erp.util.ObjConvertUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -73,6 +78,12 @@ public class BomUploadServiceImpl { @Autowired DmBomMapper bomMapper; + @Autowired + DmYdjhMapper dmYdjhMapper; + + @Autowired + DmYdjhService dmYdjhService; + @Transactional(rollbackFor = Exception.class) public synchronized ResultBean uploadZ(MultipartFile[] file, String czbh, String pl, String isupload, HttpServletRequest req,String path) throws IOException, CustomException, ScriptException { String savePath = UUID.randomUUID().toString().replace("-", ""); @@ -922,6 +933,7 @@ public class BomUploadServiceImpl { } // 跨位 String s = kwxxMap.get(tzbh.substring(4, 7)); + if (StringUtils.isBlank(s)) { throw new CustomException(10106, fileName + "跨位信息不存在"); } @@ -1046,6 +1058,14 @@ public class BomUploadServiceImpl { if (addmxs.size() > 0) { bchxmxpService.saveBatch(addmxs); bchxjbpService.saveBatch(adds); + //List dmBchxjbps,Map kwxxMap,Map qgKwMap , HttpServletRequest req + Map bomxzjh = bomxzjh(adds, kwxxMap, qgKwMap, req); + List adds1 = (List) bomxzjh.get("adds"); + List ups = (List) bomxzjh.get("ups"); + dmYdjhService.saveBatch(adds1); + dmYdjhService.updateBatchById(ups); + // 修正 生产计划。 + dmBchxmxpMapper.updateWpgg(czbh, pl); dmBchxmxpMapper.updateWph(czbh, pl); //上传文件到服务器 @@ -1713,4 +1733,171 @@ public class BomUploadServiceImpl { } + // 查询 船号 批量 修正作业计划 + public Map bomxzjh( List dmBchxjbps,Map kwxxMap,Map qgKwMap , HttpServletRequest req){ + String dcch=dmBchxjbps.get(0).getDcCh(); + String dcpl=dmBchxjbps.get(0).getDcPl(); + List ydjhs = dmYdjhService.list(new QueryWrapper().eq("dc_ch", dcch ) + .eq("dc_pl",dcpl) + ); + DmYdjh ydjhMin=null; + Boolean f=true; + if(ydjhs.size()<0){ + f=false; + }else{ + ydjhMin = dmYdjhMapper.getYdjhMin(dcch, dcpl); + } + + List adds =new ArrayList<>(); + List ups =new ArrayList<>(); + List czList = dmCbxxpService.list(); + DmCbxxp dmCzjbb = czList.stream().filter(fst -> fst.getCbbm().equalsIgnoreCase(dcch)).findFirst().orElse(null); + String cjs=""; + if(null!=dmCzjbb){ + cjs=dmCzjbb.getCjs(); + } + String cjs1=cjs; + for(DmBchxjbp dmBchxjbp1:dmBchxjbps ){ + //wpgg ,wpxh + // DmBchxjbp dmBchxjbp = (DmBchxjbp) ObjConvertUtils.checkNullNew(dmBchxjbp1); + DmBchxjbp dmBchxjbp = (DmBchxjbp) ObjConvertUtils.checkNullNew(dmBchxjbp1); + // dmBchxjbp + String wpgg = dmBchxjbp.getWpgg(); + String wpxh = dmBchxjbp.getWpxh(); + String tzbh = dmBchxjbp.getTzbh(); + String hxfl = dmBchxjbp.getHxfl(); + if(StringUtils.isBlank(wpgg)||"hxfl".equals("X")){ + continue; + } + // 根据 材质 规格 去找 生产计划 + DmYdjh dmYdjh = ydjhs.stream() + .filter(fst -> StringUtils.isNotBlank(fst.getWpgg()) + && StringUtils.isNotBlank(fst.getWpxh()) + && fst.getWpgg().equalsIgnoreCase(dmBchxjbp.getWpgg()) + && (fst.getWpxh().equalsIgnoreCase(dmBchxjbp.getWpxh()) + || (cjs1 + fst.getWpxh()).equalsIgnoreCase(dmBchxjbp.getWpxh())) + ) + .findFirst() + .orElse(null); + if(null!=dmYdjh){ + + String hxlx=""; + if (tzbh.substring(4, 5).equals("S")) { + hxlx = "1010"; + } else if (tzbh.substring(4, 5).equals("N")) { + hxlx = "1020"; + } + + dmYdjh.setLqlb(hxlx); + dmYdjh.setTzbh(tzbh); + dmYdjh.setHxcd(dmBchxjbp.getHxcd().doubleValue()); + dmYdjh.setQgcd(dmBchxjbp.getYlzd4().doubleValue()); + dmYdjh.setLjsl(dmBchxjbp.getLjsl().doubleValue()); + dmYdjh.setZl(dmBchxjbp.getDcZl()); + String s = (String) kwxxMap.get(tzbh.substring(4, 7)); + String zzcj = (String) qgKwMap.get(s); //xhj + + dmYdjh.setKw(zzcj); + dmYdjh.setDcFd(dmBchxjbp.getDcFd()); + + if(tzbh.substring(4, 5).equals("X")){ + dmYdjh.setLx("X"); + }else{ + dmYdjh.setLx("B"); + } + + dmYdjh.setBmxgrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd HH:mm")); + dmYdjh.setBmxgry((String) req.getAttribute("yhms")); + if(StringUtils.isNotBlank(dmYdjh.getSlxhth())){ // 说明已经上料 需要修正数据 + // 修正 + + }else{ + // 没上料 规格材质 + dmYdjh.setWpgg(dmBchxjbp.getWpgg()); + dmYdjh.setWpxh(dmBchxjbp.getWpxh()); + } + ydjhs.remove(dmYdjh); // 从列表中移除找到的元素 + ups.add(dmYdjh); + }else{ + + DmYdjh dmYdjhadd =new DmYdjh(); + String hxlx=""; + if (tzbh.substring(4, 5).equals("S")) { + hxlx = "1010"; + } else if (tzbh.substring(4, 5).equals("N")) { + hxlx = "1020"; + } + dmYdjhadd.setDcCh(dmBchxjbp.getDcCh()); + dmYdjhadd.setDcPl(dmBchxjbp.getDcPl()); + if(tzbh.substring(4, 5).equals("X")){ + dmYdjhadd.setLx("X"); + }else{ + dmYdjhadd.setLx("B"); + } + + dmYdjhadd.setWpgg(dmBchxjbp.getWpgg()); + dmYdjhadd.setWpxh(dmBchxjbp.getWpxh()); + dmYdjhadd.setLqlb(hxlx); + dmYdjhadd.setTzbh(tzbh); + dmYdjhadd.setHxcd(dmBchxjbp.getHxcd().doubleValue()); + dmYdjhadd.setQgcd(dmBchxjbp.getYlzd4().doubleValue()); + dmYdjhadd.setLjsl(dmBchxjbp.getLjsl().doubleValue()); + dmYdjhadd.setZl(dmBchxjbp.getDcZl()); + String s = (String) kwxxMap.get(tzbh.substring(4, 7)); + String zzcj = (String) qgKwMap.get(s); //xhj + dmYdjhadd.setKw(zzcj); + dmYdjhadd.setDcFd(dmBchxjbp.getDcFd()); + dmYdjhadd.setZt("2"); + + dmYdjhadd.setId(IdWorker.get32UUID()); + dmYdjhadd.setBmbzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd HH:mm")); + dmYdjhadd.setBmbzry((String) req.getAttribute("yhms")); + + // 新增数据得时候 应该看 是不是有排产数据 有排产数据 给上日期 + if(f){ + dmYdjhadd.setSlrq(ydjhMin.getSlrq()); + dmYdjhadd.setPwrq(ydjhMin.getPwrq()); + dmYdjhadd.setHxrq(ydjhMin.getHxrq()); + dmYdjhadd.setQgrq(ydjhMin.getQgrq()); + dmYdjhadd.setDmrq(ydjhMin.getDmrq()); + dmYdjhadd.setQjgrq(ydjhMin.getQgjhrq()); + dmYdjhadd.setJssj(ydjhMin.getJssj()); + dmYdjhadd.setSljhrq(ydjhMin.getSljhrq()); + dmYdjhadd.setPwjhrq(ydjhMin.getPwjhrq()); + dmYdjhadd.setLljhrq(ydjhMin.getLljhrq()); + dmYdjhadd.setHxjhrq(ydjhMin.getHxjhrq()); + dmYdjhadd.setQgjhrq(ydjhMin.getQgjhrq()); + dmYdjhadd.setJhlx("3"); + }else{ + // 新增 没有 日期 数据 + dmYdjhadd.setJhlx("0"); + dmYdjhadd.setSlrq(""); + dmYdjhadd.setPwrq(""); + dmYdjhadd.setHxrq(""); + dmYdjhadd.setQgrq(""); + dmYdjhadd.setDmrq(""); + dmYdjhadd.setQjgrq(""); + dmYdjhadd.setJssj(""); + dmYdjhadd.setSljhrq(""); + dmYdjhadd.setPwjhrq(""); + dmYdjhadd.setLljhrq(""); + dmYdjhadd.setHxjhrq(""); + dmYdjhadd.setQgjhrq(""); + } +// dmYdjhadd + adds.add(dmYdjhadd); + + } + + } + + + + + Map rMap = new HashMap(); + rMap.put("adds",adds); + rMap.put("ups",ups); + return rMap; + } + } diff --git a/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java b/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java index fa6133f..4663a69 100644 --- a/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java +++ b/src/main/java/com/dsic/gj_erp/util/ObjConvertUtils.java @@ -3,6 +3,8 @@ package com.dsic.gj_erp.util; import org.apache.commons.lang3.StringUtils; import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -70,4 +72,66 @@ public class ObjConvertUtils { return true; } + + public static Object checkNullNew(Object obj) { + Class clazz = obj.getClass(); + // 获取实体类的所有属性,返回Field数组 + Field[] fields = clazz.getDeclaredFields(); + for (Field field : fields) { + // 可访问私有变量 + field.setAccessible(true); + // 获取属性类型 + String type = field.getGenericType().toString(); + + try { + if ("class java.lang.String".equals(type)) { + handleStringField(obj, field); + } else if ("class java.lang.Integer".equals(type)) { + handleIntegerField(obj, field); + } else if ("class java.lang.Double".equals(type)) { + handleDoubleField(obj, field); + } else if ("class java.math.BigDecimal".equals(type)) { + handleBigDecimalField(obj, field); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + return obj; + } + + // 处理String类型 + private static void handleStringField(Object obj, Field field) throws Exception { + String methodName = field.getName().replaceFirst(field.getName().substring(0, 1), + field.getName().substring(0, 1).toUpperCase()); + Method methodGet = obj.getClass().getMethod("get" + methodName); + String str = (String) methodGet.invoke(obj); + if (StringUtils.isBlank(str)) { + field.set(obj, ""); + } + } + + // 处理Integer类型 + private static void handleIntegerField(Object obj, Field field) throws Exception { + Integer value = (Integer) field.get(obj); + if (value == null) { + field.set(obj, 0); + } + } + + // 处理Double类型 + private static void handleDoubleField(Object obj, Field field) throws Exception { + Double value = (Double) field.get(obj); + if (value == null) { + field.set(obj, 0.0); + } + } + + // 处理BigDecimal类型 + private static void handleBigDecimalField(Object obj, Field field) throws Exception { + BigDecimal value = (BigDecimal) field.get(obj); + if (value == null) { + field.set(obj, BigDecimal.ZERO); + } + } } \ No newline at end of file diff --git a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml index c114195..a11cfa3 100644 --- a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml +++ b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml @@ -825,18 +825,18 @@