diff --git a/src/main/java/com/dsic/gj_erp/bean/fd/DmCzfddyb.java b/src/main/java/com/dsic/gj_erp/bean/fd/DmCzfddyb.java new file mode 100644 index 0000000..12c3fd6 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/fd/DmCzfddyb.java @@ -0,0 +1,45 @@ +package com.dsic.gj_erp.bean.fd; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class DmCzfddyb { + private String czbh;//船只编号 + + private String fdh;//分段号 + + private String qy;//所属区域 + + private Integer frow;//行 + + private Integer fcol;//列 + + private String zydw;//作业单位 + + private String zycj;//作业车间 + + private String stjhrq;//上胎计划期 + + private String zzjhrq;//总组计划期 + + private String dzjhrq;//大组计划期 + + private String xzjhrq;//小组计划期 + + private String kgrq;//开工日期 + + private String wgrq;//完工日期 + + private Integer tpzs;//托盘总数 + + private String zt;//"状态" + + private String bz;//备注 + + @TableId(value = "id", type = IdType.ASSIGN_UUID) + private String id; +} diff --git a/src/main/java/com/dsic/gj_erp/bean/fd/DmXqdwcjcd.java b/src/main/java/com/dsic/gj_erp/bean/fd/DmXqdwcjcd.java new file mode 100644 index 0000000..c202ea9 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/fd/DmXqdwcjcd.java @@ -0,0 +1,31 @@ +package com.dsic.gj_erp.bean.fd; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +@Getter +@Setter +public class DmXqdwcjcd implements Serializable { + private static final long serialVersionUID=1L; + private String cdmc; + + private String dwbm; + + private String bz; + + private String dh; + + @TableId(value = "cdid", type = IdType.ASSIGN_UUID) + private String cdid; + + private String cdlx; + + private String cjmc; + + private String fzry; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/fd/ExcelExport.java b/src/main/java/com/dsic/gj_erp/bean/fd/ExcelExport.java new file mode 100644 index 0000000..e24a075 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/fd/ExcelExport.java @@ -0,0 +1,253 @@ +package com.dsic.gj_erp.bean.fd; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class ExcelExport { + @ExcelProperty(index = 0) + private String column000; + @ExcelProperty(index = 1) + private String column001; + @ExcelProperty(index = 2) + private String column002; + @ExcelProperty(index = 3) + private String column003; + @ExcelProperty(index = 4) + private String column004; + @ExcelProperty(index = 5) + private String column005; + @ExcelProperty(index = 6) + private String column006; + @ExcelProperty(index = 7) + private String column007; + @ExcelProperty(index = 8) + private String column008; + @ExcelProperty(index = 9) + private String column009; + @ExcelProperty(index = 10) + private String column010; + @ExcelProperty(index = 11) + private String column011; + @ExcelProperty(index = 12) + private String column012; + @ExcelProperty(index = 13) + private String column013; + @ExcelProperty(index = 14) + private String column014; + @ExcelProperty(index = 15) + private String column015; + @ExcelProperty(index = 16) + private String column016; + @ExcelProperty(index = 17) + private String column017; + @ExcelProperty(index = 18) + private String column018; + @ExcelProperty(index = 19) + private String column019; + @ExcelProperty(index = 20) + private String column020; + @ExcelProperty(index = 21) + private String column021; + @ExcelProperty(index = 22) + private String column022; + @ExcelProperty(index = 23) + private String column023; + @ExcelProperty(index = 24) + private String column024; + @ExcelProperty(index = 25) + private String column025; + @ExcelProperty(index = 26) + private String column026; + @ExcelProperty(index = 27) + private String column027; + @ExcelProperty(index = 28) + private String column028; + @ExcelProperty(index = 29) + private String column029; + @ExcelProperty(index = 30) + private String column030; + @ExcelProperty(index = 31) + private String column031; + @ExcelProperty(index = 32) + private String column032; + @ExcelProperty(index = 33) + private String column033; + @ExcelProperty(index = 34) + private String column034; + @ExcelProperty(index = 35) + private String column035; + @ExcelProperty(index = 36) + private String column036; + @ExcelProperty(index = 37) + private String column037; + @ExcelProperty(index = 38) + private String column038; + @ExcelProperty(index = 39) + private String column039; + @ExcelProperty(index = 40) + private String column040; + @ExcelProperty(index = 41) + private String column041; + @ExcelProperty(index = 42) + private String column042; + @ExcelProperty(index = 43) + private String column043; + @ExcelProperty(index = 44) + private String column044; + @ExcelProperty(index = 45) + private String column045; + @ExcelProperty(index = 46) + private String column046; + @ExcelProperty(index = 47) + private String column047; + @ExcelProperty(index = 48) + private String column048; + @ExcelProperty(index = 49) + private String column049; + @ExcelProperty(index = 50) + private String column050; + @ExcelProperty(index = 51) + private String column051; + @ExcelProperty(index = 52) + private String column052; + @ExcelProperty(index = 53) + private String column053; + @ExcelProperty(index = 54) + private String column054; + @ExcelProperty(index = 55) + private String column055; + @ExcelProperty(index = 56) + private String column056; + @ExcelProperty(index = 57) + private String column057; + @ExcelProperty(index = 58) + private String column058; + @ExcelProperty(index = 59) + private String column059; + @ExcelProperty(index = 60) + private String column060; + @ExcelProperty(index = 61) + private String column061; + @ExcelProperty(index = 62) + private String column062; + @ExcelProperty(index = 63) + private String column063; + @ExcelProperty(index = 64) + private String column064; + @ExcelProperty(index = 65) + private String column065; + @ExcelProperty(index = 66) + private String column066; + @ExcelProperty(index = 67) + private String column067; + @ExcelProperty(index = 68) + private String column068; + @ExcelProperty(index = 69) + private String column069; + @ExcelProperty(index = 70) + private String column070; + @ExcelProperty(index = 71) + private String column071; + @ExcelProperty(index = 72) + private String column072; + @ExcelProperty(index = 73) + private String column073; + @ExcelProperty(index = 74) + private String column074; + @ExcelProperty(index = 75) + private String column075; + @ExcelProperty(index = 76) + private String column076; + @ExcelProperty(index = 77) + private String column077; + @ExcelProperty(index = 78) + private String column078; + @ExcelProperty(index = 79) + private String column079; + @ExcelProperty(index = 80) + private String column080; + @ExcelProperty(index = 81) + private String column081; + @ExcelProperty(index = 82) + private String column082; + @ExcelProperty(index = 83) + private String column083; + @ExcelProperty(index = 84) + private String column084; + @ExcelProperty(index = 85) + private String column085; + @ExcelProperty(index = 86) + private String column086; + @ExcelProperty(index = 87) + private String column087; + @ExcelProperty(index = 88) + private String column088; + @ExcelProperty(index = 89) + private String column089; + @ExcelProperty(index = 90) + private String column090; + @ExcelProperty(index = 91) + private String column091; + @ExcelProperty(index = 92) + private String column092; + @ExcelProperty(index = 93) + private String column093; + @ExcelProperty(index = 94) + private String column094; + @ExcelProperty(index = 95) + private String column095; + @ExcelProperty(index = 96) + private String column096; + @ExcelProperty(index = 97) + private String column097; + @ExcelProperty(index = 98) + private String column098; + @ExcelProperty(index = 99) + private String column099; + @ExcelProperty(index = 100) + private String column100; + @ExcelProperty(index = 101) + private String column101; + @ExcelProperty(index = 102) + private String column102; + @ExcelProperty(index = 103) + private String column103; + @ExcelProperty(index = 104) + private String column104; + @ExcelProperty(index = 105) + private String column105; + @ExcelProperty(index = 106) + private String column106; + @ExcelProperty(index = 107) + private String column107; + @ExcelProperty(index = 108) + private String column108; + @ExcelProperty(index = 109) + private String column109; + @ExcelProperty(index = 110) + private String column110; + @ExcelProperty(index = 111) + private String column111; + @ExcelProperty(index = 112) + private String column112; + @ExcelProperty(index = 113) + private String column113; + @ExcelProperty(index = 114) + private String column114; + @ExcelProperty(index = 115) + private String column115; + @ExcelProperty(index = 116) + private String column116; + @ExcelProperty(index = 117) + private String column117; + @ExcelProperty(index = 118) + private String column118; + @ExcelProperty(index = 119) + private String column119; + @ExcelProperty(index = 120) + private String column120; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/fd/FdBean.java b/src/main/java/com/dsic/gj_erp/bean/fd/FdBean.java new file mode 100644 index 0000000..1113040 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/fd/FdBean.java @@ -0,0 +1,12 @@ +package com.dsic.gj_erp.bean.fd; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class FdBean { + private String fdh; + private String color; + private String tplx; +} diff --git a/src/main/java/com/dsic/gj_erp/bean/fd/TppsQk.java b/src/main/java/com/dsic/gj_erp/bean/fd/TppsQk.java new file mode 100644 index 0000000..da7080e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/fd/TppsQk.java @@ -0,0 +1,37 @@ +package com.dsic.gj_erp.bean.fd; + +import lombok.Getter; +import lombok.Setter; + +import java.math.BigDecimal; + +@Getter +@Setter +public class TppsQk { + private String czbh; + private String fdh; + private String tpbh; + private String tplx; + private BigDecimal xqsl; + private BigDecimal pssl; + private BigDecimal psbfb; + private String ygpprq; + private String fkpprq; + private String yjtgq; + private String jhxqrq; + private String qfpsrq; + private String qfpsrq1; + private String qfxqrq; + private String sjpsrq;// 实际配送期 + private String sjpsrqmin; + private String sjpsrqmax; + private String minjprkrq; // 集配入库日期 + private String maxjprkrq; + private String fdxqrq;//分段需求日期 + private String zyzzcjmc;//作业车间及场地 + private String zyzzssbm; + private BigDecimal pssl0; + private BigDecimal pssl5; + private BigDecimal pssl10; + private BigDecimal pssl15; +} diff --git a/src/main/java/com/dsic/gj_erp/bean/sy/SyDzbmp.java b/src/main/java/com/dsic/gj_erp/bean/sy/SyDzbmp.java new file mode 100644 index 0000000..892b55b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/sy/SyDzbmp.java @@ -0,0 +1,47 @@ +package com.dsic.gj_erp.bean.sy; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +@Getter +@Setter +@TableName("SY_DZBMP") +public class SyDzbmp implements Serializable { + private static final long serialVersionUID=1L; + + @TableField("YLZD2") + private String ylzd2; + + @TableId(value = "BM", type = IdType.ASSIGN_UUID) + private String bm; + + @TableField("YLZD5") + private Double ylzd5; + + @TableField("BMMS") + private String bmms; + + @TableField("BML") + private String bml; + + @TableField("YLZD6") + private Double ylzd6; + + @TableField("YLZD3") + private String ylzd3; + + @TableField("LMS") + private String lms; + + @TableField("YLZD4") + private Double ylzd4; + + @TableField("YLZD1") + private String ylzd1; +} diff --git a/src/main/java/com/dsic/gj_erp/controller/fd/DmCzfddybController.java b/src/main/java/com/dsic/gj_erp/controller/fd/DmCzfddybController.java new file mode 100644 index 0000000..3ee4e9f --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/fd/DmCzfddybController.java @@ -0,0 +1,65 @@ +package com.dsic.gj_erp.controller.fd; + +import com.alibaba.excel.EasyExcel; +import com.dsic.gj_erp.bean.ResultBean; +import com.dsic.gj_erp.bean.fd.ExcelExport; +import com.dsic.gj_erp.exception.CustomException; +import com.dsic.gj_erp.listeners.ExcelFdListener; +import com.dsic.gj_erp.service.fd.DmCzfddybService; +import io.swagger.annotations.Authorization; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletRequest; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/api/dmCzfddyb") +@AllArgsConstructor +public class DmCzfddybController { + private final DmCzfddybService dmCzfddybService; + + @PostMapping("/upload") + @Authorization("") + @ResponseBody + public ResultBean upload(@RequestParam("file") MultipartFile file , String czbh, String isupload, HttpServletRequest req) throws Exception, CustomException { + ExcelFdListener objectListener = new ExcelFdListener(); + EasyExcel.read(file.getInputStream(), ExcelExport.class, objectListener).sheet(0).headRowNumber(0).doRead(); + List objList = objectListener.getObjectList(); + Map map = dmCzfddybService.uploadFd(req, objList, czbh,isupload); + return new ResultBean(map); + } + + @PostMapping("/getCzFdBase") + @Authorization("") + public ResultBean getCzFdBase( HttpServletRequest req,@RequestBody Map map) { + + Map rmap = dmCzfddybService.getCzFdBase(req,map); + return new ResultBean(rmap); + } + @PostMapping("/getList") + @Authorization("") + public ResultBean getList( HttpServletRequest req,@RequestBody Map map) throws Exception { + + Map rmap = dmCzfddybService.getList(map); + return new ResultBean(rmap); + } + + @PostMapping("/getTpBase") + @Authorization("") + public ResultBean getTpBase( HttpServletRequest req,@RequestBody Map map) throws Exception { + + Map rmap = dmCzfddybService.getTpBase(req,map); + return new ResultBean(rmap); + } + @PostMapping("/getListFdMx") + @Authorization("") + public ResultBean getListFdMx( HttpServletRequest req,@RequestBody Map map) throws Exception { + + Map rmap = dmCzfddybService.getListFdMx(map); + return new ResultBean(rmap); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/listeners/ExcelFdListener.java b/src/main/java/com/dsic/gj_erp/listeners/ExcelFdListener.java new file mode 100644 index 0000000..6d57600 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/listeners/ExcelFdListener.java @@ -0,0 +1,103 @@ +package com.dsic.gj_erp.listeners; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.dsic.gj_erp.bean.fd.ExcelExport; +import com.dsic.gj_erp.util.ObjConvertUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +public class ExcelFdListener extends AnalysisEventListener { + private static final int BATCH_COUNT = 5; + + List objectList = new ArrayList<>(); + List headList = new ArrayList<>(); + private String sheetName; + + List datas = new ArrayList(); + + @Override + public void invoke(ExcelExport excelDemo, AnalysisContext analysisContext) { + //每解析一行数据,就会调用该方法一次 + //正常在这里调用数据处理得办法 + + //一条数据添加到暂时存储的存储结构中 + + boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo); + if(!b){ + datas.add(excelDemo); + } + + + + + + + // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM + if (datas.size() >= BATCH_COUNT) { + saveData(); + // 存储完成清理 list + datas.clear(); + } + } + + + + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + //获取sheetName + saveData(); + sheetName = context.readSheetHolder().getSheetName(); +// LOGGER.info("所有数据解析完成!"); + } + + //获取表头 + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + //把表头数据加入到存储结构中 + headList.add(headMap); + } + + /** + * 入库 + */ + private void saveData() { + //添加到返回的存储结构中,也可直接存储到数据库 + objectList.addAll(datas); + } + + public List getDatas() { + return datas; + } + + public void setDatas(List datas) { + this.datas = datas; + } + + public List getObjectList() { + return objectList; + } + + public void setObjectList(List objectList) { + this.objectList = objectList; + } + + public String getSheetName() { + return sheetName; + } + + public void setSheetName(String sheetName) { + this.sheetName = sheetName; + } + + public List getHeadList() { + return headList; + } + + public void setHeadList(List headList) { + this.headList = headList; + } +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/fd/DmCzfddybMapper.java b/src/main/java/com/dsic/gj_erp/mapper/fd/DmCzfddybMapper.java new file mode 100644 index 0000000..2f69150 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/fd/DmCzfddybMapper.java @@ -0,0 +1,7 @@ +package com.dsic.gj_erp.mapper.fd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.fd.DmCzfddyb; + +public interface DmCzfddybMapper extends BaseMapper { +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/fd/DmXqdwcjcdMapper.java b/src/main/java/com/dsic/gj_erp/mapper/fd/DmXqdwcjcdMapper.java new file mode 100644 index 0000000..8f0599e --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/fd/DmXqdwcjcdMapper.java @@ -0,0 +1,7 @@ +package com.dsic.gj_erp.mapper.fd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.fd.DmXqdwcjcd; + +public interface DmXqdwcjcdMapper extends BaseMapper { +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/fd/TpbMapper.java b/src/main/java/com/dsic/gj_erp/mapper/fd/TpbMapper.java new file mode 100644 index 0000000..edb0f3d --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/fd/TpbMapper.java @@ -0,0 +1,13 @@ +package com.dsic.gj_erp.mapper.fd; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.fd.DmCzfddyb; +import com.dsic.gj_erp.bean.fd.TppsQk; + +import java.util.List; +import java.util.Map; + +public interface TpbMapper extends BaseMapper { + List findTPxqjh(Map map); + List findTppsQk(Map map); +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/sy/SyDzbmpMapper.java b/src/main/java/com/dsic/gj_erp/mapper/sy/SyDzbmpMapper.java new file mode 100644 index 0000000..ca6c4bd --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/mapper/sy/SyDzbmpMapper.java @@ -0,0 +1,7 @@ +package com.dsic.gj_erp.mapper.sy; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.dsic.gj_erp.bean.sy.SyDzbmp; + +public interface SyDzbmpMapper extends BaseMapper { +} diff --git a/src/main/java/com/dsic/gj_erp/service/fd/DmCzfddybService.java b/src/main/java/com/dsic/gj_erp/service/fd/DmCzfddybService.java new file mode 100644 index 0000000..b142cc2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/fd/DmCzfddybService.java @@ -0,0 +1,259 @@ +package com.dsic.gj_erp.service.fd; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.fd.*; +import com.dsic.gj_erp.bean.jcsj.DmCbxxp; +import com.dsic.gj_erp.bean.sy.SyDictItem; +import com.dsic.gj_erp.bean.sy.SyDzbmp; +import com.dsic.gj_erp.mapper.fd.DmCzfddybMapper; +import com.dsic.gj_erp.service.jcsj.DmCbxxpService; +import com.dsic.gj_erp.service.sy.SyDictItemService; +import com.dsic.gj_erp.service.sy.impl.SyDzbmpService; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import javax.servlet.http.HttpServletRequest; +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +@AllArgsConstructor +public class DmCzfddybService extends ServiceImpl { + + + private final SyDictItemService syDictItemService; + private final TpImpl tpImpl; + private final DmCbxxpService czjbbService; + private final DmXqdwcjcdService dmXqdwcjcdService; + private final SyDzbmpService syDzbmpService; + + @Transactional(rollbackFor = Exception.class) + public Map uploadFd(HttpServletRequest httpRequest, List excelList, String czbh, String isupload) throws Exception { + Map rMap = new HashMap(); + czbh=czbh+"#"; + if ("01".equals(isupload)) { + // 查询是否 有值 + List czbh1 = this.list(new QueryWrapper().eq("czbh", czbh)); + if (czbh1.size() > 0) { + rMap.put("zt", "01"); + return rMap; + } + } + this.remove(new QueryWrapper().eq("CZBH", czbh)); + List addList = new ArrayList<>(); + int row = 0; + for (int i = 0; i < excelList.size(); i++) { + ExcelExport e = excelList.get(i); + Class cls = e.getClass(); + Field[] fields = cls.getDeclaredFields(); + for (int j = 0; j < fields.length; j++) { + String fdh = ""; + int col; + Field f = fields[j]; + f.setAccessible(true); + try { + fdh = (String) f.get(e); + } catch (IllegalAccessException ex) { + throw new RuntimeException(ex); + } + if (StringUtils.isNotBlank(fdh)) { + DmCzfddyb czfddyb = new DmCzfddyb(); + czfddyb.setCzbh(czbh); + czfddyb.setFdh(fdh); + czfddyb.setFrow(i); + String colName = f.getName(); + col = Integer.parseInt(colName.substring(colName.length() - 3)); + czfddyb.setFcol(col); + addList.add(czfddyb); + } + //System.out.println("属性名:" + f.getName() + " 属性值:" + ); + } + } + this.saveBatch(addList); + return rMap; + } + + + public Map getCzFdBase(HttpServletRequest req, Map map) { + Map rMap = new HashMap(); + String bmbm = (String)req.getAttribute("bmbm"); + List czbhs; + if(StringUtils.isNotBlank(bmbm)&& bmbm.length()>2){ + + czbhs = czjbbService.list(new QueryWrapper() + .select("replace(czbh,'#','') AS czbh") + .in("yzbs", "N", "H").ne("isnull(czjc,'')", "") + .ne("isnull(wgbs,'N')","Y").eq(" isnull(cims_bs,'')","Y"). + eq("left(gcqy,1)","0"). + orderBy(true, true, "wgbs", "left(czbh,charindex('-',czbh)-1)", "len(czbh)", "czbh" + )); + }else{ + czbhs = czjbbService.list(new QueryWrapper() + .select("replace(czbh,'#','') AS czbh") + .in("yzbs", "N", "H").ne("isnull(czjc,'')", ""). + orderBy(true, true, "wgbs", "left(czbh,charindex('-',czbh)-1)", "len(czbh)", "czbh" + )); + } + + // 只显示海工名船 简称不等于空 + rMap.put("czbhs", czbhs); + + + return rMap; + } + + public Map getList(Map map) throws Exception { + Map returnMap = new HashMap(); + List returnList = new ArrayList<>(); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("CZBH", map.get("czbh")+"#"); + List list = this.list(queryWrapper); + queryWrapper.select("max(frow) as frow ", "max(fcol)as fcol"); + DmCzfddyb one = (DmCzfddyb) this.getOne(queryWrapper); + if (one != null) { + int row = one.getFrow(); + int col = one.getFcol(); + for (int i = 0; i <= row; i++) { + ExcelExport excelExport = new ExcelExport(); + int tempi = i; + List collect = list.stream().filter(fst -> fst.getFrow() == tempi).collect(Collectors.toList()); + for (int y = 0; y <= col; y++) { + int tempy = y; + DmCzfddyb czfddyb = collect.stream().filter(fst -> fst.getFcol() == tempy).findFirst().orElse(null); + if (null != czfddyb) { + PropertyDescriptor propertyDescriptor = new PropertyDescriptor("column" + String.format("%03d", czfddyb.getFcol()), excelExport.getClass()); + Method setMethod = propertyDescriptor.getWriteMethod(); + // 调用指定对象set方法 + setMethod.invoke(excelExport, czfddyb.getFdh()); + // System.out.println(object.getName());// 输出Jack Chen + } + } + returnList.add(excelExport); + } + returnMap.put("data", returnList); + returnMap.put("col", col); + } + return returnMap; + } + + public Map getTpBase( HttpServletRequest req,Map map) throws Exception { + Map rMap = new HashMap(); + String bmbm = (String)req.getAttribute("bmbm"); + List czbhs; + Listcdmcs; + Listcjmcs; + if(StringUtils.isNotBlank(bmbm)&& bmbm.length()>2){ + + czbhs = czjbbService.list(new QueryWrapper() + .select("replace(czbh,'#','') AS czbh") + .in("yzbs", "N", "H").ne("isnull(czjc,'')", "") + .ne("isnull(wgbs,'N')","Y").eq(" isnull(cims_bs,'')","Y"). + eq("left(gcqy,1)","0"). + orderBy(true, true, "wgbs", "left(czbh,charindex('-',czbh)-1)", "len(czbh)", "czbh" + )); + cdmcs=dmXqdwcjcdService.list(new QueryWrapper().eq("dwbm","P30000").orderBy(true,true,"cdmc")); + cjmcs=dmXqdwcjcdService.list(new QueryWrapper().select("DISTINCT cjmc as cjmc").eq("dwbm","P30000").orderBy(true,true,"cjmc")); + }else{ + czbhs = czjbbService.list(new QueryWrapper() + .select("replace(czbh,'#','') AS czbh") + .in("yzbs", "N", "H").ne("isnull(czjc,'')", ""). + orderBy(true, true, "wgbs", "left(czbh,charindex('-',czbh)-1)", "len(czbh)", "czbh" + )); + cdmcs=dmXqdwcjcdService.list(); + cjmcs=dmXqdwcjcdService.list(new QueryWrapper().select("DISTINCT cjmc as cjmc")); + } + + //作业阶段 + List zyjds = syDzbmpService.list(new QueryWrapper().eq("bml", "ZYJD")); + //部件类别 + List bjlbs = syDictItemService.list(new QueryWrapper().eq("bmlb", "TPLX")); +// List xqdws = mpZzdwjbbMapper.findxqdwAll(); + List bmbms = syDictItemService.list(new QueryWrapper().eq("bmlb", "bmbm").in("bm","01","02","03","04")); + rMap.put("czbhs", czbhs); + rMap.put("zyjds", zyjds); + rMap.put("bjlbs", bjlbs); +// rMap.put("xqdws", xqdws); + rMap.put("bmbms", bmbms); + rMap.put("cdmcs", cdmcs); + rMap.put("cjmcs", cjmcs); + return rMap; + } + + public Map getListFdMx(Map map) throws Exception { +// Map returnMap = new HashMap(); + Map returnMap = this.getList(map); + + List tppsQks = tpImpl.findTppsQk(map); + + Map> collect = tppsQks.stream().collect( + Collectors.groupingBy( + score -> score.getFdh()+'-'+score.getTplx() + )); + List fdBeans=new ArrayList<>(); + for(Map.Entry> entry : collect.entrySet()){ + FdBean fdBean=new FdBean(); + String mapKey = entry.getKey(); + String color=""; + String[] parts = mapKey.split("-"); + String fdh=parts[0]; + String tplx=parts[1]; +// if(a.compareTo(b) < 1){ +// System.out.println("a小于等于b"); +// } + + BigDecimal xqslSum=entry.getValue().stream().map(s-> s.getXqsl()).reduce(BigDecimal.ZERO,BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP); + BigDecimal psslSum=entry.getValue().stream().map(s-> s.getPssl()).reduce(BigDecimal.ZERO,BigDecimal::add).setScale(2, BigDecimal.ROUND_HALF_UP); + List rqList=entry.getValue(); + boolean flag=false; +// if(fdh.equals("ZL04")){ +// rqList.get(0).setQfxqrq("2022/04/13"); +// } + for(TppsQk q :rqList){ + if(StringUtils.isNotBlank(q.getQfxqrq())){ + flag=true; + } + } + if(xqslSum.compareTo(BigDecimal.ZERO)==0 ){ + + }else{ + BigDecimal result =psslSum.divide(xqslSum,2,BigDecimal.ROUND_HALF_UP); + System.out.println("result = " + result +"xqsl"+xqslSum +"pssl"+psslSum+"fhd"+fdh); + + if(result.compareTo(new BigDecimal("0.9"))> -1 ){ // result > =0.9 + if("0201".equals(tplx)){ + color="green"; + } + }else if (result.compareTo(new BigDecimal("0.5"))>-1 && result.compareTo(new BigDecimal("0.9"))<1 ) { + if("0201".equals(tplx)){ + color="yellow"; + } + }else if( result.compareTo(new BigDecimal("0.5"))<1 && flag ){ + if("0201".equals(tplx)){ + color="red"; + } + } + System.out.println("result = " + result +"xqsl"+xqslSum +"pssl"+psslSum+"fhd"+fdh+"COLOR"+color); + } + fdBean.setFdh(fdh); + + fdBean.setTplx(tplx); + + fdBean.setColor(color); + + fdBeans.add(fdBean); + } + returnMap.put("fd", fdBeans); + returnMap.put("fdqk", tppsQks); + return returnMap; + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/fd/DmXqdwcjcdService.java b/src/main/java/com/dsic/gj_erp/service/fd/DmXqdwcjcdService.java new file mode 100644 index 0000000..08b5623 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/fd/DmXqdwcjcdService.java @@ -0,0 +1,10 @@ +package com.dsic.gj_erp.service.fd; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.fd.DmXqdwcjcd; +import com.dsic.gj_erp.mapper.fd.DmXqdwcjcdMapper; +import org.springframework.stereotype.Service; + +@Service +public class DmXqdwcjcdService extends ServiceImpl { +} diff --git a/src/main/java/com/dsic/gj_erp/service/fd/TpImpl.java b/src/main/java/com/dsic/gj_erp/service/fd/TpImpl.java new file mode 100644 index 0000000..de04232 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/fd/TpImpl.java @@ -0,0 +1,104 @@ +package com.dsic.gj_erp.service.fd; + +import cn.hutool.core.date.DateUtil; +import com.dsic.gj_erp.bean.fd.TppsQk; +import com.dsic.gj_erp.mapper.fd.TpbMapper; +import com.dsic.gj_erp.util.MyString; +import lombok.AllArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; +import java.util.Map; + +@Service +@AllArgsConstructor +public class TpImpl { + private final TpbMapper tpbMapper; + + public List findTPxqjh(Map map) { + List tPxqjhs = tpbMapper.findTPxqjh(map); + //需求反馈预估天数差xqtsc + // 有反馈用反馈 没有用预估 + for(Map map1:tPxqjhs){ + String one = ""; + String two = ""; + String fkpprq =(String)map1.get("fkpprq"); //反馈配送期 + String ygpprq =(String)map1.get("ygpprq"); //预计配送期 + if(StringUtils.isNotBlank(fkpprq)){ + one=fkpprq; + }else if(StringUtils.isNotBlank(ygpprq)){ + one=ygpprq; + String qfxqrq =(String)map1.get("qfxqrq"); // 前方实际需求 + String jhxqrq =(String)map1.get("jhxqrq"); //集团三月滚动计划期 + String fdxqrq =(String)map1.get("fdxqrq"); //分段计划需求期 + if(StringUtils.isNotBlank(qfxqrq)){ + two=qfxqrq; + }else if (StringUtils.isNotBlank(fdxqrq)){ + two=fdxqrq; + }else{ + two=jhxqrq; + } + // 日期相检查 + Date oneDate = DateUtil.parse(one); + Date twoDate = DateUtil.parse(two); +// long betweenDay = DateUtil.between(twoDate, oneDate, DateUnit.DAY); + long betweenDay= MyString.differentDays(oneDate,twoDate); + map1.put("xqtsc",betweenDay); + }else{ + map1.put("xqtsc",""); + } + + } + + return tPxqjhs; + } + + public List findTppsQk(Map map) { + List tppsQks = tpbMapper.findTppsQk(map); + for (TppsQk t : tppsQks) { +// if(t.getPssl().compareTo(new BigDecimal("100"))==0){ +// if(StringUtils.isNotBlank(t.getps)) +// +// }else + //最小值 不为空 不用显示了 + + if (StringUtils.isNotBlank(t.getQfpsrq())) { + // t.setYjtgq(t.getQfpsrq1()); + + //最小的不爲空 用最大的 jprkrq + + } else if (StringUtils.isNotBlank(t.getMinjprkrq())){ + + Date date = DateUtil.parse(t.getMaxjprkrq()); + + t.setYgpprq(DateUtil.format( DateUtil.offsetDay(date, 2), "yyyy/MM/dd")); + //System.out.println("date = " + t.getMaxjprkrq()+"111"+t.getYgpprq()); + + } else if (StringUtils.isNotBlank(t.getFkpprq())) { //反馈配送 + t.setYjtgq(t.getFkpprq()); + } else if (StringUtils.isNotBlank(t.getYgpprq())) { + t.setYjtgq(t.getYgpprq()); + } else { + t.setYjtgq(""); + } + if ("9999/99/99".equals(t.getSjpsrqmax())) { + t.setSjpsrqmax(""); + } + + if(t.getXqsl().compareTo(t.getPssl())==0){ + + }else{ + t.setPssl0(((t.getPssl().add(t.getPssl0())).divide(t.getXqsl(), BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.0"))).setScale(2, BigDecimal.ROUND_HALF_UP) ); + t.setPssl5(((t.getPssl().add(t.getPssl5())).divide(t.getXqsl(),BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.0"))).setScale(2, BigDecimal.ROUND_HALF_UP) ); + t.setPssl10(((t.getPssl().add(t.getPssl10())).divide(t.getXqsl(),BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.0"))).setScale(2, BigDecimal.ROUND_HALF_UP) ); + t.setPssl15(((t.getPssl().add(t.getPssl15())).divide(t.getXqsl(),BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal("100.0"))).setScale(2, BigDecimal.ROUND_HALF_UP) ); + } + + + } + return tppsQks; + } +} diff --git a/src/main/java/com/dsic/gj_erp/service/sy/impl/SyDzbmpService.java b/src/main/java/com/dsic/gj_erp/service/sy/impl/SyDzbmpService.java new file mode 100644 index 0000000..4f32df2 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/service/sy/impl/SyDzbmpService.java @@ -0,0 +1,10 @@ +package com.dsic.gj_erp.service.sy.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.dsic.gj_erp.bean.sy.SyDzbmp; +import com.dsic.gj_erp.mapper.sy.SyDzbmpMapper; +import org.springframework.stereotype.Service; + +@Service +public class SyDzbmpService extends ServiceImpl { +} diff --git a/src/main/java/com/dsic/gj_erp/util/MyString.java b/src/main/java/com/dsic/gj_erp/util/MyString.java new file mode 100644 index 0000000..bfd571a --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/util/MyString.java @@ -0,0 +1,146 @@ +package com.dsic.gj_erp.util; + +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.math.NumberUtils; + +import java.util.Calendar; +import java.util.Date; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +public class MyString { + /** + * 下划线转驼峰 + */ + public static String lineToHump(String str) { + Pattern linePattern = Pattern.compile("_(\\w)"); + str = str.toLowerCase(); + Matcher matcher = linePattern.matcher(str); + StringBuffer sb = new StringBuffer(); + while (matcher.find()) { + matcher.appendReplacement(sb, matcher.group(1).toUpperCase()); + } + matcher.appendTail(sb); + return sb.toString(); + } + + /** + * findtest 个数 + * @param srcText + * @param findText + * @return + */ + public static int appearNumber(String srcText, String findText) { + int count = 0; + int index = 0; + while ((index = srcText.indexOf(findText, index)) != -1) { + index = index + findText.length(); + count++; + } + return count; + } + + //使用commons的jexl可实现将字符串变成可执行代码的功能 + + public static String replace1(String gs){ + String replace1=gs; + if(gs.contains("[")){ + replace1 = gs.replace("[", "s.get"); + } + + + if(gs.contains("]d")){ + replace1 = replace1.replace("]d", "().doubleValue()"); + } + if(gs.contains("]")){ + replace1 = replace1.replace("]", "()"); + } + if (NumberUtils.isNumber(gs)){ + return gs; + } + if (gs.equals("null")){ + return ""; + } + return replace1; + } + + + public static String subZeroAndDot(String s){ + + if(StringUtils.isBlank(s)){ + return null; + } + + if(s.indexOf(".") > 0){ + s = s.replaceAll("0+?$", "");//去掉多余的0 + s = s.replaceAll("[.]$", "");//如最后一位是.则去掉 + } + return s; + } + + + /** + 转半角的函数(DBC case)

+ 全角空格为12288,半角空格为32 + 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 + * @param input 任意字符串 + * @return 半角字符串 + * + */ + public static String ToDBC(String input) { + char[] c = input.toCharArray(); + for (int i = 0; i < c.length; i++) { + if (c[i] == 12288) { + //全角空格为12288,半角空格为32 + c[i] = (char) 32; + continue; + } + if (c[i] > 65280 && c[i] < 65375) + //其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248 + c[i] = (char) (c[i] - 65248); + } + return new String(c); + } + /** + * 两个日期天数差 + * date2比date1多的天数 + * @param date1 + * @param date2 + * @return + */ + public static int differentDays(Date date1, Date date2) + { + Calendar cal1 = Calendar.getInstance(); + cal1.setTime(date1); + + Calendar cal2 = Calendar.getInstance(); + cal2.setTime(date2); + int day1= cal1.get(Calendar.DAY_OF_YEAR); + int day2 = cal2.get(Calendar.DAY_OF_YEAR); + + int year1 = cal1.get(Calendar.YEAR); + int year2 = cal2.get(Calendar.YEAR); + if(year1 != year2) //同一年 + { + int timeDistance = 0 ; + for(int i = year1 ; i < year2 ; i ++) + { + if(i%4==0 && i%100!=0 || i%400==0) //闰年 + { + timeDistance += 366; + } + else //不是闰年 + { + timeDistance += 365; + } + } + + return timeDistance + (day2-day1) ; + } + else //不同年 + { + System.out.println("判断day2 - day1 : " + (day2-day1)); + return day2-day1; + } + } +} diff --git a/src/main/resources/mappers/fd/TpbMapper.xml b/src/main/resources/mappers/fd/TpbMapper.xml new file mode 100644 index 0000000..b15d4f0 --- /dev/null +++ b/src/main/resources/mappers/fd/TpbMapper.xml @@ -0,0 +1,525 @@ + + + + + + + + + + +