xiaoning 1 year ago
parent 78aa65e8be
commit 2099a13257

@ -58,4 +58,6 @@ public class EmGcrl implements Serializable {
@ApiModelProperty(value = "工作日历(一年中的第几天)") @ApiModelProperty(value = "工作日历(一年中的第几天)")
private String gzlr; private String gzlr;
@ApiModelProperty(value = "最近的工作日")
private String gzr;
} }

@ -32,7 +32,8 @@ public class EmSbcnp implements Serializable {
@ApiModelProperty(value = "设备编号") @ApiModelProperty(value = "设备编号")
// @Id // @Id
@TableId(value = "SBBH", type = IdType.ASSIGN_UUID) @TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
private String sbbh; private String sbbh;
@ApiModelProperty(value = "设备名称") @ApiModelProperty(value = "设备名称")

@ -17,7 +17,7 @@ import java.math.BigDecimal;
* </p> * </p>
* *
* @author xn * @author xn
* @since 2023-10-09 * @since 2023-11-21
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = false) @EqualsAndHashCode(callSuper = false)
@ -58,13 +58,13 @@ public class DmSygdMx implements Serializable {
private String qbs; private String qbs;
@ApiModelProperty(value = "坡口类型") @ApiModelProperty(value = "坡口类型")
private String pklx; private Double pklx;
@ApiModelProperty(value = "坡口长度") @ApiModelProperty(value = "坡口长度")
private Double pkcd=1.0; private Double pkcd;
@ApiModelProperty(value = "零件数量") @ApiModelProperty(value = "零件数量")
private BigDecimal ljsl; private Double ljsl;
@ApiModelProperty(value = "组立") @ApiModelProperty(value = "组立")
private String zl; private String zl;
@ -73,7 +73,7 @@ public class DmSygdMx implements Serializable {
private String lx; private String lx;
@ApiModelProperty(value = "型材米数") @ApiModelProperty(value = "型材米数")
private BigDecimal xcms; private Double xcms;
@ApiModelProperty(value = "跨位") @ApiModelProperty(value = "跨位")
private String kw; private String kw;
@ -111,57 +111,13 @@ public class DmSygdMx implements Serializable {
@ApiModelProperty(value = "切割日期") @ApiModelProperty(value = "切割日期")
private String qgrq; 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 = "抛丸设备") @ApiModelProperty(value = "抛丸设备")
private String pwsb; private String pwsb;
@ApiModelProperty(value = "分段号") @ApiModelProperty(value = "分段号")
@TableField("DC_FD") @TableField("DC_FD")
private String dcFd; 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 = "矫正标识") @ApiModelProperty(value = "矫正标识")
private String jzbs; private String jzbs;
@ -171,15 +127,6 @@ public class DmSygdMx implements Serializable {
@ApiModelProperty(value = "矫正人员") @ApiModelProperty(value = "矫正人员")
private String jzry; private String jzry;
@ApiModelProperty(value = "曲加工设备")
private String qjgsb;
@ApiModelProperty(value = "曲加工人员")
private String qjgry;
@ApiModelProperty(value = "曲加工日期")
private String qjgrq;
@ApiModelProperty(value = "本船号") @ApiModelProperty(value = "本船号")
@TableField("dcCh2") @TableField("dcCh2")
private String dcCh2; private String dcCh2;
@ -189,39 +136,54 @@ public class DmSygdMx implements Serializable {
@ApiModelProperty(value = "时间更新时间") @ApiModelProperty(value = "时间更新时间")
private String gxsj; private String gxsj;
@ApiModelProperty(value = "划线空程禅道")
private Double hxkcCd;
@ApiModelProperty(value = "切割空程长度")
private Double qgkcCd;
@ApiModelProperty(value = "结束时间") @ApiModelProperty(value = "结束时间")
private String jssj; private String jssj;
@ApiModelProperty(value = "矫正日期")
private String jzrq; @ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期")
@ApiModelProperty(value = "划线空程长度") private String zt;
private String hxcdKc;
@ApiModelProperty(value = "切割空程长度")
private String qgcdKc;
@ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期")
private String zt="0";
@ApiModelProperty(value = "根数") @ApiModelProperty(value = "根数")
private Double xcgs; private Double xcgs;
@ApiModelProperty(value = "板材领取重量") @ApiModelProperty(value = "板材领取重量")
private BigDecimal bclqzl; private Double bclqzl;
@ApiModelProperty(value = "板材实耗重量") @ApiModelProperty(value = "板材实耗重量")
private Double bcshzl; private Double bcshzl;
@ApiModelProperty(value = "板材余料重量") @ApiModelProperty(value = "板材余料重量")
private BigDecimal bcylzl; private Double bcylzl;
@ApiModelProperty(value = "板材零件套料重量") @ApiModelProperty(value = "板材零件套料重量")
private BigDecimal bcljtlzl; private Double bcljtlzl;
@ApiModelProperty(value = "前批余料代") @ApiModelProperty(value = "前批余料代")
private Double bcqpyld; private Double bcqpyld;
private String parentId; private String parentId;
private String ylbhgg;
@TableId(value = "id", type = IdType.ASSIGN_UUID) @TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id; 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) @TableField(exist = false)
private String beginTime; private String beginTime;
@TableField(exist = false) @TableField(exist = false)

@ -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;
/**
* <p>
*
* </p>
*
* @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;
}

@ -202,12 +202,6 @@ public class DmYdjh implements Serializable {
@ApiModelProperty(value = "矫正日期") @ApiModelProperty(value = "矫正日期")
private String jzrq; private String jzrq;
@ApiModelProperty(value = "划线空程长度")
private Double hxcdKc;
@ApiModelProperty(value = "切割空程长度")
private Double qgcdKc;
@ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期") @ApiModelProperty(value = "状态0编辑 1提交 2下发 3完成 4拖期")
private String zt; private String zt;

@ -9,11 +9,26 @@ import java.util.List;
@Data @Data
public class Kwdto { public class Kwdto {
private String rq; private String id;
private String kw; private String yf;//月份
private int tlt_sl; private String kw;//跨位
private BigDecimal hx_cd; private String ch;//船号
private BigDecimal qg_cd; 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<DmSygdMx> mxList; private List<DmSygdMx> mxList;
} }

@ -9,9 +9,9 @@ import java.util.List;
@Data @Data
public class Pldto extends DmCzplpNew { public class Pldto extends DmCzplpNew {
private String jsq_dz_pc; private String dzglxq;
private String jsq_xz_pc; private String xzglxq;
private String gjks_pc; private Integer xzcz;
private Integer dzcz;
private List<DmSygdMx> mxList;
} }

@ -10,8 +10,8 @@ import java.util.List;
@Data @Data
public class Xbjhdto extends DmXbjh { public class Xbjhdto extends DmXbjh {
private Double plb_zl;//批量表重量 private Double xczl;//相差重量
private Double zrc_zl;//中日程重量 private Double zrc_zl;//实耗重量
private Double tlt_zl;//套料图重量 private Double tlt_zl;//套料图重量
private List<DmSygdMx> mxList; private List<DmSygdMx> mxList;

@ -36,6 +36,7 @@ public class DmQfxqController {
DmQfxqService service; DmQfxqService service;
@Autowired @Autowired
DmCbxxpService cbxxpService; DmCbxxpService cbxxpService;
//查询 //查询
@RequestMapping("/getList") @RequestMapping("/getList")
@AuthFunction @AuthFunction
@ -56,6 +57,7 @@ public class DmQfxqController {
.orderBy(true, true, "cbbm")); .orderBy(true, true, "cbbm"));
return new ResultBean(list); return new ResultBean(list);
} }
//导入 //导入
@PostMapping("/upload") @PostMapping("/upload")
@AuthFunction @AuthFunction
@ -75,6 +77,7 @@ public class DmQfxqController {
service.saveBatch(qfxqs); service.saveBatch(qfxqs);
return new ResultBean(); return new ResultBean();
} }
//删除 //删除
@RequestMapping("/remove") @RequestMapping("/remove")
@AuthFunction @AuthFunction
@ -82,6 +85,7 @@ public class DmQfxqController {
service.removeByIds(qfxqs); service.removeByIds(qfxqs);
return new ResultBean(); return new ResultBean();
} }
//提交/退回 //提交/退回
@RequestMapping("/qfxqTJ") @RequestMapping("/qfxqTJ")
@AuthFunction @AuthFunction
@ -98,6 +102,7 @@ public class DmQfxqController {
service.updateBatchById(qfxqs); service.updateBatchById(qfxqs);
return new ResultBean(); return new ResultBean();
} }
//审核 //审核
@RequestMapping("/qfxqSH") @RequestMapping("/qfxqSH")
@AuthFunction @AuthFunction

@ -20,10 +20,7 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.util.HashMap; import java.util.*;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -59,19 +56,27 @@ public class DmSygdMxController {
@RequestMapping("/saveByDcch") @RequestMapping("/saveByDcch")
@AuthFunction @AuthFunction
public ResultBean saveByDcch(@RequestBody HashMap<String, List<Object>> map ){ public ResultBean saveByDcch(@RequestBody HashMap<String, List<Object>> map ){
return new ResultBean(service.saveByDcch(map)); return null;
} }
@RequestMapping("/symxhz") @RequestMapping("/symxhz")
@AuthFunction @AuthFunction
public ResultBean symxhz(@RequestBody List<DmSygdMx> list){ public ResultBean symxhz(@RequestBody List<DmSygdMx> list){
Map<String,Object> map=new HashMap<>(); Map<String,Object> 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("xbList",service.getXBList(list,year,begin,end));
map.put("plList",service.getPl(list)); map.put("plList",service.getPl(list.get(0).getJssj(),list.get(list.size() - 1).getJssj()));
map.put("tzList",service.getTZList(list)); map.put("kwList",service.getKwList(list,list.get(0).getJssj(),list.get(list.size() - 1).getJssj()));
map.put("dhList",service.getDhList(list)); // map.put("tzList",service.getTZList(list));
map.put("kwList",service.getKwList(list)); // map.put("dhList",service.getDhList(list));
return new ResultBean(map); return new ResultBean(map);
} }
@RequestMapping("/getCnsb") @RequestMapping("/getCnsb")

@ -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;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-20
*/
@RestController
@RequestMapping("/dmSygdMxLj")
public class DmSygdMxLjController {
}

@ -97,8 +97,6 @@ public class DmSygdxqController {
service.saveXzList(list,username,day); service.saveXzList(list,username,day);
service.saveDzList(list1,username,day); service.saveDzList(list1,username,day);
return new ResultBean(); return new ResultBean();
} }
@ -106,19 +104,19 @@ public class DmSygdxqController {
// String a = "2023/08/20"; // String a = "2023/08/20";
// String b = "2023/08/21"; // String b = "2023/08/21";
// System.out.println(a.compareTo(b)); // 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[] 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,", // String[] a1={"dcCh","dcPl", "zdh","dcFd","dzjz","zxfdxq", "glxq", "xdb", "xskj,",
// "xpt,", "xyw", "xxc", "xtxc", }; // "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++) { // for (int i = 0; i < b.length; i++) {
// System.out.println("{ field: '"+b1[i]+"', title: '"+b[i]+"', width: 120, \n" + // System.out.println("{ field: '"+b1[i]+"', title: '"+b[i]+"', width: 120, \n" +
// " filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],\n" + // " filters: [{ data: { checks: [], sVal: '', sMenu: '', fType1: '', fVal1: '', fMode: 'and', fType2: '', fVal2: '' } }],\n" +
// " filterRender: { name: 'FilterCombination', },\n" + // " filterRender: { name: 'FilterCombination', },\n" +
// "},"); // "},");
// } // }
// System.out.println("2023/08/05".substring(0,7));
} }
} }

