1.设备产能加字段:生产设备标识,跨位

2.按跨位排产(多设备),反写各工序设备编号
3.修改三月滚动计划查询/排产接口,返回excel月度下发数据;因返回数据改动后,汇总接口修改
4.产能中心,取消与单个设备关联,替换为与跨位关联
5.中日程/前方钢料需求(三月),记录历史导入数据
6.前方钢料需求(三月)二次导入时,根据excel月度下发数据排期
master
xiaoning 1 year ago
parent 5ae817fa2b
commit 91d029713f

@ -307,5 +307,9 @@ public class EmSbjbb implements Serializable {
private String cndw;
private String kw;
private String scbs;//1
}

@ -88,6 +88,8 @@ public class DmSygdMx implements Serializable {
@ApiModelProperty(value = "上料日期")
private String slrq;
private String slsb;
@ApiModelProperty(value = "上料人员")
private String slry;
@ -187,5 +189,10 @@ public class DmSygdMx implements Serializable {
@TableField(exist = false)
private String endTime;
private String llsb;
private String pksb;
private String dmsb;
private String qsb;
}

@ -0,0 +1,102 @@
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 2024-04-14
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="DmSygdxqOld对象", description="")
public class DmSygdxqOld implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "分段")
@TableField("DC_FD")
private String dcFd;
@ApiModelProperty(value = "总段号")
private String zdh;
@ApiModelProperty(value = "大组极重")
private Double dzjz;
@ApiModelProperty(value = "总装部最新分段需求期")
private String zxfdxq;
@ApiModelProperty(value = "钢料需求")
private String xzglxq;
@ApiModelProperty(value = "X大板")
private String xdb;
@ApiModelProperty(value = "X数控件")
private String xskj;
@ApiModelProperty(value = "X平铁")
private String xpt;
@ApiModelProperty(value = "X压弯")
private String xyw;
@ApiModelProperty(value = "X型材")
private String xxc;
@ApiModelProperty(value = "X二次装T型材")
private String xtxc;
@ApiModelProperty(value = "D曲板")
private String dqb;
@ApiModelProperty(value = "D型材T")
private String dxc;
@ApiModelProperty(value = "D散件")
private String dsj;
@ApiModelProperty(value = "D大板")
private String ddb;
@ApiModelProperty(value = "导入人")
private String drr;
@ApiModelProperty(value = "导入日期")
private String drrq;
@ApiModelProperty(value = "导入次数")
private Integer drcs;
@ApiModelProperty(value = "原钢料需求")
private String xzglxqOld;
@ApiModelProperty(value = "需求状态0 正常 1提前 2延期")
private String xqzt;
@ApiModelProperty(value = "大组钢料需求期")
private String dzglxq;
private String dzglxqOld;
private String dcCh;
private String dcPl;
@TableId(value = "id", type = IdType.ASSIGN_UUID)
private String id;
}

@ -0,0 +1,92 @@
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;
@Data
public class DmYdjhxf implements Serializable {
private static final long serialVersionUID=1L;
private String dcCh;
private String dcPl;
private String dcFd;
@ApiModelProperty(value = "板数")
private Double bs;
@ApiModelProperty(value = "上料")
private String sl;
@ApiModelProperty(value = "型材抛丸")
private String xcpw;
@ApiModelProperty(value = "抛丸")
private String pw;
@ApiModelProperty(value = "一垮龙门板数")
private String yklm;
@ApiModelProperty(value = "一垮数控板数")
private String yksk;
@ApiModelProperty(value = "坡口切割结束")
private String ykpkjs;
@ApiModelProperty(value = "二垮数控板数")
private String eksk;
@ApiModelProperty(value = "数控切割开始")
private String ekskks;
@ApiModelProperty(value = "二垮数控板数")
private String eksk2;
@ApiModelProperty(value = "数控切割开始")
private String ekskks2;
@ApiModelProperty(value = "坡口切割结束")
private String ekpkjs;
@ApiModelProperty(value = "三垮数控板数")
private String sksk;
@ApiModelProperty(value = "数控切割开始")
private String skskqgks;
@ApiModelProperty(value = "坡口切割结束")
private String skpkjs;
@ApiModelProperty(value = "三垮平铁板数")
private String skpt;
@ApiModelProperty(value = "平铁切割开始")
private String ptks;
@ApiModelProperty(value = "平铁切割结束")
private String ptjs;
@ApiModelProperty(value = "曲平铁转结束")
private String qpt_zjs;
@ApiModelProperty(value = "曲平铁结束")
private String qptjs;
@ApiModelProperty(value = "曲外板结束")
private String qwbjs;
@ApiModelProperty(value = "组立")
private String zl;
@ApiModelProperty(value = "数控板数")
private String skbs;
@ApiModelProperty(value = "数控切割开始")
private String skqgks;
@ApiModelProperty(value = "数控板数")
private String skbs2;
@ApiModelProperty(value = "数控切割开始")
private String skqgks2;
@ApiModelProperty(value = "坡口切割结束")
private String pkqgjs;
@ApiModelProperty(value = "面板挤边")
private String mbjb;
@ApiModelProperty(value = "七垮型材米数")
private String qkxcms;
@ApiModelProperty(value = "型材面板")
private String xcmb;
@ApiModelProperty(value = "分段需求")
private String fdxq;
@ApiModelProperty(value = "光电结束")
private String gdjs;
@ApiModelProperty(value = "备注")
private String bz;
}

