diff --git a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java index 1fcad53..aef210d 100644 --- a/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java +++ b/src/main/java/com/dsic/gj_erp/bean/jhgk/DmYdjh.java @@ -410,6 +410,7 @@ public class DmYdjh implements Serializable { @AllArgsConstructor private enum ZyjhzxEnum{ + YXF("2",2), SLPP("11",11), // 上料匹配 比对库存给上垛位 SLFK("21",21), PWPG("31",31), diff --git a/src/main/java/com/dsic/gj_erp/bean/zyjh/PwExcel.java b/src/main/java/com/dsic/gj_erp/bean/zyjh/PwExcel.java new file mode 100644 index 0000000..b0e86a3 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/bean/zyjh/PwExcel.java @@ -0,0 +1,26 @@ +package com.dsic.gj_erp.bean.zyjh; + +import com.alibaba.excel.annotation.ExcelProperty; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class PwExcel { + + @ExcelProperty(value = "船号") + public String dcCh; + + @ExcelProperty(value = "批量") + public String dcPl; + + @ExcelProperty(value = "分段",index = 5) + public String dcFd; + + @ExcelProperty(value = "套料图号") + public String tlth; + + @ExcelProperty(value = "备注") + public String bz; + +} diff --git a/src/main/java/com/dsic/gj_erp/bean/zyjh/YcldwInfo.java b/src/main/java/com/dsic/gj_erp/bean/zyjh/YcldwInfo.java index b08bb4f..b4351a7 100644 --- a/src/main/java/com/dsic/gj_erp/bean/zyjh/YcldwInfo.java +++ b/src/main/java/com/dsic/gj_erp/bean/zyjh/YcldwInfo.java @@ -30,7 +30,9 @@ public class YcldwInfo { private String tlth; private String wph; + private String wlh; private String wpgg; + private String nm;//内码 private String sljhrq; private String qgjhrq; private String bfr;//摆放人 @@ -44,6 +46,13 @@ public class YcldwInfo { return info; } + public static YcldwInfo ofPwpg(YcldwInfo info){ + YcldwInfo info1=new YcldwInfo(); + info1.setId(info.getId()); + info1.pwpg(); + return info1; + } + private void sl(){ this.bfrq= DateUtil.date().toString("yyyy/MM/dd"); this.baifang(); @@ -53,11 +62,16 @@ public class YcldwInfo { this.zt=ZtEnum.BF; } + private void pwpg(){ + this.zt=ZtEnum.PG; + } + public void paowan(){ this.zt=ZtEnum.PW; } private enum ZtEnum{ - BF,PW + //摆放,派工,抛丸 + BF,PG,PW } } diff --git a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java index d8143a0..a78507a 100644 --- a/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java +++ b/src/main/java/com/dsic/gj_erp/controller/jhgk/DmQfxqController.java @@ -51,7 +51,7 @@ public class DmQfxqController { .eq(StrUtil.isNotEmpty(qfxq.getDcCh()), "dc_ch", qfxq.getDcCh()) .eq(StrUtil.isNotEmpty(qfxq.getXzglxq()), "substring(Xzglxq,0,8) ", qfxq.getXzglxq()) .eq(StrUtil.isNotEmpty(qfxq.getZt()), "zt", qfxq.getZt()) - .orderByAsc("DC_CH,cast(dc_pl as int),DC_FD")); + .orderByAsc("DC_CH,dc_pl,DC_FD")); return new ResultBean(list); } diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java index bfb766d..1650484 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/ZyjhController.java @@ -3,15 +3,22 @@ package com.dsic.gj_erp.controller.zyjh; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.ObjUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.excel.EasyExcel; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.dsic.gj_erp.annotation.AuthFunction; import com.dsic.gj_erp.bean.ResultBean; import com.dsic.gj_erp.bean.jhgk.DmYdjh; +import com.dsic.gj_erp.bean.jhgk.excel.GdxqExcel; +import com.dsic.gj_erp.bean.zyjh.PwExcel; import com.dsic.gj_erp.bean.zyjh.Ycldw; import com.dsic.gj_erp.bean.zyjh.YcldwInfo; import com.dsic.gj_erp.controller.zyjh.dto.*; import com.dsic.gj_erp.exception.ServiceException; +import com.dsic.gj_erp.listeners.ExcelPwListener; import com.dsic.gj_erp.service.zyjh.YcldwInfoService; import com.dsic.gj_erp.service.zyjh.YcldwService; import com.dsic.gj_erp.service.zyjh.ZyjhService; @@ -21,10 +28,14 @@ import com.dsic.gj_erp.wsclient.WebSocketService; import lombok.AllArgsConstructor; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; +import java.io.IOException; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @RestController @RequestMapping("zyjh") @@ -41,6 +52,37 @@ public class ZyjhController { private final WebSocketService webSocketService; + /** + * 抛丸导入 + */ + @PostMapping("pwdr") + @AuthFunction + public ResultBean pwdr(MultipartFile file,HttpServletRequest request) throws IOException { + String yhdm= (String) request.getAttribute("yhdm"); + String date=DateUtil.date().toString("yyyy/MM/dd HH:mm:ss"); + + ExcelPwListener excelPwListener = new ExcelPwListener(); + EasyExcel.read(file.getInputStream(), PwExcel.class, excelPwListener).sheet(0).headRowNumber(1).doRead(); + List objList = excelPwListener.getObjectList(); + objList.forEach(item-> { + zyjhService.update(Wrappers.lambdaUpdate() + .set(DmYdjh::getPwfkrq,date).set(DmYdjh::getPwfkry,yhdm) + .eq(DmYdjh::getDcCh, item.getDcCh()) + .eq(DmYdjh::getDcPl, item.getDcPl()) + .eq(DmYdjh::getDcFd, item.getDcFd()) + .eq(DmYdjh::getTzbh, item.getTlth())); + + ycldwInfoService.remove(Wrappers.lambdaQuery() + .eq(YcldwInfo::getCzbh, item.getDcCh()) + .eq(YcldwInfo::getPl, item.getDcPl()) + .eq(YcldwInfo::getFd, item.getDcFd()) + .eq(YcldwInfo::getTlth, item.getTlth()) + ); + }); + + return new ResultBean<>(); + } + /** * 根据状态或班组长,获取作业计划,用于报工 */ @@ -85,6 +127,27 @@ public class ZyjhController { return new ResultBean<>(zyjhService.getForeman(zyq)); } + /** + * 抛丸派工 + */ + @PostMapping("pwpg") + @Transactional(rollbackFor = Exception.class) + public ResultBean pwpg(@RequestBody PwpgDto dto){ + List ydjhList=new ArrayList<>(); + String date=DateUtil.date().toString("yyyy/MM/dd HH:mm:ss"); + List collect = dto.getList().stream().map(item -> { + DmYdjh dmYdjh = new DmYdjh(); + dmYdjh.setId(item.getYdid()); + dmYdjh.setPwpgry(dto.getWorker()); + dmYdjh.setPwpgrq(date); + ydjhList.add(dmYdjh); + return YcldwInfo.ofPwpg(item); + }).collect(Collectors.toList()); + ycldwInfoService.updateBatchById(collect); + zyjhService.updateBatchById(ydjhList); + return new ResultBean<>(); + } + /** * 作业计划执行,派工&反馈 */ @@ -105,21 +168,28 @@ public class ZyjhController { dmYdjh.setZtByZyjhzx(dto.getZxZtName()); } } + YcldwInfo info = dto.getYcldwInfo(); if ("PWFK".equals(dto.getZxZtName())){ - ycldwInfoService.updatePw(dto.getYcldwInfo()); - wsHandler.sendPwComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); + if (ObjUtil.isNotEmpty(info)&&info.getId()!=null){ + ycldwInfoService.updatePw(info); + wsHandler.sendPwComplete((JSONObject) JSONObject.toJSON(info)); + } } if ("HXFK".equals(dto.getZxZtName())){ - ycldwInfoService.updatePw(dto.getYcldwInfo()); - wsHandler.sendHXComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); + if (ObjUtil.isNotEmpty(info)&&info.getId()!=null){ + ycldwInfoService.updatePw(dto.getYcldwInfo()); + wsHandler.sendHXComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); + } } if ("QGFK".equals(dto.getZxZtName())){ //无需划线,从理料间获取时才更新垛位信息 - if ("42".equals(dto.getZt())){ - ycldwInfoService.updatePw(dto.getYcldwInfo()); + if (ObjUtil.isNotEmpty(info)&&info.getId()!=null){ + if ("42".equals(dto.getZt())){ + ycldwInfoService.updatePw(dto.getYcldwInfo()); + } + wsHandler.sendHXComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); + wsHandler.sendQGComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); } - wsHandler.sendHXComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); - wsHandler.sendQGComplete((JSONObject) JSONObject.toJSON(dto.getYcldwInfo())); } zyjhService.updateBatchById(list); @@ -276,7 +346,6 @@ public class ZyjhController { return new ResultBean<>(list); } - /** * 获取预处理垛位信息 */ diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PwpgDto.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PwpgDto.java new file mode 100644 index 0000000..9689308 --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/PwpgDto.java @@ -0,0 +1,15 @@ +package com.dsic.gj_erp.controller.zyjh.dto; + +import com.dsic.gj_erp.bean.zyjh.YcldwInfo; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class PwpgDto { + + private String worker; + private List list; +} diff --git a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/ShangLiao.java b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/ShangLiao.java index f26b074..1c2b1df 100644 --- a/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/ShangLiao.java +++ b/src/main/java/com/dsic/gj_erp/controller/zyjh/dto/ShangLiao.java @@ -26,7 +26,9 @@ public class ShangLiao { private String zl; private String tlth; private String wph; + private String wlh; private String wpgg; + private String nm;//内码 private String sljhrq; private String qgjhrq; private String bfr;//摆放人 diff --git a/src/main/java/com/dsic/gj_erp/listeners/ExcelPwListener.java b/src/main/java/com/dsic/gj_erp/listeners/ExcelPwListener.java new file mode 100644 index 0000000..ebc0e2b --- /dev/null +++ b/src/main/java/com/dsic/gj_erp/listeners/ExcelPwListener.java @@ -0,0 +1,57 @@ +package com.dsic.gj_erp.listeners; + +import com.alibaba.excel.context.AnalysisContext; +import com.alibaba.excel.event.AnalysisEventListener; +import com.dsic.gj_erp.bean.zyjh.PwExcel; +import com.dsic.gj_erp.util.ObjConvertUtils; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * Excel通用监听器 + */ +public class ExcelPwListener extends AnalysisEventListener { + + private static final int BATCH_COUNT = 500; + + @Getter + List objectList = new ArrayList<>(); + List headList = new ArrayList<>(); + + List datas = new ArrayList<>(); + + @Override + public void invoke(PwExcel excelDemo, AnalysisContext analysisContext) { + boolean b = ObjConvertUtils.checkObjAllFieldsIsNull(excelDemo); + if(!b){ + datas.add(excelDemo); + } + + if (datas.size() >= BATCH_COUNT) { + saveData(); + datas.clear(); + } + } + + @Override + public void doAfterAllAnalysed(AnalysisContext context) { + saveData(); + } + + //获取表头 + @Override + public void invokeHeadMap(Map headMap, AnalysisContext context) { + headList.add(headMap); + } + + /** + * 入库 + */ + private void saveData() { + objectList.addAll(datas); + } + +} diff --git a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java index 3c05854..856c182 100644 --- a/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java +++ b/src/main/java/com/dsic/gj_erp/mapper/jhgk/DmYdjhMapper.java @@ -66,5 +66,5 @@ public interface DmYdjhMapper extends BaseMapper { List> getWcl(); - List> getYdjhByZt(String zt,String wgzt,String wclzt); + List> getYdjhByZt(String zt,String wgzt,String wclzt,String from, String to); } diff --git a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java index 5c3728f..d2cebf7 100644 --- a/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java +++ b/src/main/java/com/dsic/gj_erp/service/jhgk/impl/DmQfxqServiceImpl.java @@ -101,6 +101,7 @@ public class DmQfxqServiceImpl extends ServiceImpl impleme l.setDrr(username); l.setDrrq(day); l.setXqzt("0"); + l.setZt("0"); this.save(l); list1.add(l); } diff --git a/src/main/java/com/dsic/gj_erp/service/zyjh/YcldwInfoService.java b/src/main/java/com/dsic/gj_erp/service/zyjh/YcldwInfoService.java index 61a2279..8fde3a4 100644 --- a/src/main/java/com/dsic/gj_erp/service/zyjh/YcldwInfoService.java +++ b/src/main/java/com/dsic/gj_erp/service/zyjh/YcldwInfoService.java @@ -1,5 +1,6 @@ package com.dsic.gj_erp.service.zyjh; +import cn.hutool.core.util.ObjUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.dsic.gj_erp.bean.jhgk.DmYdjh; @@ -27,11 +28,8 @@ public class YcldwInfoService extends ServiceImpl { @Transactional(rollbackOn = Exception.class) public void updatePw(YcldwInfo info){ - - this.removeById(info.getId()); - baseMapper.pwfk(info.getCeng(),info.getDwId()); - - + this.removeById(info.getId()); + baseMapper.pwfk(info.getCeng(),info.getDwId()); } @Transactional(rollbackOn = Exception.class) diff --git a/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java b/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java index 3fc90e2..94d14fb 100644 --- a/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java +++ b/src/main/java/com/dsic/gj_erp/service/zyjh/ZyjhService.java @@ -38,46 +38,50 @@ public class ZyjhService extends ServiceImpl { public List getYdjhByZtOrForeman(String zt,String foreman){ QueryWrapper wrapper = new QueryWrapper() - .lt("zt",62); + .ge("zt",11); switch (zt){ case "31": - wrapper.eq("pwpgry",foreman); + wrapper.eq("pwpgry",foreman).isNull("pwfkry"); break; case "51": - wrapper.eq("hxpgry",foreman); + wrapper.eq("hxpgry",foreman).isNull("hxfkry"); break; case "61": - wrapper.eq("qgpgry",foreman); + wrapper.eq("qgpgry",foreman).isNull("qgfkry"); break; } + wrapper.orderByDesc("dc_ch","dc_pl,dc_fd,tzbh"); return list(wrapper); } public List> getYdjhByZt(String zt,String wgzt,String wclzt){ - return baseMapper.getYdjhByZt(zt,wgzt,wclzt); + DateTime date = DateUtil.date(); + String from = DateUtil.beginOfMonth(date).toString("yyyy/MM/dd"); + String to = DateUtil.endOfMonth(date).toString("yyyy/MM/dd"); + return baseMapper.getYdjhByZt(zt,wgzt,wclzt,from,to); } public void pgWithForeman(PgWithPcDto dto){ LambdaUpdateWrapper wrapper = new LambdaUpdateWrapper() - .eq(DmYdjh::getDcCh,dto.getDcCh()).eq(DmYdjh::getDcPl,dto.getDcPl()).ge(DmYdjh::getZt,"2"); + .eq(DmYdjh::getDcCh,dto.getDcCh()).eq(DmYdjh::getDcPl,dto.getDcPl()).ge(DmYdjh::getZt,2); String pgrq = DateUtil.date().toString("yyyy/MM/dd"); switch (dto.getZt()){ case "21": wrapper.set(DmYdjh::getPwpgrq,pgrq).set(DmYdjh::getPwpgry,dto.getForemanId()); - wrapper.lt(DmYdjh::getZt,"31");//仅处理未派工的数据 + wrapper.lt(DmYdjh::getZt,31);//仅处理未派工的数据 break; case "42": case "52": if ("HXPG".equals(dto.getZxZtName())){ wrapper.set(DmYdjh::getHxpgrq,pgrq).set(DmYdjh::getHxpgry,dto.getForemanId()); - wrapper.lt(DmYdjh::getZt,"51");//仅处理未派工的数据 + wrapper.lt(DmYdjh::getZt,51);//仅处理未派工的数据 } if ("QGPG".equals(dto.getZxZtName())){ wrapper.set(DmYdjh::getQgpgrq,pgrq).set(DmYdjh::getQgpgry,dto.getForemanId()); - wrapper.lt(DmYdjh::getZt,"61");//仅处理未派工的数据 + wrapper.lt(DmYdjh::getZt,61);//仅处理未派工的数据 } break; } diff --git a/src/main/resources/application-localws.yml b/src/main/resources/application-localws.yml index fbc2ea4..9674cc9 100644 --- a/src/main/resources/application-localws.yml +++ b/src/main/resources/application-localws.yml @@ -9,5 +9,5 @@ ws: maxHttpContentLength: 1048576 maxFramePayloadLength: 1048576 client: - url: ws://192.168.18.1:9000 + url: ws://192.168.13.10:9000 id: 100000000001 \ No newline at end of file diff --git a/src/main/resources/application-ws.yml b/src/main/resources/application-ws.yml index c6a5680..0616ec5 100644 --- a/src/main/resources/application-ws.yml +++ b/src/main/resources/application-ws.yml @@ -9,5 +9,5 @@ ws: maxHttpContentLength: 1048576 maxFramePayloadLength: 1048576 client: - url: ws://127.0.0.1:9000 + url: ws://192.127.2.199:9000 id: 100000000001 \ No newline at end of file diff --git a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml index d3e11b7..5c7acdf 100644 --- a/src/main/resources/mappers/jhgk/DmYdjhMapper.xml +++ b/src/main/resources/mappers/jhgk/DmYdjhMapper.xml @@ -897,7 +897,7 @@ where dc_ch=#{dcch} and dc_pl =#{dcpl} from dm_ydjh where - zt>='2' and zt<'62' ) a + zt>=2 and zt<62 ) a where a.rn=1 order by dcCh asc ,dcPl desc ,zt @@ -906,32 +906,41 @@ where dc_ch=#{dcch} and dc_pl =#{dcpl} select dc_ch dcCh,dc_pl dcPl,count(1) total,plxh, - sum(case when isnull(qgfkry,'')='' then 1 else 0 end) wwg, - sum(case when isnull(qgfkry,'')!='' then 1 else 0 end) comp, + sum(case when isnull(qgfkrq,'')='' then 1 else 0 end) wwg, + sum(case when isnull(qgfkrq,'')!='' then 1 else 0 end) comp, - sum(case when isnull(hxfkry,'')='' then 1 else 0 end) wwg, - sum(case when isnull(hxfkry,'')!='' then 1 else 0 end) comp, + sum(case when isnull(hxfkrq,'')='' then 1 else 0 end) wwg, + sum(case when isnull(hxfkrq,'')!='' then 1 else 0 end) comp, - sum(case when isnull(pwfkry,'')='' then 1 else 0 end) wwg, - sum(case when isnull(pwfkry,'')!='' then 1 else 0 end) comp, + sum(case when isnull(pwfkrq,'')='' then 1 else 0 end) wwg, + sum(case when isnull(pwfkrq,'')!='' then 1 else 0 end) comp, - sum(case when zt=#{zt} then 1 else 0 end) compOnLastGx, + sum(case when zt>=#{zt} then 1 else 0 end) compOnLastGx, - sum(case when isnull(qgpgry,'')='' then 1 else 0 end) wpg + sum(case when isnull(qgpgrq,'')='' then 1 else 0 end) wpg - sum(case when isnull(hxpgry,'')='' then 1 else 0 end) wpg + sum(case when isnull(hxpgrq,'')='' then 1 else 0 end) wpg - sum(case when isnull(pwpgry,'')='' then 1 else 0 end) wpg + sum(case when isnull(pwpgrq,'')='' then 1 else 0 end) wpg from dm_ydjh - where zt>=2 and zt<=62 + where zt>=11 + + and isnull(qgfkrq,'')='' + + + and isnull(hxfkrq,'')='' + + + and isnull(pwfkrq,'')='' + group by dc_ch, dc_pl,plxh order by dc_ch,dc_pl diff --git a/src/main/resources/mappers/zyjh/YcldwMapper.xml b/src/main/resources/mappers/zyjh/YcldwMapper.xml index 77cee38..b57409d 100644 --- a/src/main/resources/mappers/zyjh/YcldwMapper.xml +++ b/src/main/resources/mappers/zyjh/YcldwMapper.xml @@ -24,13 +24,14 @@ + b.id info_id,b.dw_id info_dw_id,b.ceng info_ceng,b.czbh info_czbh,b.pl info_pl,b.fd info_fd,b.kw info_kw,b.zl info_zl, b.tlth info_tlth,b.wpgg info_wpgg,b.wph info_wph,b.sljhrq info_sljhrq,b.qgjhrq info_qgjhrq,b.bfr info_bfr, - b.bfrq info_bfrq,b.zt info_zt + b.bfrq info_bfrq,b.zt info_zt,b.ydid info_ydid