@ -46,8 +46,8 @@ public class DmYdjhController {
@RequestMapping("/tjydjh") @RequestMapping("/tjydjh")
@AuthFunction @AuthFunction
public ResultBean tjydjh(){ public ResultBean tjydjh(){
service.tjydjh();
return new ResultBean(); return new ResultBean(service.tjydjh());
} }
} }

@ -17,6 +17,6 @@ public interface EmSbjbbRepository extends JpaRepository<EmSbjbb,String> {
@Query(nativeQuery = true,value = "SELECT bm,bmsm,bmjb FROM dm_fjbmgl") @Query(nativeQuery = true,value = "SELECT bm,bmsm,bmjb FROM dm_fjbmgl")
List<Map> sblx(); List<Map> 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<Map> BMMCBM(); List<Map> BMMCBM();
} }

@ -35,6 +35,6 @@ public interface Dm_zhbmpRepository extends JpaRepository<Dm_zhbmp,Dm_zhbmp.Prim
@Query(nativeQuery = true,value = "SELECT bm,bmsm FROM DM_ZHBMP WHERE bmlb='bmbm' AND bm like 'FP%'") @Query(nativeQuery = true,value = "SELECT bm,bmsm FROM DM_ZHBMP WHERE bmlb='bmbm' AND bm like 'FP%'")
List<Map> findbmbm(); List<Map> 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<Map> findqgkw(); List<Map> findqgkw();
} }

@ -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;
/**
* <p>
* Mapper
* </p>
*
* @author xn
* @since 2023-11-20
*/
public interface DmSygdMxLjMapper extends BaseMapper<DmSygdMxLj> {
}

@ -3,7 +3,11 @@ package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx; 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.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; import java.util.List;
@ -18,4 +22,10 @@ import java.util.List;
public interface DmSygdMxMapper extends BaseMapper<DmSygdMx> { public interface DmSygdMxMapper extends BaseMapper<DmSygdMx> {
Dhdto getDhsl(Dhdto dhdto); Dhdto getDhsl(Dhdto dhdto);
List<DmSygdMxLj> getLjxx();
List<DmSygdMx> getMx();
int setParent();
List<Kwdto> getkw(@Param("begin") String begin, @Param("end") String end);
List<Pldto> getPl(@Param("begin") String begin,@Param("end") String end);
} }

@ -2,8 +2,11 @@ package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjh; import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import java.util.List;
/** /**
* <p> * <p>
* Mapper * Mapper
@ -14,4 +17,5 @@ import com.dsic.gj_erp.bean.jhgk.DmYdjh;
*/ */
public interface DmYdjhMapper extends BaseMapper<DmYdjh> { public interface DmYdjhMapper extends BaseMapper<DmYdjh> {
List<DmSygdMx> getSygdmx(String nextMonth);
} }