@ -0,0 +1,136 @@
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 2024-04-14
*/
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="DmZrcjhOld对象", description="")
public class DmZrcjhOld implements Serializable {
private static final long serialVersionUID=1L;
@ApiModelProperty(value = "船号")
@TableField("DC_CH")
private String dcCh;
@ApiModelProperty(value = "区域")
private String qy;
@ApiModelProperty(value = "总段号")
private String zdh;
@ApiModelProperty(value = "预组段")
private String yzd;
@ApiModelProperty(value = "分段号")
@TableField("DC_FD")
private String dcFd;
@ApiModelProperty(value = "重量")
@TableField("ZL")
private Double zl;
@ApiModelProperty(value = "批量号")
@TableField("DC_PL")
private String dcPl;
@ApiModelProperty(value = "大组开始")
private String kssjDz;
@ApiModelProperty(value = "钢加大组结束")
private String gjjsDz;
@ApiModelProperty(value = "小组结束")
private String jssjXz;
@ApiModelProperty(value = "小组周期")
private String xzzq;
@ApiModelProperty(value = "小组开始")
private String kssjXz;
@ApiModelProperty(value = "线表重量")
private Double xbzl;
@ApiModelProperty(value = "批量表(钢加大组结束)")
private String gjjsDzPl;
@ApiModelProperty(value = "时间差L-P")
private String sjcLp;
@ApiModelProperty(value = "钢加小组结束")
private String gjjsXz;
@ApiModelProperty(value = "批量表(钢加小组结束)")
private String gjjsXzPl;
@ApiModelProperty(value = "时间差R-S")
private String sjcRs;
@ApiModelProperty(value = "钢加开始")
private String gjks;
@ApiModelProperty(value = "批量表(钢加开始)")
private String gjksPl;
@ApiModelProperty(value = "时间差U-V")
private String sjcUv;
@ApiModelProperty(value = "套料图下发")
private String xfqTlt;
@ApiModelProperty(value = "套料图接收")
private String jsqTlt;
@ApiModelProperty(value = "板材领取表下发")
private String xfqLqb;
@ApiModelProperty(value = "板材领取表接收")
private String jsqLqb;
@ApiModelProperty(value = "零件配套表下发")
private String xfqPtb;
@ApiModelProperty(value = "零件配套表接收")
private String jsqPtb;
@ApiModelProperty(value = "订货清单号")
private String dhqd;
@ApiModelProperty(value = "订货清单下发")
private String xfqDhqd;
@ApiModelProperty(value = "实际订货日期")
private String sjdhq;
@ApiModelProperty(value = "板材计划到齐")
private String bcdq;
@ApiModelProperty(value = "状态; 0编辑1提交2审核默认为0")
private String zt;
private String bzrq;
@TableId(value = "xh", type = IdType.ASSIGN_UUID)
private String xh;
private String bzr;
}

@ -11,4 +11,6 @@ public class EmSbjbbBean {
private String szcs;
@ApiModelProperty(value = "供应商")
private String gysbm;
private String scbs;
}