@ -42,7 +42,7 @@ public class EmGcrlServiceImpl extends ServiceImpl<EmGcrlMapper, EmGcrl> impleme
EmGcrlRepository emGcrlRepository; EmGcrlRepository emGcrlRepository;
String[] weekArray = { "一", "二", "三", "四", "五", "六","日"}; String[] weekArray = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六","星期日"};
@Override @Override
public List<EmGcrl> getList(JSONObject json) { public List<EmGcrl> getList(JSONObject json) {
@ -52,8 +52,9 @@ public class EmGcrlServiceImpl extends ServiceImpl<EmGcrlMapper, EmGcrl> impleme
}else{ }else{
queryWrapper.eq("NF", Calendar.getInstance().get(Calendar.YEAR)); queryWrapper.eq("NF", Calendar.getInstance().get(Calendar.YEAR));
} }
queryWrapper.orderByDesc("gl"); queryWrapper.orderByAsc("gl");
List<EmGcrl> emGcrls=emGcrlMapper.selectList(queryWrapper); List<EmGcrl> emGcrls=emGcrlMapper.selectList(queryWrapper);
return emGcrls; return emGcrls;
} }
@ -74,25 +75,37 @@ public class EmGcrlServiceImpl extends ServiceImpl<EmGcrlMapper, EmGcrl> impleme
LocalDate endDate = LocalDate.of(intNF, 12, 31); // 结束日期2022年12月31日 LocalDate endDate = LocalDate.of(intNF, 12, 31); // 结束日期2022年12月31日
List<EmGcrl> saveList=new ArrayList<>(); List<EmGcrl> saveList=new ArrayList<>();
LocalDate currentDate = startDate; LocalDate currentDate = startDate;
String gzr="";
while (currentDate.isBefore(endDate) || currentDate.isEqual(endDate)) { while (currentDate.isBefore(endDate) || currentDate.isEqual(endDate)) {
EmGcrl emGcrl=new EmGcrl(); EmGcrl emGcrl=new EmGcrl();
emGcrl.setNf(nf); emGcrl.setNf(nf);
String gl = currentDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd")); String gl = currentDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"));
emGcrl.setGl(gl); 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()); Integer weekOfYear = currentDate.get(weekFields.weekOfYear());
emGcrl.setNz(weekOfYear.toString()); emGcrl.setNz(weekOfYear.toString());
Integer weekOfMonth = currentDate.get(weekFields.weekOfMonth()); // Integer weekOfMonth = currentDate.get(weekFields.weekOfMonth());
emGcrl.setYz(weekOfMonth.toString()); // emGcrl.setYz(weekOfMonth.toString());
DayOfWeek dayOfWeek = currentDate.getDayOfWeek(); DayOfWeek dayOfWeek = currentDate.getDayOfWeek();
Integer dayOfYear= currentDate.getDayOfYear(); Integer dayOfYear= currentDate.getDayOfYear();
emGcrl.setGzlr(dayOfYear.toString()); emGcrl.setGzlr(dayOfYear.toString());
Integer zj=dayOfWeek.getValue(); Integer zj=dayOfWeek.getValue();
emGcrl.setXq(weekArray[zj-1]); emGcrl.setXq(weekArray[zj-1]);
if(zj==6||zj==7){ if(zj==6||zj==7){
if (gzr.equals("")){
EmGcrl l= this.getOne(new QueryWrapper<EmGcrl>().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"); emGcrl.setXxr("0");
}else { }else {
gzr=emGcrl.getGl();
emGcrl.setGzr(gzr);
emGcrl.setXxr("1"); emGcrl.setXxr("1");
} }
saveList.add(emGcrl); saveList.add(emGcrl);

@ -42,7 +42,7 @@ public class EmSbcnpServiceImpl extends ServiceImpl<EmSbcnpMapper, EmSbcnp> impl
// if(StringUtils.isNotEmpty(json.getString("sbmc"))){ // if(StringUtils.isNotEmpty(json.getString("sbmc"))){
// queryWrapper.eq("SBMC",json.getString("sbmc")); // queryWrapper.eq("SBMC",json.getString("sbmc"));
// } // }
List<EmSbcnp> emSbjbbs=emSbcnpMapper.selectList(queryWrapper); List<EmSbcnp> emSbjbbs=emSbcnpMapper.selectList(queryWrapper.orderByAsc("kw,gx"));
return emSbjbbs; return emSbjbbs;
} }

@ -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;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-20
*/
public interface DmSygdMxLjService extends IService<DmSygdMxLj> {
}