@ -2,6 +2,7 @@ package com.dsic.gj_erp.controller.jhgk;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.excel.EasyExcel;
@ -83,6 +84,7 @@ public class DmQfxqController {
EasyExcel.read(file.getInputStream(), GdxqExcel1.class, objectListener1).sheet(1).headRowNumber(1).doRead();
List<GdxqExcel1> objList1 = objectListener1.getObjectList();
List<DmQfxq> list = BeanUtil.copyToList(objList, DmQfxq.class);
List<DmQfxq> list1 = BeanUtil.copyToList(objList1, DmQfxq.class);
String username=(String) req.getAttribute("yhms");
@ -91,15 +93,15 @@ public class DmQfxqController {
List<DmQfxq> list2=new ArrayList<>(list);
if (list1.size()>0){
list1= service.saveDzList(list1,username,day);
for (DmQfxq qfxq : list1) {
for (DmQfxq dmQfxq : list) {
if (qfxq.getId().equals(dmQfxq.getId())){
for (DmQfxq qfxq : list1) {//循环大组
for (DmQfxq dmQfxq : list) {//循环小组
if (qfxq.getId().equals(dmQfxq.getId())){//小组有
int index= list.indexOf(dmQfxq);
list2.set(index,qfxq);
}else {
list2.add(qfxq);
break;
}
}
list2.add(qfxq);
}
}
service.generateYdjh(list2);

@ -14,6 +14,7 @@ import com.dsic.gj_erp.bean.jcsj.EmSbjbb;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygd;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjhxf;
import com.dsic.gj_erp.handler.ComputePlan;
import com.dsic.gj_erp.service.jcsj.EmGcrlService;
import com.dsic.gj_erp.service.jcsj.EmSbcnpService;
@ -58,22 +59,23 @@ public class DmSygdMxController {
@RequestMapping("/getList")
@AuthFunction
public ResultBean getList(@RequestBody DmSygdMx sygd){
List<DmSygdMx> list= service.list(new QueryWrapper<DmSygdMx>()
.eq(StrUtil.isNotEmpty(sygd.getDcCh()),"dc_ch",sygd.getDcCh())
.eq(StrUtil.isNotEmpty(sygd.getDcPl()),"dc_pl",sygd.getDcPl())
.ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"jssj",sygd.getBeginTime())
.le(StrUtil.isNotEmpty(sygd.getEndTime()),"jssj",
DateUtil.endOfMonth(DateUtil.parseDate(sygd.getEndTime())).toString("yyyy/MM/dd"))
.orderByAsc("jssj,dc_ch,dc_pl")
);
// List<DmSygdMx> list= service.list(new QueryWrapper<DmSygdMx>()
// .eq(StrUtil.isNotEmpty(sygd.getDcCh()),"dc_ch",sygd.getDcCh())
// .eq(StrUtil.isNotEmpty(sygd.getDcPl()),"dc_pl",sygd.getDcPl())
// .ge(StrUtil.isNotEmpty(sygd.getBeginTime()),"jssj",sygd.getBeginTime())
// .le(StrUtil.isNotEmpty(sygd.getEndTime()),"jssj",
// DateUtil.endOfMonth(DateUtil.parseDate(sygd.getEndTime())).toString("yyyy/MM/dd"))
// .orderByAsc("jssj,dc_ch,dc_pl")
// );
Map map=new HashMap();
if (list.size()>0){
String beginTime=list.get(0).getJssj();
String endTime=list.get(list.size()-1).getJssj();
List<EmGcrl> emGcrls= gcrlService.list(new QueryWrapper<EmGcrl>().select("gl").between("gl",beginTime,endTime).eq("xxr","0"));
List<String> gcrl = emGcrls.stream().map(EmGcrl::getGl).collect(Collectors.toList());
map.put("gcrl",gcrl);
}
// if (list.size()>0){
// String beginTime=list.get(0).getJssj();
// String endTime=list.get(list.size()-1).getJssj();
// List<EmGcrl> emGcrls= gcrlService.list(new QueryWrapper<EmGcrl>().select("gl").between("gl",beginTime,endTime).eq("xxr","0"));
// List<String> gcrl = emGcrls.stream().map(EmGcrl::getGl).collect(Collectors.toList());
// map.put("gcrl",gcrl);
// }
List<DmYdjhxf> list= this.service.tqSygd1(sygd.getBeginTime(),sygd.getEndTime());
map.put("list",list);
return new ResultBean(map);
}
@ -86,16 +88,20 @@ public class DmSygdMxController {
@RequestMapping("/symxhz")
@AuthFunction
public ResultBean symxhz(@RequestBody List<DmSygdMx> list){
public ResultBean symxhz(@RequestBody Map<String,String> mapObj){
Map<String,Object> map=new HashMap<>();
//1.根据上料时间 从近到远排序
//// 1.根据上料时间 从近到远排序
List<DmSygdMx> list=service.list(new QueryWrapper<DmSygdMx>().between("jssj",mapObj.get("beginTime"),mapObj.get("endTime")));
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);
// //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);
String year = mapObj.get("beginTime").substring(0, 4);
String begin = mapObj.get("beginTime").substring(5, 7);
String end = mapObj.get("endTime").substring(5, 7);
map.put("xbList",service.getXBList(list,year,begin,end));
map.put("plList",service.getPl(list.get(0).getJssj(),list.get(list.size() - 1).getJssj()));
@ -123,14 +129,16 @@ public class DmSygdMxController {
@AuthFunction
public ResultBean saveList( @RequestBody List<DmSygdMx> list ){
service.saveBatch(list);
//TODO 重新排产
return new ResultBean();
}
@RequestMapping("/tqSygd")
@AuthFunction
public ResultBean tqSygd(@RequestBody List<DmSygdMx> list){
return service.tqSygd();
}
}

@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.dsic.gj_erp.annotation.AuthFunction;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmQfxq;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel;
import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel1;
@ -70,11 +71,12 @@ public class DmSygdxqController {
List<GdxqExcel1> objList1 = objectListener1.getObjectList();
List<DmSygdxq> list = BeanUtil.copyToList(objList, DmSygdxq.class);
List<DmSygdxq> list1 = BeanUtil.copyToList(objList1, DmSygdxq.class);
String username=(String) req.getAttribute("yhms");
String day=DateUtil.format(DateUtil.date(), "yyyy/MM/dd");
service.saveXzList(list,username,day);
service.saveDzList(list1,username,day);
sygdMxService.sygdPC();
return new ResultBean();
}

@ -37,7 +37,7 @@ public class ComputePlan {
List<EmGcrl> gcrlList;
Map<String,List<RealCapacity>> realCapacityMap;
Map<String,Map<String,List<RealCapacity>>> realCapacityMap;
List<EmSbjbb> deviceList;
List<EmSbcnp> sbcnList;
@ -65,7 +65,7 @@ public class ComputePlan {
* @param to
*/
public static void computeRealCapacity(Date from, Date to) {
Map<String,List<RealCapacity>> _realCapacity = instance().realCapacityMap = new TreeMap<>();
Map<String,Map<String,List<RealCapacity>>> _realCapacity = instance().realCapacityMap = new TreeMap<>();
//加载工厂日历
initGcrl();
@ -93,23 +93,29 @@ public class ComputePlan {
//日可用设备
for (int i = 0; i < realDeviceList.getJSONArray(gcrl.getGl()).size(); i++) {
JSONObject deviceJson = realDeviceList.getJSONArray(gcrl.getGl()).getJSONObject(i);
//日实际产能
//todo 设备和产能对应关系,找出当前设备产能 (日期 产能 工序 图纸名称)
RealCapacity realCapacity = initRealCapacity(gcrl, deviceJson);
if (realCapacity.getCapacity()==0){
continue;
}
String kwgx= realCapacity.getKw()+realCapacity.getGx();
if (_realCapacity.containsKey(gcrl.getGl())) {
_realCapacity.get(gcrl.getGl()).
// put(realCapacity.getDeviceName(), realCapacity.getCapacity());
add(realCapacity);
if(_realCapacity.get(gcrl.getGl()).containsKey(kwgx)){
_realCapacity.get(gcrl.getGl()).get(kwgx).add(realCapacity);
}else {
List<RealCapacity> list=new ArrayList<>();
list.add(realCapacity);
_realCapacity.get(gcrl.getGl()).put(kwgx, list);
}
} else {
// JSONObject object = new JSONObject();
// object.put(realCapacity.getDeviceName(), realCapacity.getCapacity());
Map<String,List<RealCapacity>> kwANDgX= new TreeMap<>();
List<RealCapacity> list=new ArrayList<>();
list.add(realCapacity);
_realCapacity.put(gcrl.getGl(), list);
kwANDgX.put(kwgx, list);
_realCapacity.put(gcrl.getGl(), kwANDgX);
}
}
});
@ -230,7 +236,7 @@ public class ComputePlan {
*
*/
public static void initDevice() {
instance().deviceList = getBean(EmSbjbbService.class).list(Wrappers.<EmSbjbb>lambdaQuery().like(EmSbjbb::getSzcs,"FP"));
instance().deviceList = getBean(EmSbjbbService.class).list(Wrappers.<EmSbjbb>lambdaQuery().like(EmSbjbb::getScbs,"1"));
}
public synchronized static ComputePlan instance() {
@ -272,6 +278,7 @@ public class ComputePlan {
capacity.setDeviceName(deviceJson.getString("sbbh"));
capacity.setDate(gcrl.getGl());
capacity.setGx(deviceJson.getString("gx"));
capacity.setKw(deviceJson.getString("kw"));
return capacity;
}

@ -11,4 +11,5 @@ public class RealCapacity {
String date;
Double capacity;
String gx;
String kw;
}

@ -4,6 +4,7 @@ package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmSygdMxLj;
import com.dsic.gj_erp.bean.jhgk.DmYdjhxf;
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;
@ -32,4 +33,6 @@ public interface DmSygdMxMapper extends BaseMapper<DmSygdMx> {
List<Pldto> updateQgjssj( List<DmSygdMxLj> ljList);
List<Object> cgjhdhqk(Map<String,Object> map);
List<DmYdjhxf> tqSygd1(@Param("begin") String begin,@Param("end")String end);
}

@ -2,7 +2,11 @@ package com.dsic.gj_erp.mapper.jhgk;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* <p>

@ -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.DmSygdxqOld;
/**
* <p>
* Mapper
* </p>
*
* @author xn
* @since 2024-04-14
*/
public interface DmSygdxqOldMapper extends BaseMapper<DmSygdxqOld> {
}

@ -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.DmZrcjhOld;
/**
* <p>
* Mapper
* </p>
*
* @author xn
* @since 2024-04-14
*/
public interface DmZrcjhOldMapper extends BaseMapper<DmZrcjhOld> {
}

@ -51,7 +51,10 @@ public class EmSbjbbServiceImpl extends ServiceImpl<EmSbjbbMapper, EmSbjbb> impl
if(StringUtils.isNotEmpty(gysbm)){
queryWrapper.eq("GYSBM",gysbm);
}
queryWrapper.like("SZCS","FP%");
// queryWrapper.like("SZCS","FP%");
if(StringUtils.isNotEmpty(emSbjbbBean.getScbs())){
queryWrapper.eq("scbs",emSbjbbBean.getScbs());
}
queryWrapper.orderByAsc("szcs");
List<EmSbjbb> emSbjbbs=emSbjbbMapper.selectList(queryWrapper);
return emSbjbbs;

@ -3,6 +3,7 @@ package com.dsic.gj_erp.service.jhgk;
import com.baomidou.mybatisplus.extension.service.IService;
import com.dsic.gj_erp.bean.ResultBean;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmYdjhxf;
import com.dsic.gj_erp.bean.jhgk.dto.*;
import org.springframework.web.bind.annotation.RequestBody;
@ -27,6 +28,7 @@ public interface DmSygdMxService extends IService<DmSygdMx> {
List<Tzjhdto> getTZList(List<DmSygdMx> list);
List<Dhdto> getDhList(List<DmSygdMx> list);
ResultBean tqSygd();
List<DmYdjhxf> tqSygd1(String begin, String end);
Object cgjhdhqk(Map<String,Object> map);
}

@ -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.DmSygdxqOld;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2024-04-14
*/
public interface DmSygdxqOldService extends IService<DmSygdxqOld> {
}

@ -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.DmZrcjhOld;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2024-04-14
*/
public interface DmZrcjhOldService extends IService<DmZrcjhOld> {
}

@ -92,6 +92,7 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
}else {
l.setDrr(username);
l.setDrrq(day);
l.setXqzt("0");
this.save(l);
list1.add(l);
}
@ -138,6 +139,7 @@ public class DmQfxqServiceImpl extends ServiceImpl<DmQfxqMapper, DmQfxq> impleme
}else {
l.setDrr(username);
l.setDrrq(day);
l.setXqzt("0");
this.save(l);
list1.add(l);
}

@ -89,8 +89,8 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
// String begin=DateUtil.format(DateUtil.nextMonth(),"yyyy/MM/01");
// String end =DateUtil.format(DateUtil.endOfMonth(DateUtil.offsetMonth(DateUtil.date(),3)),"yyyy/MM/dd");
//测试日期
String begin = "2024/04/01";
String end = "2024/05/01";
String begin = "2023/08/01";
String end = "2023/10/31";
//todo 零件
ljService.remove(new QueryWrapper<DmSygdMxLj>().between("xzglxq", begin, end));
//todo 三月滚动明细
@ -111,7 +111,10 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
ypc(mxList);
this.saveBatch(mxList);
baseMapper.setParent(begin, end);
ResultBean r = new ResultBean(mxList);
List<DmYdjhxf> list= tqSygd1(begin,end);
// ResultBean r = new ResultBean(mxList);
ResultBean r = new ResultBean(list);
r.setSuccess(true);
return r;
}
@ -125,7 +128,7 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
// Map<String, List<DmSygdMx>> mxMap = list.stream().filter(l->StrUtil.isNotEmpty(l.getTzbh())).collect(Collectors.groupingBy(l -> l.getKw() + l.getZl()));
ComputePlan c=ComputePlan.instance();
c.computeRealCapacity(DateUtil.beginOfMonth(DateUtil.date()), DateUtil.endOfMonth(DateUtil.date()));
Map<String,List<RealCapacity>> rel=c.getRealCapacityMap();
Map<String,Map<String,List<RealCapacity>>> rel=c.getRealCapacityMap();
//加工工序list
List<EmSbcnp> sbcnp =c.getSbcnList();
@ -146,48 +149,65 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
* @param l
* @param list
*/
public void jggx(Map<String,List<RealCapacity>> rel,DmSygdMx l,List<EmSbcnp> list){
public void jggx( Map<String,Map<String,List<RealCapacity>>> rel,DmSygdMx l,List<EmSbcnp> list){
String date="";
Map<String,String> map=new TreeMap<>();
for (EmSbcnp cn : list) {
//上料
if (cn.getGx().equals("19")) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date);
map=xhcn(rel,null,cn.getGx(),1, date);
date=map.get("jgsj");
l.setSlrq(date);
l.setSlsb(map.get("sbbh"));
}
//抛丸
if (cn.getGx().equals("20")) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date);
map=xhcn(rel,null,cn.getGx(),1, date);
date=map.get("jgsj");
l.setPwrq(date);
l.setPwsb(map.get("sbbh"));
}
//理料
if (cn.getGx().equals("21")) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),1, date);
map=xhcn(rel,null,cn.getGx(),1, date);
date=map.get("jgsj");
l.setLlrq(date);
l.setLlsb(map.get("sbbh"));
}
// 划线
if ("01,02".indexOf(cn.getGx()) > -1 && l.getHxcd()>0) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getHxcd(), date);
map=xhcn(rel,cn.getKw(),cn.getGx(),1, date);
date=map.get("jgsj");
l.setHxrq(date);
l.setHxsb(map.get("sbbh"));
}
//切割
if ("03,04,05,06,07".indexOf(cn.getGx()) > -1 && l.getQgcd()>0) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getQgcd(), date);
map=xhcn(rel,cn.getKw(),cn.getGx(),1, date);
date=map.get("jgsj");
l.setQgrq(date);
l.setQgsb(map.get("sbbh"));
}
// 坡口
if (ObjectUtil.isNotEmpty(l.getPkcd()) && ("08,10".indexOf(cn.getGx()) > 0)) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getPkcd(), date);
map=xhcn(rel,cn.getKw(),cn.getGx(),1, date);
date=map.get("jgsj");
l.setPkrq(date);
l.setPksb(map.get("sbbh"));
}
// 打磨
if (ObjectUtil.isNotEmpty(l.getDmcd()) && ("16,13".indexOf(cn.getGx()) > 0)) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getDmcd(), date);
map=xhcn(rel,cn.getKw(),cn.getGx(),1, date);
date=map.get("jgsj");
l.setDmrq(date);
l.setDmsb(map.get("sbbh"));
}
// 曲 (个)
if (StrUtil.isNotEmpty(l.getQbs()) && cn.getGx().equals("18")) {
date=xhcn(rel,cn.getSbbh(),cn.getGx(),l.getLjsl(), date);
map=xhcn(rel,cn.getKw(),cn.getGx(),1, date);
date=map.get("jgsj");
l.setQjgrq(date);
l.setQsb(map.get("sbbh"));
}
// 号料 手工切割 倒棱 切端头 自由边 预组
@ -197,38 +217,56 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
/**
*
* @param rel ,
* @param sbbh
* @param kw
* @param gx
* @param gzl
* @param kssj
* @return
*/
public String xhcn(Map<String,List<RealCapacity>> rel,String sbbh,String gx,double gzl ,String kssj){
String jgsj="";
if (gzl==0)return jgsj;
public Map xhcn(Map<String,Map<String,List<RealCapacity>>> rel,String kw,String gx,double gzl ,String kssj){
Map<String,String> map=new TreeMap<>();
map.put("jgsj","");
map.put("sbbh","");
if (gzl==0)return map;
String kwAndGx=kw+gx;
for (String date:rel.keySet()){
if (date.compareTo(kssj)>=0||StrUtil.isEmpty(kssj)){
for (RealCapacity l:rel.get(date)){
if (l.getDeviceName().equals(sbbh)&&l.getGx().equals(gx)){
if (l.getCapacity()>=gzl){
int index = rel.get(date).indexOf(l);
l.setCapacity(l.getCapacity()-gzl);
rel.get(date).set(index,l);
jgsj=l.getDate();
return jgsj;
}else if (l.getCapacity()!=0.0){
gzl=gzl-l.getCapacity();
l.setCapacity(new Double(0.0));
int index = rel.get(date).indexOf(l);
rel.get(date).set(index,l);
break;
}
if (StrUtil.isEmpty(kssj)||date.compareTo(kssj)>=0){
//日期下 跨位+工序分组
Map<String,List<RealCapacity>> kwMap= rel.get(date);
if (ObjectUtil.isEmpty(kwMap.get(kwAndGx)))break;
for (RealCapacity l : kwMap.get(kwAndGx)) {
if (l.getCapacity()>=gzl){
int index = rel.get(date).get(kwAndGx).indexOf(l);
l.setCapacity(l.getCapacity()-gzl);
rel.get(date).get(kwAndGx).set(index,l);
map.put("jgsj",l.getDate());
map.put("sbbh",l.getDeviceName());
return map;
}else if (l.getCapacity()!=0.0){
gzl=gzl-l.getCapacity();
l.setCapacity(new Double(0.0));
int index = rel.get(date).get(kwAndGx).indexOf(l);
rel.get(date).get(kwAndGx).set(index,l);
map.put("jgsj",l.getDate());
map.put("sbbh",l.getDeviceName());
// break;
}
}
// for (String kwAndGx :kwMap.keySet()){
// if (kwAndGx.equals(kw+gx)){
// // 设备 list
// }
// }
// for (RealCapacity l:rel.get(date)){
// //设备 改为 跨位
// if (l.getKw().equals(kw)&&l.getGx().equals(gx)){
//
// }
// }
}
}
return jgsj;
return map;
}
@ -762,4 +800,45 @@ public class DmSygdMxServiceImpl extends ServiceImpl<DmSygdMxMapper, DmSygdMx> i
sygdService.saveBatch(sygdList);
return new ResultBean(sygdList);
}
@Transactional
public List<DmYdjhxf> tqSygd1(String begin,String end){
List<DmYdjhxf> list= baseMapper.tqSygd1(begin,end);
List<DmYdjhxf> list2=new ArrayList<>();
//1行分为两行
for (DmYdjhxf l : list) {
DmYdjhxf ydjhxf1=new DmYdjhxf();//第二行
ydjhxf1.setDcCh(l.getDcCh());
ydjhxf1.setDcPl(l.getDcPl());
String[] fds= l.getDcFd().split(" ");
double count= fds.length%2;
int index;
if (count>0){
index= (fds.length/2)+1;
}else {
index= fds.length/2;
}
String fd1= Arrays.toString(Arrays.copyOfRange(fds, 0, index)).replace(","," ");// 截取索引0包括到索引index不包括的元素
String fd2= Arrays.toString(Arrays.copyOfRange(fds, index, fds.length)).replace(","," ");
l.setDcFd(fd1.substring(1,fd1.lastIndexOf("]")));
ydjhxf1.setDcFd(fd2.substring(1,fd2.lastIndexOf("]")));
ydjhxf1.setEksk(l.getEksk2());
ydjhxf1.setEkskks(l.getEkskks2());
if (StrUtil.isNotEmpty(l.getSkbs())){
l.setZl("X");//4跨普通板
}
if (StrUtil.isNotEmpty(l.getSkbs2())){
ydjhxf1.setZl("Z");//2跨T型材腹板
}
ydjhxf1.setSkbs(l.getSkbs2());
ydjhxf1.setSkqgks(l.getSkqgks2());
list2.add(l);
list2.add(ydjhxf1);
}
return list2;
}
}

@ -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.DmSygdxqOld;
import com.dsic.gj_erp.mapper.jhgk.DmSygdxqOldMapper;
import com.dsic.gj_erp.service.jhgk.DmSygdxqOldService;
import org.springframework.stereotype.Service;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2024-04-14
*/
@Service
public class DmSygdxqOldServiceImpl extends ServiceImpl<DmSygdxqOldMapper, DmSygdxqOld> implements DmSygdxqOldService {
}

@ -1,13 +1,23 @@
package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jcsj.DmBom;
import com.dsic.gj_erp.bean.jhgk.DmSygdMx;
import com.dsic.gj_erp.bean.jhgk.DmSygdxq;
import com.dsic.gj_erp.bean.jhgk.DmSygdxqOld;
import com.dsic.gj_erp.mapper.jhgk.DmSygdxqMapper;
import com.dsic.gj_erp.service.jcsj.DmBomService;
import com.dsic.gj_erp.service.jhgk.DmSygdMxService;
import com.dsic.gj_erp.service.jhgk.DmSygdxqOldService;
import com.dsic.gj_erp.service.jhgk.DmSygdxqService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -24,6 +34,12 @@ import java.util.List;
@Service
public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> implements DmSygdxqService {
@Autowired
DmSygdxqOldService oldService;
@Autowired
DmSygdMxService sygdMxService;
@Autowired
DmBomService bomService;
@Override
@Transactional
public void saveXzList(List<DmSygdxq> list,String username,String day){
@ -35,6 +51,9 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
.eq("DC_FD",l.getDcFd())
);
if (ObjUtil.isNotEmpty(sygdxq)){
//存进备份表
DmSygdxqOld old= BeanUtil.copyProperties(sygdxq, DmSygdxqOld.class);
oldService.save(old);
l.setDrcs(sygdxq.getDrcs()+1);
l.setXzglxqOld(sygdxq.getXzglxq());
l.setDrr(username);
@ -63,13 +82,13 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
.eq("dc_pl",l.getDcPl())
.eq("DC_FD",l.getDcFd())
);
//todo 修正三月滚动
correctSygdmx(l.getDcCh(),l.getDcPl(),l.getDcFd(),l.getXzglxq());
}else {
l.setDrr(username);
l.setDrrq(day);
this.save(l);
}
});
}
@ -105,11 +124,30 @@ public class DmSygdxqServiceImpl extends ServiceImpl<DmSygdxqMapper, DmSygdxq> i
this.save(l);
}
});
}
//零件信息
public void generateLjxx(List<DmSygdxq> list){
public void correctSygdmx(String ch,String pl,String fd,String xqsj){
//根据:本次导入的三月需求期 提取BOM 生成三月需求零件信息
List<DmSygdMx> list= sygdMxService.list(new QueryWrapper<DmSygdMx>()
.eq("dc_ch",ch)
.eq("dc_pl",pl)
.in("tzbh"," SELECT dm_bom.tzbh FROM dm_bom WHERE dm_bom.dcch='"+ch+"' and dm_bom.pl='"+pl+"' and dm_bom.fd='"+fd+"'"));
DateTime dateTime= DateUtil.parse(xqsj,"yyyy/MM/dd");
list.forEach(l->{
l.setJssj(xqsj);
l.setSlrq(DateUtil.offsetDay(dateTime,-9).toString());//8
if (l.getKw().equals("16")){//型材
l.setPwrq(DateUtil.offsetDay(dateTime,-5).toString());//4
}else {
l.setPwrq(DateUtil.offsetDay(dateTime,-8).toString());//7
}
l.setHxrq(DateUtil.offsetDay(dateTime,-3).toString());//2
l.setQgrq(DateUtil.offsetDay(dateTime,-3).toString());//2
sygdMxService.save(l);
});
}
}