@ -19,10 +19,10 @@ import java.util.Map;
*/ */
public interface DmSygdMxService extends IService<DmSygdMx> { public interface DmSygdMxService extends IService<DmSygdMx> {
Map sygdPC(); Map sygdPC();
List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map); // List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map);
List<Kwdto> getKwList(List<DmSygdMx> list); List<Kwdto> getKwList(List<DmSygdMx> list,String begin,String end);
List<Xbjhdto> getXBList(List<DmSygdMx> list); List<Xbjhdto> getXBList(List<DmSygdMx> list,String year,String begin,String end);
List<Pldto> getPl(List<DmSygdMx> list); List<Pldto> getPl(String begin,String end);
List<Tzjhdto> getTZList(List<DmSygdMx> list); List<Tzjhdto> getTZList(List<DmSygdMx> list);
List<Dhdto> getDhList(List<DmSygdMx> list); List<Dhdto> getDhList(List<DmSygdMx> list);
ResultBean tqSygd(); ResultBean tqSygd();

@ -2,8 +2,11 @@ package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjh; import com.dsic.gj_erp.bean.jhgk.DmYdjh;
import java.util.List;
/** /**
* <p> * <p>
* *
@ -15,5 +18,5 @@ import com.dsic.gj_erp.bean.jhgk.DmYdjh;
public interface DmYdjhService extends IService<DmYdjh> { public interface DmYdjhService extends IService<DmYdjh> {
void tjydjh(); List<DmSygdMx> tjydjh();
} }

@ -47,17 +47,21 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
} }
} }
for (QfExcel q : list) { for (QfExcel q : list) {
// this.remove(new QueryWrapper<DmQfxq>()
// .eq("DC_CH",q.getDcCh())
// .eq("DC_PL",q.getDcPl())
// .eq("DC_FD",q.getDcFd()));
DmQfxq a = new DmQfxq(); DmQfxq a = new DmQfxq();
BeanUtil.copyProperties(q, a); 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.setBzry((String) req.getAttribute("yhms"));
a.setBzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd")); a.setBzrq(DateUtil.format(DateUtil.date(), "yyyy/MM/dd"));
listForSave.add(a); listForSave.add(a);
} }
this.saveBatch(listForSave); this.saveBatch(listForSave);
//生成月度计划信息
generateYdjh();
return new ResultBean(); return new ResultBean();
} }
public void generateYdjh() {
//零件
}
} }

@ -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;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2023-11-20
*/
@Service
public class DmSygdMxLjServiceImpl extends ServiceImpl<DmSygdMxLjMapper, DmSygdMxLj> implements DmSygdMxLjService {
}

@ -6,11 +6,13 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jcsj.DmBom; import com.dsic.gj_erp.bean.jcsj.DmBom;
import com.dsic.gj_erp.bean.jcsj.DmCzplpNew; import com.dsic.gj_erp.bean.jcsj.DmCzplpNew;
import com.dsic.gj_erp.bean.jcsj.EmGcrl; 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.*;
import com.dsic.gj_erp.bean.jhgk.dto.*; import com.dsic.gj_erp.bean.jhgk.dto.*;
import com.dsic.gj_erp.mapper.jcsj.DmBomMapper; 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.DmSygdService;
import com.dsic.gj_erp.service.jhgk.DmTzjhService; import com.dsic.gj_erp.service.jhgk.DmTzjhService;
import com.dsic.gj_erp.service.jhgk.DmXbjhService; import com.dsic.gj_erp.service.jhgk.DmXbjhService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -42,293 +45,62 @@ import java.util.stream.Collectors;
@Service @Service
public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> implements DmSygdMxService { public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> implements DmSygdMxService {
@Resource
private DmZrcjhMapper zrcjhMapper;
@Resource
private DmBomMapper bomMapper;
@Resource @Resource
private EmGcrlMapper gcrlMapper; private EmGcrlMapper gcrlMapper;
@Resource @Resource
private DmSygdService sygdService; private DmSygdService sygdService;
@Resource @Resource
private DmCzplpNewService plService;
@Resource
private DmXbjhService xbService; private DmXbjhService xbService;
@Resource @Resource
private DmTzjhService tzjhService; private DmTzjhService tzjhService;
@Resource
private DmSygdMxLjServiceImpl ljService;
/** /**
* *
* BOM * BOM
* 3 * 3
*
* @return * @return
*/ */
@Override @Override
@Transactional @Transactional
public Map sygdPC() { public Map sygdPC() {
Map map2= new HashMap(); List<DmSygdMxLj> ljList = baseMapper.getLjxx();
//1.接下来3个月的 中日程 数据 //零件排产 按时间 船号 批量 图号 排序
// List<DmZrcjh> zrcjhs= zrcjhMapper.selectList(new QueryWrapper<DmZrcjh>() //默认定额 坡口 打磨 曲
// .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<DmZrcjh> zrcjhs= zrcjhMapper.selectList(new QueryWrapper<DmZrcjh>()
.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<DmZrcjh> zrcjhsNew=new ArrayList<>();
//TODO 2.如果要重新排产,应当先根据 船号、批量 删除对应数父级状态为编制数据,及对应明细数据
for (DmZrcjh zrc:zrcjhs){
//有父级数据的
if (sygdService.remove(new QueryWrapper<DmSygd>()
.eq("DC_CH",zrc.getDcCh())
.eq("DC_PL",zrc.getDcPl())
.eq("gd_zt","0")//编辑
)) {
this.remove(new QueryWrapper<DmSygdMx>()
.eq("dc_ch",zrc.getDcCh())
.eq("dc_pl",zrc.getDcPl()));
zrcjhsNew.add(zrc);
}else {
//无父级数据的
this.remove(new QueryWrapper<DmSygdMx>()
.eq("dc_ch",zrc.getDcCh())
.eq("dc_pl",zrc.getDcPl())
.last("and parent_id is null"));
zrcjhsNew.add(zrc);
}
}
if(zrcjhsNew.size()<1){ //todo 保存前判断是否有,已排完的数据
map2.put("message","无可排产数据");
return map2;
}
//3.用中日程中的 船号 批量 在BOM中找明细
List<DmSygdMx> mxList=new ArrayList<>();
List<DmZrcjh> no_tlt=new ArrayList<>();//在BOM中没有对应数据的中日程信息
for (DmZrcjh zrcjh : zrcjhsNew) {
//TODO ②BOM中对应数据 未计算型材数据
List<DmBom> bomList= bomMapper.selectList(new QueryWrapper<DmBom>()
.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){ ljService.saveBatch(ljList);
no_tlt.add(zrcjh);
}else {
bomToMx(zrcjh,bomList,mxList,"",zrcjh.getDcCh());
}
}
//4.1 将没有BOM信息的中日程的船号去重返回前端手动选择目标船只
if (no_tlt.size()>0){
Map<String,List<DmZrcjh>> map=no_tlt.stream().collect(Collectors.groupingBy(DmZrcjh::getDcCh));
List<DmSygdMx> no_tlt_ch=new ArrayList<>();
for (String s:map.keySet()){
DmSygdMx m=new DmSygdMx();
m.setDcCh(s);
no_tlt_ch.add(m);
}
//可作为目标船只的船
List<DmBom> haveTltBoms= bomMapper.selectList(new QueryWrapper<DmBom>()
.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;
}
/** List<DmSygdMx> mxList = baseMapper.getMx();
*使BOM mxList.forEach(l -> {
* @param zrcjh if (StrUtil.isNotEmpty(l.getWpgg())) {
* @param list BOM String[] wpgg = l.getWpgg().split("\\*");
* @param mxList
* @param mbch
* @param dcch
* @return
*/
public void bomToMx(DmZrcjh zrcjh,List<DmBom> list,List<DmSygdMx> 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());
}
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;
}
// 7850 kg 密度 计算重量
String[] wpgg=b.getWpgg().split("\\*");
Double c = 0.0; Double c = 0.0;
if (wpgg.length == 3) { if (wpgg.length == 3) {
//立方米 //立方米
Double d = Double.parseDouble(wpgg[0]) * Double.parseDouble(wpgg[1]) * Double.parseDouble(wpgg[2]) / 1000000000.0; Double d = Double.parseDouble(wpgg[0]) * Double.parseDouble(wpgg[1]) * Double.parseDouble(wpgg[2]) / 1000000000.0;
//密度7.85t/m3 //密度7.85t/m3
c=d*7.85; c = d * 7850;
}
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);
} }
l.setBcshzl(Double.valueOf(String.format("%.2f", c)));
} }
});
this.saveBatch(mxList);
baseMapper.setParent();
/** //todo 排产
* 使
* @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());
}
/** Map map2 = new HashMap();
* map2.put("mxList", mxList);
* @param map return map2;
* @return
*/
@Override
public List<DmSygdMx> saveByDcch(HashMap<String, List<Object>> map) {
List<DmZrcjh> zrcjhs = BeanUtil.copyToList(map.get("no_tlt"), DmZrcjh.class);
List<DmSygdMx> mxList= BeanUtil.copyToList(map.get("mxList"),DmSygdMx.class);
List<DmSygdMx> 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<DmBom> bomList= bomMapper.selectList(new QueryWrapper<DmBom>()
.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;
} }
/** /**
* *
*
* @param list * @param list
*/ */
public void ypc(List<DmSygdMx> list) { public void ypc(List<DmSygdMx> list) {
@ -361,8 +133,222 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
this.saveBatch(list); this.saveBatch(list);
} }
/**
* 线
*
* @param list
* @return
*/
@Override
public List<Xbjhdto> getXBList(List<DmSygdMx> list, String year, String begin, String end) {
//
//线表 年月 船号 重量
//批量表重量 中日程重量
//明细 按船号 月份 分组 计算重量 排产重量
List<DmXbjh> xbjhs = xbService.list(new QueryWrapper<DmXbjh>()
.eq("nf", year)
.ne("zl", 0)
.between("yf", begin, end));
List<Xbjhdto> xbjhdtoList = BeanUtil.copyToList(xbjhs, Xbjhdto.class);
//3.根据月份和船号分组
Map<String, List<DmSygdMx>> monthAndCh = list.stream()
.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()) {
if (dmXbjh.getDcCh().equals(monthAndCh.get(ch).get(0).getDcCh())
&& 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));
}
}
});
Map<String, List<Xbjhdto>> yf = xbjhdtoList.stream()
.filter(mx -> Objects.nonNull(mx.getDcCh())) // group by 的字段不能有null值
.collect(Collectors.groupingBy(x -> x.getYf()));
List<Xbjhdto> list1 = new ArrayList<>();
for (String month : yf.keySet()) {
Double tlt_zl = 0.0;
Double zl = 0.0;
List<Xbjhdto> 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 list1;
}
/**
*
*
* @return
*/
@Override
public List<Pldto> getPl(String begin, String end) {
String beginTime_lj = ljService.getOne(new QueryWrapper<DmSygdMxLj>()
.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<DmSygdMxLj>()
.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<Pldto> pldtoList = baseMapper.getPl(beginTime_lj, endTime_lj);
return pldtoList;
}
/**
*
*
* @param
* @return
*/
@Override
public List<Kwdto> getKwList(List<DmSygdMx> list,String begin, String end) {
List<Kwdto> 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<DmSygdMx>().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<Kwdto> getKwList_n(List<DmSygdMx> list) {
//1.将明细信息,按照跨位分组
Map<String, List<DmSygdMx>> map = list.stream().collect(Collectors.groupingBy(x -> Optional.ofNullable(x.getKw()).orElse("")));
List<Kwdto> kwdtoList = new ArrayList<>();
//2.按照日期,统计每个跨位信息
for (String kw : map.keySet()) {
//TODO 根据上料日期分组
Map<String, List<DmSygdMx>> 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<DmSygdMx> 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;
}
/**
*
*
* @param list
* @return
*/
@Override
public List<Tzjhdto> getTZList(List<DmSygdMx> list) {
//图纸计划 dmTzjh 船号 批量
List<Tzjhdto> tzjhdtos = new ArrayList<>();
Map<String, List<DmSygdMx>> map = list.stream().collect(Collectors.groupingBy(mx -> mx.getDcCh() + mx.getDcPl()));
for (String key : map.keySet()) {
List<DmSygdMx> list1 = map.get(key).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq, Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
DmTzjh tzjh = tzjhService.getOne(new QueryWrapper<DmTzjh>()
.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());
return tzjhdtos;
}
/**
*
*
* @param list
* @return
*/
@Override
public List<Dhdto> getDhList(List<DmSygdMx> list) {
//船号 批量 订单号
// Map<String, List<DmSygdMx>> map = list.stream()
// .filter(mx -> Objects.nonNull(mx.getDhqd()))
// .collect(Collectors.groupingBy(mx -> mx.getDcCh() + mx.getDcPl() + mx.getDhqd()));
//
List<Dhdto> list1 = new ArrayList<>();
// for (String key : map.keySet()) {
// for (DmSygdMx mx : map.get(key)) {
// Dhdto dhdto = new Dhdto();
// List<DmSygdMx> 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 * 3
*
* @return * @return
*/ */
@Transactional @Transactional
@ -387,10 +373,6 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
sygd.setDcCh(mxList.get(0).getDcCh()); sygd.setDcCh(mxList.get(0).getDcCh());
sygd.setDcPl(mxList.get(0).getDcPl()); sygd.setDcPl(mxList.get(0).getDcPl());
sygd.setDcFd(mxList.get(0).getDcFd()); 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.setTltSl(mxList.size());
sygd.setSlSl(mxList.size()); sygd.setSlSl(mxList.size());
sygd.setPwSl(mxList.size()); sygd.setPwSl(mxList.size());
@ -548,193 +530,4 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
sygdService.saveBatch(sygdList); sygdService.saveBatch(sygdList);
return new ResultBean(sygdList); return new ResultBean(sygdList);
} }
/**
*
* @param list
* @return
*/
public List<Kwdto> getKwList(List<DmSygdMx> list){
//1.将明细信息,按照跨位分组
Map<String,List<DmSygdMx>> map=list.stream().collect(Collectors.groupingBy(x->Optional.ofNullable(x.getKw()).orElse("") ));
List<Kwdto> kwdtoList=new ArrayList<>();
//2.按照日期,统计每个跨位信息
for (String kw:map.keySet()){
//TODO 根据上料日期分组
Map<String,List<DmSygdMx>> 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<DmSygdMx> 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;
}
/**
* 线
* @param list
* @return
*/
@Override
public List<Xbjhdto> getXBList(List<DmSygdMx> list) {
//
//线表 年月 船号 重量
//批量表重量 中日程重量
//明细 按船号 月份 分组 计算重量 排产重量
//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<DmXbjh> xbjhs=xbService.list(new QueryWrapper<DmXbjh>()
.eq("nf",year)
.between("yf",begin,end));
List<Xbjhdto> xbjhdtoList= BeanUtil.copyToList(xbjhs,Xbjhdto.class);
//3.根据月份和船号分组
Map<String, List<DmSygdMx>> monthAndCh = list.stream()
.filter(mx -> Objects.nonNull(mx.getSlrq())) // group by 的字段不能有null值
.collect(Collectors.groupingBy(x-> x.getSlrq().substring(5,7)+x.getDcCh()));
//4.
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.setTlt_zl(shzl);
dmXbjh.setMxList(monthAndCh.get(ch));
}
}
});
xbjhdtoList=xbjhdtoList.stream()
.filter(xb -> Objects.nonNull(xb.getTlt_zl()))
.sorted(Comparator.comparing(Xbjhdto::getYf)).collect(Collectors.toList());
return xbjhdtoList;
}
/**
*
* @param list
* @return
*/
@Override
public List<Pldto> getPl(List<DmSygdMx> list) {
//根据船号 批量 对应
//钢加大组结束期 钢加小组结束期 钢加开始
//list 按船号 批量 分段 大小组 分组,排序
List<Pldto> list1=new ArrayList();
Map<String,List<DmSygdMx>> 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<DmCzplpNew>()
.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);
}
//大组 结束期
//小组 结束期
}
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;
}
/**
*
* @param list
* @return
*/
@Override
public List<Tzjhdto> getTZList(List<DmSygdMx> list) {
//图纸计划 dmTzjh 船号 批量
List<Tzjhdto> tzjhdtos=new ArrayList<>();
Map<String,List<DmSygdMx>> map= list.stream().collect(Collectors.groupingBy(mx->mx.getDcCh()+mx.getDcPl()));
for (String key:map.keySet()){
List<DmSygdMx> list1= map.get(key).stream().sorted(Comparator.comparing(DmSygdMx::getSlrq,Comparator.nullsLast(Comparator.naturalOrder()))).collect(Collectors.toList());
DmTzjh tzjh= tzjhService.getOne(new QueryWrapper<DmTzjh>()
.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());
return tzjhdtos;
}
/**
*
* @param list
* @return
*/
@Override
public List<Dhdto> getDhList(List<DmSygdMx> list) {
//船号 批量 订单号
Map<String,List<DmSygdMx>> map= list.stream()
.filter(mx -> Objects.nonNull(mx.getDhqd()))
.collect(Collectors.groupingBy(mx->mx.getDcCh()+mx.getDcPl()+mx.getDhqd()));
List<Dhdto> list1=new ArrayList<>();
for (String key:map.keySet()){
for (DmSygdMx mx:map.get(key)){
Dhdto dhdto=new Dhdto();
List<DmSygdMx> 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;
}
} }

@ -28,6 +28,7 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
@Transactional @Transactional
public void saveXzList(List<DmSygdxq> list,String username,String day){ public void saveXzList(List<DmSygdxq> list,String username,String day){
list.forEach(l->{ 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<DmSygdxq>() DmSygdxq sygdxq=this.getOne(new QueryWrapper<DmSygdxq>()
.eq("dc_ch",l.getDcCh()) .eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl()) .eq("dc_pl",l.getDcPl())
@ -76,6 +77,7 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
@Transactional @Transactional
public void saveDzList(List<DmSygdxq> list,String username,String day){ public void saveDzList(List<DmSygdxq> list,String username,String day){
list.forEach(l->{ 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<DmSygdxq>() DmSygdxq sygdxq=this.getOne(new QueryWrapper<DmSygdxq>()
.eq("dc_ch",l.getDcCh()) .eq("dc_ch",l.getDcCh())
.eq("dc_pl",l.getDcPl()) .eq("dc_pl",l.getDcPl())
@ -104,5 +106,11 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
} }
}); });
} }
//零件信息
public void generateLjxx(List<DmSygdxq> list){
//根据:本次导入的三月需求期 提取BOM 生成三月需求零件信息
}
} }

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

@ -70,6 +70,8 @@ public class DmZrcjhServiceImpl extends ServiceImpl<DmZrcjhMapper, DmZrcjh> impl
list.forEach(stringObjectMap -> { list.forEach(stringObjectMap -> {
DmZrcjh dmZrcjh = modelMapper.map(stringObjectMap, DmZrcjh.class); DmZrcjh dmZrcjh = modelMapper.map(stringObjectMap, DmZrcjh.class);
dmZrcjh.setZt("0"); 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); dmZrcjhs.add(dmZrcjh);
}); });
return dmZrcjhs; return dmZrcjhs;
@ -109,14 +111,12 @@ public class DmZrcjhServiceImpl extends ServiceImpl<DmZrcjhMapper, DmZrcjh> impl
dmZrcjh.setBzrq(appendBzrq); dmZrcjh.setBzrq(appendBzrq);
updateById(dmZrcjh); updateById(dmZrcjh);
} }
} } else {
else {
dmZrcjh.setBzr(dmZrcjhOneBzr + "@" + bzr); dmZrcjh.setBzr(dmZrcjhOneBzr + "@" + bzr);
dmZrcjh.setBzrq(dmZrcjhOneBzrq + "@" + day); dmZrcjh.setBzrq(dmZrcjhOneBzrq + "@" + day);
updateById(dmZrcjh); updateById(dmZrcjh);
} }
} } else {
else {
dmZrcjh.setBzr(bzr); dmZrcjh.setBzr(bzr);
dmZrcjh.setBzrq(day); dmZrcjh.setBzrq(day);
saveDmzrcjhList.add(dmZrcjh); saveDmzrcjhList.add(dmZrcjh);

@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.dsic.gj_erp.mapper.jhgk.DmSygdMxLjMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.dsic.gj_erp.bean.jhgk.DmSygdMxLj">
<id column="id" property="id" />
<result column="dcch" property="dcch" />
<result column="mbch" property="mbch" />
<result column="sjch" property="sjch" />
<result column="pl" property="pl" />
<result column="fd" property="fd" />
<result column="xqdd" property="xqdd" />
<result column="pw" property="pw" />
<result column="lqlb" property="lqlb" />
<result column="kw" property="kw" />
<result column="sbbh" property="sbbh" />
<result column="sclx" property="sclx" />
<result column="zl" property="zl" />
<result column="wpcz" property="wpcz" />
<result column="wpgg" property="wpgg" />
<result column="bh" property="bh" />
<result column="bc" property="bc" />
<result column="yqyl" property="yqyl" />
<result column="qgcd" property="qgcd" />
<result column="tzbh" property="tzbh" />
<result column="tlsl" property="tlsl" />
<result column="pklx" property="pklx" />
<result column="qbs" property="qbs" />
<result column="pkbs" property="pkbs" />
<result column="pkcd" property="pkcd" />
<result column="dmbs" property="dmbs" />
<result column="dmcd" property="dmcd" />
<result column="zpsx" property="zpsx" />
<result column="ljbh" property="ljbh" />
<result column="ljsl" property="ljsl" />
<result column="ljsx" property="ljsx" />
<result column="djmj" property="djmj" />
<result column="ljdz" property="ljdz" />
<result column="blgs" property="blgs" />
<result column="pwgs" property="pwgs" />
<result column="llgs" property="llgs" />
<result column="hxgs" property="hxgs" />
<result column="qggs" property="qggs" />
<result column="pkgs" property="pkgs" />
<result column="qgs" property="qgs" />
<result column="dmgs" property="dmgs" />
<result column="zpgs" property="zpgs" />
<result column="fkblgs" property="fkblgs" />
<result column="fkpwgs" property="fkpwgs" />
<result column="fkllgs" property="fkllgs" />
<result column="fkhxgs" property="fkhxgs" />
<result column="fkqggs" property="fkqggs" />
<result column="fkpkgs" property="fkpkgs" />
<result column="fkqgs" property="fkqgs" />
<result column="fkdmgs" property="fkdmgs" />
<result column="fkzpgs" property="fkzpgs" />
<result column="fds" property="fds" />
<result column="hxcd" property="hxcd" />
<result column="xcgs" property="xcgs" />
<result column="xcshms" property="xcshms" />
<result column="bclqzl" property="bclqzl" />
<result column="bcshzl" property="bcshzl" />
<result column="bcylzl" property="bcylzl" />
<result column="bcljtlzl" property="bcljtlzl" />
<result column="bcqpyld" property="bcqpyld" />
<result column="xzglxq" property="xzglxq" />
<result column="dzglxq" property="dzglxq" />
<result column="kssj" property="kssj" />
<result column="pkkssj" property="pkkssj" />
<result column="pkjssj" property="pkjssj" />
<result column="qkssj" property="qkssj" />
<result column="qjssj" property="qjssj" />
<result column="dmkssj" property="dmkssj" />
<result column="dmjssj" property="dmjssj" />
<result column="gylc" property="gylc" />
<result column="cs" property="cs" />
<result column="lqbs" property="lqbs" />
<result column="bzrq" property="bzrq" />
<result column="bzry" property="bzry" />
<result column="yidd" property="yidd" />
<result column="parent_id" property="parentId" />
<result column="ylbhgg" property="ylbhgg" />
<result column="zt" property="zt" />
<result column="type" property="type" />
<result column="tjBs" property="tjBs" />
</resultMap>
</mapper>

@ -3,43 +3,6 @@
<mapper namespace="com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper"> <mapper namespace="com.dsic.gj_erp.mapper.jhgk.DmSygdMxMapper">
<!-- 通用查询映射结果 --> <!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.dsic.gj_erp.bean.jhgk.DmSygdMx">
<id column="id" property="id" />
<result column="dc_ch" property="dcCh" />
<result column="dc_ch1" property="dcCh1" />
<result column="dc_pl" property="dcPl" />
<result column="LQLB" property="lqlb" />
<result column="tzbh" property="tzbh" />
<result column="wpgg" property="wpgg" />
<result column="wpxh" property="wpxh" />
<result column="hxcd" property="hxcd" />
<result column="qgcd" property="qgcd" />
<result column="qbs" property="qbs" />
<!-- <result column="dmbs" property="dmbs" />-->
<result column="pkcd" property="pkcd" />
<result column="ljsl" property="ljsl" />
<result column="zl" property="zl" />
<result column="lx" property="lx" />
<result column="xcms" property="xcms" />
<result column="kw" property="kw" />
<result column="slrq" property="slrq" />
<result column="slry" property="slry" />
<result column="pw" property="pw" />
<result column="pwry" property="pwry" />
<result column="pwrq" property="pwrq" />
<result column="hxsb" property="hxsb" />
<result column="hxry" property="hxry" />
<result column="hxrq" property="hxrq" />
<result column="qgsb" property="qgsb" />
<result column="qgry" property="qgry" />
<result column="qgrq" property="qgrq" />
<result column="dmcd" property="dmcd" />
<result column="dmsb" property="dmsb" />
<result column="dmry" property="dmry" />
<result column="dmrq" property="dmrq" />
<result column="pwsb" property="pwsb" />
<result column="parent_id" property="parentId" />
</resultMap>
<select id="getDhsl" resultType="Dhdto" parameterType="Dhdto"> <select id="getDhsl" resultType="Dhdto" parameterType="Dhdto">
select ISNULL(im_crklsz.HDSL, 0) as hdsl, select ISNULL(im_crklsz.HDSL, 0) as hdsl,
@ -62,4 +25,181 @@
and MS_DDMXP.WPKD=#{rkxh} and MS_DDMXP.WPKD=#{rkxh}
GROUP BY MS_DDMXP.WPHD,MS_DDMXP.WPCD,MS_DDMXP.WPKD,MS_DDMXP.RKXH GROUP BY MS_DDMXP.WPHD,MS_DDMXP.WPCD,MS_DDMXP.WPKD,MS_DDMXP.RKXH
</select> </select>
<select id="getLjxx" resultType="com.dsic.gj_erp.bean.jhgk.DmSygdMxLj">
SELECT Em_gcrl.gzr,dm_sygdxq.xzglxq ,dm_sygdxq.dzglxq ,dm_sygdxq.DC_CH as dcch,dm_sygdxq.DC_CH as sjch,dm_sygdxq.DC_PL as pl,dm_sygdxq.DC_FD as fd,dm_bom.*
from Em_gcrl,dm_sygdxq LEFT JOIN dm_bom
on dm_bom.dcch = dm_sygdxq.DC_CH
and dm_bom.pl = dm_sygdxq.DC_PL
and dm_bom.fd = dm_sygdxq.DC_FD
where
dm_sygdxq.xzglxq = Em_gcrl.gl and
dm_sygdxq.xzglxq between '2023/08/01' and '2023/10/31'
-- dm_sygdxq.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))
ORDER BY dm_sygdxq.xzglxq,dm_sygdxq.DC_CH,dm_sygdxq.DC_PL,dm_bom.TZBH,dm_sygdxq.DC_FD
</select>
<select id="getMx" resultType="com.dsic.gj_erp.bean.jhgk.DmSygdMx">
SELECT
dcch as dcCh2,
mbch as dc_ch1,
sjch as dc_ch,
pl as dc_pl,
tzbh,
stuff((SELECT ' ' + c.FD
FROM dm_sygd_mx_lj c
WHERE c.dcch = dm_sygd_mx_lj.dcch and c.PL = dm_sygd_mx_lj.PL
group by c.FD FOR xml path ( '') ), 1, 1, ''
) AS dc_fd,
MIN(xzglxq) as jssj,
MIN(dzglxq) as dzglxq,
(CONVERT(varchar (20), GETDATE(), 20)) as gxsj,
(SELECT (CASE WHEN substring(tzbh, 5, 1) = 'X' THEN 'X' ELSE 'B' END)) as lx,
lqlb,
kw,
zl,
wpcz as wpxh,
wpgg,
ljsl,
pklx,
qbs,
pkbs,
pkcd,
dmbs,
dmcd,
hxcd,
xcgs,
xcshms as xcms,
bclqzl,
bcylzl,
bcljtlzl,
ylbhgg,
bcqpyld
,blgs as blgs
,pwgs as pwgs
,llgs as llgs
,hxgs as hxgs
, qggs as qggs
, sum(pkgs) as pkgs
, sum(dmgs) as dmgs
, sum(qgs) as qjggs
, sum(zpgs) as zpgs
from dm_sygd_mx_lj
where
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))
GROUP BY dcch, mbch, sjch, PL, tzbh
, lqlb, kw, zl, wpcz, wpgg, ljsl, pklx, qbs, pkbs
, pkcd, dmbs, dmcd, hxcd, xcgs, xcshms, bclqzl
, bcylzl, bcljtlzl, ylbhgg, bcqpyld , blgs , pwgs, llgs, hxgs, qggs
order BY jssj, dcch, pl, tzbh
</select>
<select id="getPl" resultType="com.dsic.gj_erp.bean.jhgk.dto.Pldto">
SELECT
iif(a.dc_ch is null,b.dc_ch ,a.dc_ch )as dc_ch,
iif(a.DC_FD is null,b.DC_FD ,a.DC_FD ) as DC_FD,
iif(a.dc_pl is null,b.dc_pl ,a.dc_pl ) as dc_pl,
DATEDIFF(day, b.dzjsq , a.dzglxq) as dzcz,
DATEDIFF(day, b.xzjsq , a.xzglxq) as xzcz,
a.dzglxq,a.xzglxq,b.xzjsq,b.dzjsq
from
(SELECT dm_sygdxq.dc_ch,dm_sygdxq.DC_FD,dm_sygdxq.dc_pl,dm_sygdxq.dzglxq,dm_sygdxq.xzglxq
from dm_sygdxq WHERE
dm_sygdxq.xzglxq BETWEEN #{begin} and #{end})a
FULL JOIN
(SELECT dm_czplp_new.DC_CH,dm_czplp_new.DC_fd,dm_czplp_new.DC_PL,dm_czplp_new.xzjsq,dm_czplp_new.dzjsq from dm_czplp_new WHERE
dm_czplp_new.xzjsq BETWEEN #{begin} and #{end})b
on
a.DC_CH=b.DC_CH and a.dc_pl=b.DC_PL and a.DC_fd=b.DC_fd
ORDER BY case when a.xzglxq is null then 1 else 0 end,a.xzglxq,dc_ch,dc_pl,b.xzjsq asc
</select>
<update id="setParent" >
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))
</update>
<select id="getkw" resultType="com.dsic.gj_erp.bean.jhgk.dto.Kwdto">
SELECT
dm_sygd_mx.*
, (select sum(MS_DDMXP.DHSL) as DHSL
from MS_DDJBP,
MS_DDMXP
where RTRIM(MS_DDJBP.CGFLM) = MS_DDMXP.cgflm
and RTRIM(MS_DDJBP.DDH) = MS_DDMXP.DDH
and (MS_DDJBP.DDLX) = 'B'
and MS_DDJBP.dhqdh = dm_czplp_new.dhqd
GROUP BY MS_DDJBP.CGFLM, MS_DDJBP.DDH, MS_DDJBP.ddmc
) as dhsl
, (select sum(im_crklsz.HDSL) as lhsl
from MS_DDJBP,
MS_DDMXP,
im_crklsz
where MS_DDJBP.ddmc = im_crklsz.dc_fd
and MS_DDMXP.dc_ch = im_crklsz.GCDDH
and RTRIM(MS_DDJBP.CGFLM) = MS_DDMXP.cgflm
and RTRIM(MS_DDJBP.DDH) = MS_DDMXP.DDH
and (MS_DDJBP.DDLX) = 'B'
and im_crklsz.CKH = '01'
and MS_DDJBP.dhqdh = dm_czplp_new.dhqd
and im_crklsz.CRKBS = 'RK'
and im_crklsz.HDLX <![CDATA[ <> ]]> '99'
GROUP BY MS_DDJBP.CGFLM, MS_DDJBP.DDH, MS_DDJBP.ddmc
) as lhsl
, dm_czplp_new.dhqd as dhqd
from (
SELECT
substring(dm_sygd_mx.jssj, 0, 8) as yf
, kw
, dm_sygd_mx.dc_ch as ch
, dm_sygd_mx.dc_pl as pl
, dm_sygd_mx.dc_fd as fd
, COUNT(1) as bs
, sum(blgs) as blgs
, sum(pwgs) as pwgs
, sum(llgs) as llgs
, sum(hxgs) as hxgs
, sum(qggs) as qggs
, sum(pkgs) as pkgs
, sum(dmgs) as dmgs
, sum(qgs) as qjggs
, sum(zpgs) as zpgs
from dm_sygd_mx
where dm_sygd_mx.jssj BETWEEN #{begin} and #{end}
GROUP BY substring(dm_sygd_mx.jssj, 0, 8), dm_sygd_mx.kw
, dm_sygd_mx.dc_ch
, dm_sygd_mx.dc_pl
, dm_sygd_mx.dc_fd
) dm_sygd_mx
LEFT JOIN (SELECT dm_czplp_new.dhqd, dm_czplp_new.DC_PL, dm_czplp_new.DC_CH
from dm_czplp_new
GROUP BY dm_czplp_new.DC_PL, dm_czplp_new.DC_CH, dhqd
) dm_czplp_new
on dm_czplp_new.DC_PL = dm_sygd_mx.pl
and dm_czplp_new.DC_CH = dm_sygd_mx.ch
order by dm_sygd_mx.yf
, case when dm_sygd_mx.kw is null then 1 else 0 end
,dm_sygd_mx.kw
,dm_sygd_mx.CH
,dm_sygd_mx.PL
</select>
</mapper> </mapper>