@ -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.DmZrcjhOld;
import com.dsic.gj_erp.mapper.jhgk.DmZrcjhOldMapper;
import com.dsic.gj_erp.service.jhgk.DmZrcjhOldService;
import org.springframework.stereotype.Service;
/**
* <p>
*
* </p>
*
* @author xn
* @since 2024-04-14
*/
@Service
public class DmZrcjhOldServiceImpl extends ServiceImpl<DmZrcjhOldMapper, DmZrcjhOld> implements DmZrcjhOldService {
}

@ -1,16 +1,16 @@
package com.dsic.gj_erp.service.jhgk.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.poi.excel.ExcelReader;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsic.gj_erp.bean.jhgk.DmJtsyjh;
import com.dsic.gj_erp.bean.jhgk.DmXbjh;
import com.dsic.gj_erp.bean.jhgk.DmZrcjh;
import com.dsic.gj_erp.bean.jhgk.*;
import com.dsic.gj_erp.mapper.jhgk.DmZrcjhMapper;
import com.dsic.gj_erp.service.jhgk.DmZrcjhOldService;
import com.dsic.gj_erp.service.jhgk.DmZrcjhService;
import com.dsic.gj_erp.util.ExcelUtil;
import com.google.common.collect.Lists;
@ -43,6 +43,9 @@ public class DmZrcjhServiceImpl extends ServiceImpl<DmZrcjhMapper, DmZrcjh> impl
@Resource
ModelMapper modelMapper;
@Resource
DmZrcjhOldService oldService;
@Override
public List<DmZrcjh> getList(JSONObject json) {
QueryWrapper<DmZrcjh> queryWrapper = new QueryWrapper<>();
@ -97,6 +100,9 @@ public class DmZrcjhServiceImpl extends ServiceImpl<DmZrcjhMapper, DmZrcjh> impl
queryWrapper.eq("DC_FD", dmZrcjh.getDcFd());
DmZrcjh dmZrcjhOne = dmZrcjhMapper.selectOne(queryWrapper);
if (ObjectUtil.isNotEmpty(dmZrcjhOne)) {
//存进备份表
DmZrcjhOld old= BeanUtil.copyProperties(dmZrcjhOne, DmZrcjhOld.class);
oldService.save(old);
String dmZrcjhOneBzr = dmZrcjhOne.getBzr();
String dmZrcjhOneBzrq = dmZrcjhOne.getBzrq();
if (dmZrcjhOneBzr.contains(bzr)) {

@ -177,21 +177,25 @@
xcgs,
xcshms as xcms,
bclqzl,
bcshzl,
bcylzl,
bcljtlzl,
ylbhgg,
-- bcshzl,
-- bcylzl,
-- bcljtlzl,
-- ylbhgg,
bcqpyld,
hxkc_cd,
qgkc_cd
from dm_sygd_mx_lj
where
dm_sygd_mx_lj.xzglxq between #{begin} and #{end}
dm_sygd_mx_lj.xzglxq between #{begin} and #{end}
GROUP BY dcch, mbch, sjch, PL, tzbh
, lqlb, kw, zl, wpcz, wpgg, ljsl, pklx, qbs, pkbs
, pkcd, dmbs, dmcd, hxcd,qgcd, xcgs, xcshms, bclqzl
,bcshzl, bcylzl, bcljtlzl, ylbhgg, bcqpyld,hxkc_cd,
, pkcd, dmbs, dmcd, hxcd,qgcd, xcgs, xcshms, bclqzl,
-- bcshzl, 板材实耗重量
-- bcylzl,板材余料重量
-- bcljtlzl, -- 板材零件套料重量
-- ylbhgg,
bcqpyld,hxkc_cd,
qgkc_cd
order BY jssj, dcch, pl, tzbh
</select>
@ -408,4 +412,103 @@
and MS_DDJBP.sxrq&lt;=#{jsrq}
</if>
</select>
<select id="tqSygd1" resultType="com.dsic.gj_erp.bean.jhgk.DmYdjhxf">
SELECT aa.dc_ch,aa.dc_pl,aa.dc_fd,
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw in ('7','8','9','5','6','15','11','14')
GROUP BY dm_sygd_mx.tzbh
)a) as 'bs',
(SELECT a.slrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by slrq ) rn,DC_CH,DC_PL,slrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl
)a WHERE rn=1) as 'sl',
(SELECT a.slrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by slrq ) rn,DC_CH,DC_PL,slrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='16'
)a WHERE rn=1) as 'xcpw',
(SELECT a.pwrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by pwrq ) rn,DC_CH,DC_PL,pwrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw!='16'
)a WHERE rn=1) as 'pw',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='7'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'yklm',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='8'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'yksk',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='9'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'eksk',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='9'
)a WHERE rn=1) as 'ekskks',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='5'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'eksk2',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='5'
)a WHERE rn=1) as 'ekskks2',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='14'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'sksk',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='14'
)a WHERE rn=1) as 'skskqgks',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='6'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'skpt',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='6'
)a WHERE rn=1) as 'ptks',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='15'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'skbs',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='15'
)a WHERE rn=1) as 'skqgks',
(SELECT COUNT(c) from
( SELECT COUNT(1) as c
FROM dm_sygd_mx WHERE dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.bcqpyld is not null
and dm_sygd_mx.kw='11'
GROUP BY dm_sygd_mx.tzbh
)a ) as 'skbs2',
(SELECT a.qgrq from
( SELECT row_number() over(partition by DC_CH,DC_PL order by qgrq ) rn,DC_CH,DC_PL,qgrq from dm_sygd_mx WHERE
dm_sygd_mx.dc_ch=aa.dc_ch and dm_sygd_mx.dc_pl=aa.dc_pl and dm_sygd_mx.kw='11'
)a WHERE rn=1) as 'skqgks2'
from (
SELECT dc_ch,dc_pl,dc_fd from dm_sygd_mx where dm_sygd_mx.jssj between #{begin} and #{end}
GROUP BY dc_ch,dc_pl,dc_fd
)aa ORDER BY aa.dc_ch,aa.dc_pl
</select>
</mapper>

@ -0,0 +1,6 @@
<?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.DmSygdxqOldMapper">
</mapper>

@ -0,0 +1,5 @@
<?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.DmZrcjhOldMapper">
</mapper>
Loading…
Cancel
Save