@ -63,8 +63,6 @@
<result column="qgkc_cd" property="qgkcCd"/> <result column="qgkc_cd" property="qgkcCd"/>
<result column="jssj" property="jssj"/> <result column="jssj" property="jssj"/>
<result column="jzrq" property="jzrq"/> <result column="jzrq" property="jzrq"/>
<result column="hxcd_kc" property="hxcdKc" />
<result column="qgcd_kc" property="qgcdKc" />
<result column="zt" property="zt"/> <result column="zt" property="zt"/>
<result column="xcgs" property="xcgs"/> <result column="xcgs" property="xcgs"/>
<result column="bclqzl" property="bclqzl"/> <result column="bclqzl" property="bclqzl"/>
@ -76,4 +74,88 @@
<result column="parent_id" property="parentId"/> <result column="parent_id" property="parentId"/>
</resultMap> </resultMap>
<select id="getSygdmx" resultType="com.dsic.gj_erp.bean.jhgk.DmSygdMx">
SELECT dm_sygd_mx.id,
dm_sygd_mx.parent_id,
t.DC_CH,
dm_sygd_mx.dc_ch1,
t.DC_PL,
dm_sygd_mx.LQLB,
dm_sygd_mx.tzbh,
dm_sygd_mx.wpgg,
dm_sygd_mx.wpxh,
dm_sygd_mx.hxcd,
dm_sygd_mx.qgcd,
dm_sygd_mx.qbs,
dm_sygd_mx.pklx,
dm_sygd_mx.pkcd,
dm_sygd_mx.ljsl,
dm_sygd_mx.zl,
dm_sygd_mx.lx,
dm_sygd_mx.xcms,
dm_sygd_mx.kw,
dm_sygd_mx.slrq,
dm_sygd_mx.slry,
dm_sygd_mx.pw,
dm_sygd_mx.pwry,
dm_sygd_mx.pwrq,
dm_sygd_mx.hxsb,
dm_sygd_mx.hxry,
dm_sygd_mx.hxrq,
dm_sygd_mx.qgsb,
dm_sygd_mx.qgry,
dm_sygd_mx.qgrq,
dm_sygd_mx.dmcd,
dm_sygd_mx.dmsb,
dm_sygd_mx.dmry,
dm_sygd_mx.dmrq,
dm_sygd_mx.pwsb,
dm_sygd_mx.pksb,
dm_sygd_mx.pkry,
dm_sygd_mx.pkrq,
dm_sygd_mx.DC_FD,
dm_sygd_mx.gjjs_dz,
dm_sygd_mx.gjjs_xz,
dm_sygd_mx.jsq_tlt,
dm_sygd_mx.jsq_lqb,
dm_sygd_mx.dhqd,
dm_sygd_mx.order_bs,
dm_sygd_mx.arrival_bs,
dm_sygd_mx.qy,
dm_sygd_mx.jzbs,
dm_sygd_mx.jzsb,
dm_sygd_mx.jzry,
dm_sygd_mx.qjgsb,
dm_sygd_mx.qjgry,
dm_sygd_mx.qjgrq,
dm_sygd_mx.dcCh2,
dm_sygd_mx.gjks,
dm_sygd_mx.gxsj,
dm_sygd_mx.hxkc_cd,
dm_sygd_mx.qgkc_cd,
dm_sygd_mx.jzrq,
dm_sygd_mx.zt,
dm_sygd_mx.xcgs,
dm_sygd_mx.bclqzl,
dm_sygd_mx.bcshzl,
dm_sygd_mx.bcylzl,
dm_sygd_mx.bcljtlzl,
dm_sygd_mx.bcqpyld,
dm_sygd_mx.ylbhgg,t.xqsj as jssj from
( SELECT DC_CH,DC_PL,DC_FD,tzbh,xqsj,rn FROM
( SELECT dm_qfxq.db as xqsj,dm_bom.tzbh,
dm_qfxq.DC_CH,dm_qfxq.DC_PL,dm_qfxq.DC_FD,
row_number() over(partition by dm_qfxq.DC_CH,dm_qfxq.DC_PL,dm_bom.tzbh order by dm_qfxq.db ) rn
from dm_qfxq LEFT JOIN dm_bom
on dm_bom.dcch = dm_qfxq.DC_CH
and dm_bom.pl = dm_qfxq.DC_PL
and dm_bom.fd = dm_qfxq.DC_FD
where
substring(dm_qfxq.db, 0, 8) =#{nextMonth}) r where r.rn=1
)t LEFT JOIN dm_sygd_mx
on dm_sygd_mx.dc_ch=t.DC_CH and dm_sygd_mx.dc_pl=t.DC_PL and dm_sygd_mx.tzbh=t.TZBH
order BY t.xqsj,t.DC_CH,t.DC_PL
</select>
</mapper> </mapper>

Loading…
Cancel
Save