| | |
| | | import com.core.annotations.AppAuth; |
| | | import com.core.common.*; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.entity.WaitPakin; |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.OpenService; |
| | |
| | | return R.error("单据编号[order_id]以 "+sign_arm_sku+" 与 "+sign_arm_order+" 作为拆分标记拆分失败!!!"); |
| | | } |
| | | if (param.getArm_no()>4){ |
| | | openService.taskArmOrderResult(param); |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | /** |
| | | * PDA检索盘点数量 |
| | | */ |
| | | @PostMapping("/pick/v1/getPickList") |
| | | @AppAuth(memo = "PDA检索盘点数量") |
| | | public synchronized R getPickList(@RequestHeader(required = false) String appkey, |
| | | @RequestBody PdaPickListParam param, |
| | | HttpServletRequest request) { |
| | | auth(appkey, param, request); |
| | | |
| | | List<PickWrkDetlListParam> list = openService.getPickList(param); |
| | | if (!list.isEmpty()) { |
| | | return R.ok(list); |
| | | } |
| | | return R.error("库位不存在或无明细"); |
| | | } |
| | | |
| | | /** |
| | | * PDA绑定解绑 |
| | | */ |
| | | @PostMapping("/agv/bindCtnrAndBin/v1") |
| | |
| | | // 获取订单主表 |
| | | OrderPakout orderPakOut = orderPakOutService.selectByNo(orderDetlPakouts.get(0).getOrderNo()); |
| | | // 盘点单出库 |
| | | if (orderPakOut.getDocType() == 8) { |
| | | if (orderPakOut.getDocType() == 20) { |
| | | for (OrderDetlPakout orderDetl : orderDetlPakouts) { |
| | | double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); |
| | | if (issued <= 0.0D) { |
| | |
| | | locDtos.add(locDto); |
| | | } |
| | | } |
| | | } else { |
| | | } else if(orderPakOut.getDocType() == 10 || orderPakOut.getDocType() == 14) { |
| | | for (OrderDetlPakout orderDetl : orderDetlPakouts) { |
| | | double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); |
| | | if (issued <= 0.0D) { |
| | | continue; |
| | | } |
| | | // List<LocDetl> locDetls = locDetlService.queryStockAll(null, exist,orderDetl.getMatnr(), orderDetl.getBatch(), |
| | | // orderDetl.getBrand(),orderDetl.getStandby1(),orderDetl.getStandby2(),orderDetl.getStandby3(),orderDetl.getBoxType1(),orderDetl.getBoxType2(),orderDetl.getBoxType3()); |
| | | List<LocDetl> locDetls = locDetlService.queryStockMatnr(orderDetl.getMatnr()); |
| | | for (LocDetl locDetl : locDetls) { |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderDetl.getOrderNo(), |
| | | issued >= locDetl.getAnfme() ? locDetl.getAnfme() : issued); |
| | | LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_no", locDetl.getLocNo())); |
| | | locDto.setFrozen(locDetl.getFrozen()); |
| | | locDto.setFrozenLoc(locMast.getFrozen()); |
| | | List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), issued >= locDetl.getAnfme() ? 101 : 103); |
| | | locDto.setStaNos(staNos); |
| | | locDto.setBrand(orderDetl.getBrand()); |
| | | |
| | | locDto.setStandby1(orderDetl.getStandby1()); |
| | | locDto.setStandby2(orderDetl.getStandby2()); |
| | | locDto.setStandby3(orderDetl.getStandby3()); |
| | | locDto.setBoxType1(orderDetl.getBoxType1()); |
| | | locDto.setBoxType2(orderDetl.getBoxType2()); |
| | | locDto.setBoxType3(orderDetl.getBoxType3()); |
| | | locDtos.add(locDto); |
| | | exist.add(locDetl.getLocNo()); |
| | | // 剩余待出数量递减 |
| | | issued = issued - locDetl.getAnfme(); |
| | | } else { |
| | | break; |
| | | } |
| | | } |
| | | if (issued > 0) { |
| | | LocDto locDto = new LocDto(null, orderDetl.getMatnr(), orderDetl.getMaktx(), orderDetl.getBatch(), orderDetl.getOrderNo(), issued); |
| | | locDto.setBrand(orderDetl.getBrand()); |
| | | locDto.setStandby1(orderDetl.getStandby1()); |
| | | locDto.setStandby2(orderDetl.getStandby2()); |
| | | locDto.setStandby3(orderDetl.getStandby3()); |
| | | locDto.setBoxType1(orderDetl.getBoxType1()); |
| | | locDto.setBoxType2(orderDetl.getBoxType2()); |
| | | locDto.setBoxType3(orderDetl.getBoxType3()); |
| | | locDto.setLack(Boolean.TRUE); |
| | | locDtos.add(locDto); |
| | | } |
| | | } |
| | | }else { |
| | | for (OrderDetlPakout orderDetl : orderDetlPakouts) { |
| | | double issued = Optional.of(orderDetl.getAnfme() - orderDetl.getWorkQty()).orElse(0.0D); |
| | | if (issued <= 0.0D) { |
| | |
| | | private String maktx; |
| | | |
| | | @ApiModelProperty(value= "规格") |
| | | @ExcelProperty("规格") |
| | | //@ExcelProperty("规格") |
| | | private String specs; |
| | | |
| | | @ApiModelProperty(value= "货品特征") |
| | | @ExcelProperty("货品特征") |
| | | //@ExcelProperty("货品特征") |
| | | private String batch; |
| | | |
| | | @ApiModelProperty(value= "单据编号") |
| | |
| | | * 备用1(PO) |
| | | */ |
| | | @ApiModelProperty(value= "备用1")//PO |
| | | @ExcelProperty("客户PO") |
| | | private String standby1 = "1"; |
| | | |
| | | /** |
| | | * 备用2(UPC) |
| | | */ |
| | | @ApiModelProperty(value= "备用2")//UPC |
| | | @ExcelProperty("条码UPC") |
| | | private String standby2 = "1"; |
| | | |
| | | /** |
| | | * 备用3(SKU) |
| | | */ |
| | | @ApiModelProperty(value= "备用3")//SKU |
| | | @ExcelProperty("客户SKU") |
| | | private String standby3 = "1"; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiModelProperty(value= "备用1") |
| | | @TableField("box_type1") |
| | | @ExcelProperty("货主") |
| | | private String boxType1 = "1"; |
| | | |
| | | /** |
| | |
| | | */ |
| | | @ApiModelProperty(value= "备用3") |
| | | @TableField("box_type3") |
| | | @ExcelProperty("采购单号") |
| | | private String boxType3 = "1"; |
| | | |
| | | /** |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class PdaPickListParam { |
| | | String barcode; |
| | | } |
| New file |
| | |
| | | package com.zy.asrs.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class PickWrkDetlListParam { |
| | | |
| | | // 物料编号 |
| | | private String matnr; |
| | | |
| | | // 物料名称 |
| | | private String maknx; |
| | | |
| | | //单据编号 |
| | | private String orderNo; |
| | | //采购单号 |
| | | private String boxType3; |
| | | |
| | | //客户PO |
| | | private String standby1; |
| | | |
| | | //条码UPC |
| | | private String standby2; |
| | | |
| | | //客户sku |
| | | private String standby3; |
| | | |
| | | // 客户信息 |
| | | private String manu; |
| | | |
| | | // 备注 |
| | | private String memo; |
| | | |
| | | // 物料数量 |
| | | private Double count; |
| | | |
| | | private Double total; |
| | | |
| | | } |
| | |
| | | @Param("standby3")String standby3,@Param("boxType1")String boxType1,@Param("boxType2")String boxType2); |
| | | |
| | | Double queryStockAnfme(String matnr, String batch); |
| | | List<LocDetl> queryStockMatnr(@Param("matnr")String matnr); |
| | | |
| | | List<StockVo> queryStockTotal(); |
| | | |
| | |
| | | List<WrkDetl> selectAndLogByOrderNo(String orderNo); |
| | | |
| | | int updateInspect( @Param("wrkNo")Integer wrkNo, @Param("matnr")String matnr, @Param("batch")String batch); |
| | | List<WrkDetl> findByBarcode(String barcode); |
| | | |
| | | List<WrkDetl> selectPakoutQuery(@Param("staNo")Integer staNo, @Param("matnr")String matnr); |
| | | |
| | |
| | | // -------------------------------------------------- |
| | | |
| | | List<LocDetl> queryStock(String matnr, String batch, String orderNo, Set<String> locNos); |
| | | List<LocDetl> queryStockMatnr(String matnr); |
| | | |
| | | // List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3); |
| | | List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2); |
| | |
| | | package com.zy.asrs.service; |
| | | |
| | | import com.zy.asrs.entity.WrkDetl; |
| | | import com.zy.asrs.entity.param.*; |
| | | import com.zy.asrs.entity.result.OpenOrderCompeteResult; |
| | | import com.zy.asrs.entity.result.StockVo; |
| | |
| | | boolean agvApplicationPassedTheGrating(ArmAgvGratingParam param); |
| | | boolean agvApplicationPassedTheGrating(AgvGoTheArnParam param); |
| | | boolean agvBindAndBin(String taskNo); |
| | | |
| | | boolean taskArmOrderResult(OrderArmEndParam param); |
| | | List<PickWrkDetlListParam> getPickList(PdaPickListParam param); |
| | | } |
| | |
| | | boolean updateAnfme(Double anfme, Integer wrkNo, String matnr, String batch); |
| | | |
| | | List<WrkDetl> selectAndLogByOrderNo(String orderNo); |
| | | List<WrkDetl> findByBarcode(String barcode); |
| | | |
| | | boolean updateInspect(Integer wrkNo, String matnr, String batch); |
| | | |
| | |
| | | return this.baseMapper.queryStock(matnr, batch, orderNo, locNos); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<LocDetl> queryStockMatnr(String matnr) { |
| | | return this.baseMapper.queryStockMatnr(matnr); |
| | | } |
| | | |
| | | // @Override |
| | | // public List<LocDetl> queryStockAll(String orderNo, Set<String> locNos,String matnr, String batch, String brand, String standby1, String standby2, String standby3, String boxType1, String boxType2, String boxType3) { |
| | |
| | | private CommonService commonService; |
| | | @Autowired |
| | | private LocMastServiceImpl locMastService; |
| | | |
| | | @Autowired |
| | | private WrkDetlService wrkDetlService; |
| | | @Override |
| | | @Transactional |
| | | public void pakinOrderCreate(OpenOrderPakinParam param) { |
| | |
| | | if (Cools.isEmpty(basArmMast)){ |
| | | throw new CoolException("未查询到相关机械臂拆码垛任务!!!"+ JSON.toJSONString(param)); |
| | | } |
| | | basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3); |
| | | // basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),1,3); |
| | | basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(),2,3); |
| | | } |
| | | |
| | |
| | | if (!Cools.isEmpty(basArmMast)){ |
| | | basArmMastService.updateArmMastStatus(param.getArm_no(),basArmMast.getSortingLine(),basArmMast.getStaNo(), 5,6); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | | public boolean taskArmOrderResult(OrderArmEndParam param){ |
| | | if(param.getDone_num() == 0){ |
| | | if(basArmMastService.delete(new EntityWrapper<BasArmMast>().eq("arm_no",param.getArm_no()) |
| | | .eq("status",1))){ |
| | | return true; |
| | | } |
| | | } |
| | | if(param.getDone_num() == 1){ |
| | | return true; |
| | | } |
| | | log.error("未找到对应任务"+ param); |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | |
| | | throw new CoolException("未能绑定"); |
| | | } |
| | | } |
| | | @Override |
| | | @Transactional |
| | | public List<PickWrkDetlListParam> getPickList(PdaPickListParam param) { |
| | | List<WrkDetl> wrkDetls = wrkDetlService.findByBarcode(param.getBarcode()); |
| | | List<PickWrkDetlListParam> result = new ArrayList<>(); |
| | | wrkDetls.forEach(wrkDetl -> { |
| | | Double total; |
| | | EntityWrapper<LocDetl> wrapper = new EntityWrapper<>(); |
| | | LocDetl locDetl = locDetlService.selectOne( |
| | | wrapper.eq("zpallet", wrkDetl.getZpallet()) |
| | | .eq("matnr", wrkDetl.getMatnr()) |
| | | ); |
| | | // 可拣总量:优先取库存表,否则取作业数量 |
| | | if (Cools.isEmpty(locDetl)) { |
| | | total = wrkDetl.getAnfme(); |
| | | } else { |
| | | total = locDetl.getAnfme(); |
| | | } |
| | | // ===== 组装返回对象 ===== |
| | | PickWrkDetlListParam dto = new PickWrkDetlListParam(); |
| | | dto.setMatnr(wrkDetl.getMatnr()); |
| | | dto.setMaknx(wrkDetl.getMaktx()); |
| | | dto.setOrderNo(wrkDetl.getOrderNo()); |
| | | dto.setBoxType3(wrkDetl.getBoxType3()); |
| | | dto.setStandby1(wrkDetl.getStandby1()); |
| | | dto.setStandby2(wrkDetl.getStandby2()); |
| | | dto.setStandby3(wrkDetl.getStandby3()); |
| | | dto.setManu(wrkDetl.getManu()); |
| | | dto.setMemo(wrkDetl.getMemo()); |
| | | // 当前拣货数量 |
| | | dto.setCount(wrkDetl.getAnfme()); |
| | | // 可拣总数量 |
| | | dto.setTotal(total); |
| | | result.add(dto); |
| | | }); |
| | | |
| | | return result; |
| | | } |
| | | |
| | | @Override |
| | | @Transactional |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<WrkDetl> findByBarcode(String barcode) { |
| | | return this.baseMapper.findByBarcode(barcode); |
| | | } |
| | | |
| | | @Override |
| | | public List<WrkDetl> selectPakoutQuery(Integer staNo, String matnr) { |
| | | return this.baseMapper.selectPakoutQuery(staNo, matnr); |
| | | } |
| | |
| | | @Autowired |
| | | private BasArmMastSignService basArmMastSignService; |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | private void orderToSortLine() { |
| | | //获取未下发单据 |
| | | List<String> orderNos = orderPakinService.AllStatusSatisfyOrder(0); |
| | |
| | | Integer number = basArmRulesService.getNumber(mat.getWeight(),mat.getVolume(),mat.getManLength(),mat.getWidth(),mat.getHeight()); |
| | | if (number == null) { |
| | | BasArmRules basArmRules = new BasArmRules(); |
| | | basArmRules.setMaterialHeight(orderDetl.getHeight()); |
| | | basArmRules.setMaterialWeight(orderDetl.getWeight()); |
| | | basArmRules.setMaterialLength(orderDetl.getManLength()); |
| | | basArmRules.setMaterialWidth(orderDetl.getWidth()); |
| | | basArmRules.setMaterialHeight(mat.getHeight()); |
| | | basArmRules.setMaterialWeight(mat.getWeight()); |
| | | basArmRules.setMaterialLength(mat.getManLength()); |
| | | basArmRules.setMaterialWidth(mat.getWidth()); |
| | | basArmRulesService.insert(basArmRules); |
| | | return; |
| | | } else if (number == 0){ |
| | |
| | | // .doPost(); |
| | | // JSONObject jsonObject = JSON.parseObject(response); |
| | | // if (jsonObject.getInteger("code").equals(200)) { |
| | | if (true) { |
| | | success = true; |
| | | // 修改订单状态 4.完成 ===>> 6.已上报 |
| | | if (order.getSettle() == 8L) { |
| | | // 修改订单状态 8.完成 ===>> 6.已上报 |
| | | if (!orderService.updateSettle(order.getId(), settle, null)) { |
| | | throw new CoolException("服务器内部错误,请联系管理员"); |
| | | } |
| | |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "出库上报", |
| | | MesConstant.URL + MesConstant.PAKOUT_URL, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(pakoutParam), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { log.error("", e); } |
| | | } |
| | | } |
| | | return SUCCESS; |
| | |
| | | @Value("${erp.switch.InboundOrderSwitch}") |
| | | private boolean InboundOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0 */30 * * * ?") |
| | | @Scheduled(cron = "0 */15 * * * ?") |
| | | void login(){ |
| | | if(!InboundOrderSwitch){ |
| | | return; |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/20 * * * * ?") |
| | | @Scheduled(cron = "0/20 * * * * ?") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/20 * * * * ?") |
| | | @Scheduled(cron = "0/20 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | List<Order> orders = orderService.selectComplete(); |
| | | if(orders.size() > 0){ |
| | | for (Order order : orders) { |
| | | ReturnT<String> result = saveOrderSyncHandler.start(order);//4已完成 |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]新增保存至erp失败", order.getOrderNo()); |
| | | if(order.getDocType() == 3 || order.getDocType() == 16 || order.getDocType() == 18 || order.getDocType() == 19){ |
| | | ReturnT<String> result = saveOrderSyncHandler.start(order);//4已完成 |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]新增保存至erp失败", order.getOrderNo()); |
| | | } |
| | | }else{ |
| | | order.setSettle(9L); |
| | | orderService.updateById(order); |
| | | } |
| | | } |
| | | } |
| | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/20 * * * * ?") |
| | | @Scheduled(cron = "0/20 * * * * ?") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | |
| | | @Value("${erp.address.impurreceivebilldetl}") |
| | | //进仓通知单 |
| | | private String imPurreceiveBillDetlAddress; |
| | | @Value("${erp.address.imSaloutbill}") |
| | | //销售出库单 |
| | | private String imSaloutbill; |
| | | @Value("${erp.address.scpSalreturn}") |
| | | //销售退货单 |
| | | private String scpSalreturn; |
| | | @Value("${erp.address.scpSalreturnDetl}") |
| | | //销售退货单 |
| | | private String scpSalreturnDetl; |
| | | @Value("${erp.address.imMdcMftproorder}") |
| | | //生产领料单 |
| | | private String imMdcMftproorder; |
| | | @Value("${erp.address.imMdcMftreturnorder}") |
| | | //生产退料单 |
| | | private String imMdcMftreturnorder; |
| | | @Value("${erp.address.imMdcMftfeedorder}") |
| | | //生产补料单 |
| | | private String imMdcMftfeedorder; |
| | | @Value("${erp.address.imProductinbill}") |
| | | //生产进仓单 |
| | | private String imProductinbill; |
| | | @Value("${erp.address.qcppManuinspec}") |
| | | //产品检验单 |
| | | private String qcppManuinspec; |
| | | |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | |
| | | path = orgAddress; |
| | | break; |
| | | case "PUR_RECEIVEBIll": //已审核收料单查询 |
| | | // jsonObject.put("start_biztime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("start_biztime", "2025-01-01 00:00:00");//业务起始日期 |
| | | jsonObject.put("end_biztime", sdf1.format(now));//业务结束日期 |
| | | jsonObject.put("billno", null); |
| | |
| | | jsonObject.put("supplier_number", null); |
| | | path = imPurreceiveBillAddress; |
| | | break; |
| | | case "SAL_OUTSTOCK"://销售出库单查询 |
| | | path = imSaloutbill; |
| | | jsonObject.put("modify_starttime", latestUpdateTime);//业务起始日期 |
| | | jsonObject.put("billstatus", "B");//单据状态 |
| | | jsonObject.put("modify_endtime", sdf1.format(now));//业务起始日期 |
| | | break; |
| | | case "SAL_RETURNSTOCK"://销售退货 |
| | | path = scpSalreturn; |
| | | jsonObject.put("start_modifytime", "2025-11-25 00:00:00");//业务起始日期 |
| | | jsonObject.put("billstatus", "B");//单据状态 |
| | | jsonObject.put("end_starttime", sdf1.format(now));//业务起始日期 |
| | | break; |
| | | case "PRD_PickMtrl"://生产领料单 |
| | | path = imMdcMftproorder; |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("billstatus", Arrays.asList("B","C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("id", null); |
| | | break; |
| | | case "PRD_ReturnMtrl"://生产退料单 |
| | | path = imMdcMftreturnorder; |
| | | jsonObject.put("id", null); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | break; |
| | | case "PRD_FeedMtrl"://生产补料单 |
| | | path = imMdcMftfeedorder; |
| | | jsonObject.put("id", null); |
| | | jsonObject.put("billno", null); |
| | | jsonObject.put("org_number", null); |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("start_createtime", "2025-11-25 00:00:00"); |
| | | jsonObject.put("end_createtime", sdf1.format(now)); |
| | | // jsonObject.put("start_modifytime", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_modifytime", sdf1.format(now)); |
| | | // jsonObject.put("start_auditdate", "2025-11-25 00:00:00"); |
| | | // jsonObject.put("end_auditdate", sdf1.format(now)); |
| | | break; |
| | | case "PRD_MORPT"://生产进仓单 |
| | | path = imProductinbill; |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("modifytime_start", "2025-11-25 00:00:00"); |
| | | jsonObject.put("modifytime_end", sdf1.format(now)); |
| | | break; |
| | | case "STK_InspectionForm"://产品检验 |
| | | path = qcppManuinspec; |
| | | jsonObject.put("billstatus", Arrays.asList("C"));//数据状态 [A:暂存, B:已提交, C:已审核] |
| | | jsonObject.put("auditdate_start", "2025-11-25 00:00:00"); |
| | | jsonObject.put("auditdate_end", sdf1.format(now)); |
| | | break; |
| | | } |
| | | if(path == null){ |
| | | continue; |
| | | } |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | jsonObject1.put("pageSize", 20); |
| | | jsonObject1.put("pageNo", 1); |
| | | String add = jsonObject1.toJSONString(); |
| | | |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | if(path == null){ |
| | | continue; |
| | | } |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | |
| | | // 更新字段 |
| | | if (!mat.getMaktx().equals(name)) mat.setMaktx(name); |
| | | if (mat.getWeight().compareTo(grossweight) != 0) mat.setWeight(grossweight); |
| | | if (mat.getManLength().compareTo(length) != 0) mat.setManLength(length); |
| | | if (mat.getHeight().compareTo(height) != 0) mat.setHeight(height); |
| | | if (mat.getWidth().compareTo(width) != 0) mat.setWidth(width); |
| | | if (mat.getManLength().compareTo(length) != 0) mat.setManLength(length1); |
| | | if (mat.getHeight().compareTo(height) != 0) mat.setHeight(height1); |
| | | if (mat.getWidth().compareTo(width) != 0) mat.setWidth(width1); |
| | | if (mat.getCreateTime().compareTo(sdf1.parse(createTime)) != 0) |
| | | mat.setCreateTime(sdf1.parse(createTime)); |
| | | mat.setUpdateTime(modifyTime); |
| | |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //供应商 |
| | | else if(kingDeeUtilType.formId.equals("BD_RRGANIZATION")){//供应商同步 |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | |
| | | } |
| | | } |
| | | } |
| | | //收料单 |
| | | else if(kingDeeUtilType.formId.equals("PUR_RECEIVEBIll")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | |
| | | JSONObject detailParam = new JSONObject(); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.put("billno", billNo); |
| | | detailParam.put("data", dataObj); |
| | | detailParam.put("pageNo", 1); |
| | | detailParam.put("pageSize", 100); |
| | | detailParam.put("data", dataObj); |
| | |
| | | // ====== 处理明细 ====== |
| | | for (int i = 0; i < rows.size(); i++) { |
| | | JSONObject jsonObjectNew2 = rows.getJSONObject(i); |
| | | Order order = orderService.selectByNo( billNo);//检索单据 |
| | | Order order = orderService.selectByNo(billNo);//检索单据 |
| | | LocOwner locOwner = null; |
| | | if (ownerUuid != null) { |
| | | locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //销售出库 |
| | | else if(kingDeeUtilType.formId.equals("SAL_OUTSTOCK")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建销售出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //销售退货 |
| | | else if(kingDeeUtilType.formId.equals("SAL_RETURNSTOCK")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | // 重新发起请求以获取该页的数据 |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.get("createtime").toString()); |
| | | String billNo = jsonObjectNew.get("billno").toString();//单据编号 |
| | | String orderId = jsonObjectNew.get("id").toString(); |
| | | JSONObject detailParam = new JSONObject(); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.put("billno", billNo); |
| | | detailParam.put("pageNo", 1); |
| | | detailParam.put("pageSize", 100); |
| | | detailParam.put("data", dataObj); |
| | | boolean hasNext = true; |
| | | while (hasNext) { |
| | | String reqJson = detailParam.toJSONString(); |
| | | String detailResp = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(scpSalreturnDetl) |
| | | .setJson(reqJson) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject detailJson = JSON.parseObject(detailResp); |
| | | JSONObject detData = detailJson.getJSONObject("data"); |
| | | JSONArray rows = detData.getJSONArray("rows"); |
| | | // ====== 处理明细 ====== |
| | | for (int i = 0; i < rows.size(); i++) { |
| | | JSONObject jsonObjectNew2 = rows.getJSONObject(i); |
| | | Order order = orderService.selectByNo(billNo);//检索单据 |
| | | LocOwner locOwner = null; |
| | | if (Cools.isEmpty(order)) { |
| | | // 单据主档 |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | null, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if( orderService.insert(order)){ |
| | | callApiLogSaveOrder(order, kingDeeUtilType, "创建销售退货单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | // String suppCode = jsonObjectNew2.getString("supplier_number"); //供应商 |
| | | String suppCode = null; //供应商 |
| | | JSONArray billEntryArray = jsonObjectNew2.getJSONArray("materialentry"); |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("qty");//箱数 |
| | | Double totalNumItems = 0.0; |
| | | Double Totalvolume = 0.0;//总体积 |
| | | String warehouse = null;//仓库编码 |
| | | String pOrderNo = "1";//采购单号 |
| | | String s3 = "1";//客户sku(客户编号) |
| | | String s2 = "1"; //条码UPC |
| | | String memo ="1"; //备注(英文描述) |
| | | String s1 = "1"; //客户PO |
| | | // Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | // Double Totalvolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | // String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | // String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | // String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | // String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | // String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | // String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String |
| | | if(anfme == 0){ |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "单据数量异常"+matnr, false); |
| | | continue; |
| | | } |
| | | //物料编码 |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+matnr, false); |
| | | continue; |
| | | } |
| | | Order order1 = orderService.selectByNo( billNo); |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order1.getId()); |
| | | boolean sign = false; |
| | | for (OrderDetl orderDetl : orderDetls){ |
| | | if (orderDetl.getMatnr().equals(matnr)){ |
| | | sign = true; |
| | | break; |
| | | } |
| | | } |
| | | if (sign){ |
| | | continue; |
| | | } |
| | | LocSupp locSupp = null; |
| | | String supp =null; |
| | | // locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if(locSupp != null){supp = locSupp.getOwner();} |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId);//ERP明细id |
| | | orderDetl.setLineNumber(seq);//分录行号 |
| | | orderDetl.setAnfme(anfme);//总箱数 |
| | | orderDetl.setErpAnfme(anfme);//erp数据 |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo());//表头单据 |
| | | orderDetl.setSupp(supp);//供应商名称(货源) |
| | | orderDetl.setSuppCode(suppCode);//供应商编码 |
| | | orderDetl.setSku(matnr);//内部SKU |
| | | orderDetl.setStandby1(s1);//客户PO |
| | | orderDetl.setStandby2(s2);//条码UPC |
| | | orderDetl.setStandby3(s3);//客户SKU |
| | | orderDetl.setBoxType1(null); //货主名称 |
| | | orderDetl.setBoxType2(null);//货主编号(erp组织) |
| | | orderDetl.setBoxType3(pOrderNo);//采购单号 |
| | | orderDetl.setMemo(memo);//英文备注 |
| | | orderDetl.setVolume(Totalvolume);//总体积 |
| | | orderDetl.setSafeQty(totalNumItems);//总件数 |
| | | orderDetl.setManu(warehouse);//仓库编码 |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | // 是否还有下一页 |
| | | boolean lastPage = detData.getBoolean("lastPage"); |
| | | if (lastPage) { |
| | | hasNext = false; |
| | | } else { |
| | | // 下一页 |
| | | int currPage = detData.getIntValue("pageNo"); |
| | | detailParam.put("pageNo", currPage + 1); |
| | | } |
| | | } |
| | | } |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } |
| | | //产品检验单 |
| | | else if(kingDeeUtilType.formId.equals("STK_InspectionForm")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建销售出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产领料,生产补料 |
| | | else if(kingDeeUtilType.formId.equals("PRD_PickMtrl") || kingDeeUtilType.formId.equals("PRD_FeedMtrl")){ |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产领料出库单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("qty");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "物料档案不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产退料单PRD_ReturnMtrl |
| | | else if(kingDeeUtilType.formId.equals("PRD_ReturnMtrl") ) { |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = jsonObjectNew.getString("org_name"); |
| | | String ownerUuid = jsonObjectNew.getString("org_number"); |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产补料单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("billentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("eap7_decimalfield");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield3");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield5"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | //生产汇报单 |
| | | else if(kingDeeUtilType.formId.equals("PRD_MORPT")) { |
| | | int pageSize = jsonResponse.getJSONObject("data").getIntValue("pageSize"); |
| | | int totalCount = jsonResponse.getJSONObject("data").getIntValue("totalCount"); |
| | | int totalPages = (int) Math.ceil((double) totalCount / pageSize); |
| | | |
| | | for (int page = 1; page <= totalPages; page++) { |
| | | jsonObject1.put("pageNo", page); |
| | | add = jsonObject1.toJSONString(); |
| | | |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(path) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | |
| | | jsonResponse = JSON.parseObject(response); |
| | | data = jsonResponse.getJSONObject("data").getJSONArray("rows"); |
| | | |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONObject jsonObjectNew = data.getJSONObject(j); |
| | | Date createTime = sdf1.parse(jsonObjectNew.getString("createtime")); |
| | | String billNo = jsonObjectNew.getString("billno"); |
| | | String owner = "和得科技"; |
| | | String ownerUuid = "BU-00001"; |
| | | String orderId = jsonObjectNew.getString("id"); |
| | | // ========= 货主校验 ========= |
| | | LocOwner locOwner = locOwnerService.selectByUuid(ownerUuid); |
| | | // if (locOwner == null) { |
| | | // callApiLogSaveOwner(null, kingDeeUtilType, |
| | | // "货主检索失败:" + ownerUuid + " 名称:" + owner, false); |
| | | // continue; |
| | | // } |
| | | |
| | | // ========= 创建订单主表 ========= |
| | | Order order = orderService.selectByNo(billNo); |
| | | if (Cools.isEmpty(order)) { |
| | | order = new Order( |
| | | // 单据主档 |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | billNo, // 订单编号 |
| | | createTime.toString(), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | orderId, //收料单id |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 项目id |
| | | owner, // 货主 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null, // 备注 |
| | | kingDeeUtilType.pakIn !=1?2:1 |
| | | ); |
| | | if (orderService.insert(order)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "创建生产汇报单成功!单号:" + billNo, true); |
| | | } |
| | | } |
| | | |
| | | // ========= 直接从主接口取明细 billentry ========= |
| | | JSONArray billEntryArray = jsonObjectNew.getJSONArray("sumentry"); |
| | | if (billEntryArray == null || billEntryArray.isEmpty()) { |
| | | continue; |
| | | } |
| | | for (int k = 0; k < billEntryArray.size(); k++) { |
| | | JSONObject entry = billEntryArray.getJSONObject(k); |
| | | String matnr = entry.getString("material_number"); //物料编码,内部SKU |
| | | Double anfme = entry.getDouble("completqty");//箱数 |
| | | Double totalNumItems = entry.getDouble("eap7_decimalfield1");//总件数 |
| | | Double totalVolume = entry.getDouble("eap7_decimalfield2");//总体积 |
| | | String warehouse = entry.getString("warehouse_number");//仓库编码 |
| | | String pOrderNo = entry.getString("eap7_textfield");//采购单号 |
| | | String s3 = entry.getString("eap7_textfield4");//客户sku(客户编号) |
| | | String s2 = entry.getString("eap7_textfield1"); //条码UPC |
| | | String memo = entry.getString("eap7_textfield6"); //备注(英文描述) |
| | | String s1 = entry.getString("eap7_textfield7"); //客户PO |
| | | String detlId = entry.getString("id"); //明细id |
| | | Long seq = entry.getLong("seq"); //分录行号 |
| | | // String suppCode = entry.getString("supplier_number"); |
| | | String suppCode = null; |
| | | if (anfme == null || anfme == 0) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "单据数量异常:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 物料校验 ========= |
| | | Mat mat = matService.selectByMatnr(matnr); |
| | | if (Cools.isEmpty(mat)) { |
| | | callApiLogSaveOrder(order, kingDeeUtilType, |
| | | "商品不存在:" + matnr, false); |
| | | continue; |
| | | } |
| | | // ========= 明细去重 ========= |
| | | List<OrderDetl> orderDetls = |
| | | orderDetlService.selectByOrderId(order.getId()); |
| | | |
| | | boolean exists = orderDetls.stream() |
| | | .anyMatch(o -> o.getMatnr().equals(matnr)); |
| | | if (exists) continue; |
| | | // // ========= 供应商 ========= |
| | | String supp = null; |
| | | // LocSupp locSupp = locSuppService.selectByUuid(suppCode); |
| | | // if (locSupp != null) { |
| | | // supp = locSupp.getOwner(); |
| | | // } |
| | | // ========= 保存明细 ========= |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setThreeCode(detlId); |
| | | orderDetl.setLineNumber(seq); |
| | | orderDetl.setAnfme(anfme); |
| | | orderDetl.setErpAnfme(anfme); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setSupp(supp); |
| | | orderDetl.setSuppCode(suppCode); |
| | | orderDetl.setSku(matnr); |
| | | orderDetl.setStandby1(s1); |
| | | orderDetl.setStandby2(s2); |
| | | orderDetl.setStandby3(s3); |
| | | orderDetl.setBoxType1(owner); |
| | | orderDetl.setBoxType2(ownerUuid); |
| | | orderDetl.setBoxType3(pOrderNo); |
| | | orderDetl.setMemo(memo); |
| | | orderDetl.setVolume(totalVolume); |
| | | orderDetl.setSafeQty(totalNumItems); |
| | | orderDetl.setManu(warehouse); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | |
| | | orderDetlService.insert(orderDetl); |
| | | } |
| | | } |
| | | docType.setUpdateTime(now); |
| | | docTypeService.updateById(docType); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | |
| | | |
| | | public void callApiLogSaveSupp(LocSupp locSupp, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |
| | | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, |
| | | "货主编号:" + locSupp.getOwnerUuid() + "、货主名称:" + locSupp.getOwner(), |
| | | "供应商编号:" + locSupp.getOwnerUuid() + "、供应商名称:" + locSupp.getOwner(), |
| | | response, bool); |
| | | } |
| | | public void callApiLogSaveOwner(LocOwner locOwner, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |
| | |
| | | @Value("${erp.address.imPurinbillBatchAudit}") |
| | | //审核地址 |
| | | private String imPurinbillBatchAudit; |
| | | @Value("${erp.address.imSaloutbillReport}") |
| | | //销售出库单审核地址 |
| | | private String imSaloutbillReport; |
| | | @Value("${erp.address.scpSalreturnReport}") |
| | | //销售退货单审核地址 |
| | | private String scpSalreturnReport; |
| | | |
| | | @Value("${erp.address.imMdcMftproorderReport}") |
| | | //生产领料单上报 |
| | | private String imMdcMftproorderReport; |
| | | @Value("${erp.address.imMdcMftreturnorderReport}") |
| | | //生产退料单上报 |
| | | private String imMdcMftreturnorderReport; |
| | | @Value("${erp.address.imMdcMftfeedorderReport}") |
| | | //生产补料单上报 |
| | | private String imMdcMftfeedorderReport; |
| | | @Value("${erp.address.imProductinbillReport}") |
| | | //生产汇报单上报 |
| | | private String imProductinbillReport; |
| | | @Value("${erp.address.imOtheroutbillAudi}") |
| | | //其他出库审核上报 |
| | | private String imOtheroutbillAudi; |
| | | @Value("${erp.address.imOtherinbillAudit}") |
| | | //其他入库审核上报 |
| | | private String imOtherinbillAudit; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | |
| | | |
| | | private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, |
| | | SimpleDateFormat sdf1, SimpleDateFormat sdf2) { |
| | | switch (kingDeeUtilType.formId) { |
| | | JSONArray idArray = new JSONArray(); |
| | | JSONObject dataObj = new JSONObject(); |
| | | if(kingDeeUtilType == null){ |
| | | return null; |
| | | } |
| | | switch(kingDeeUtilType.formId) { |
| | | case "PUR_RECEIVEBIll": // 进仓通知单提交 |
| | | path = imPurinbillBatchAudit; |
| | | JSONArray idArray = new JSONArray(); |
| | | idArray.add(order.getNumber()); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | |
| | | case "SAL_OUTSTOCK"://销售出库上报 |
| | | path = imSaloutbillReport; |
| | | idArray.add(order.getOrderNo()); |
| | | dataObj.fluentPut("billno", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "SAL_RETURNSTOCK"://销售退料单 |
| | | path = scpSalreturnReport; |
| | | dataObj.fluentPut("billno", order.getOrderNo()); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_PickMtrl"://生产领料单上报 |
| | | path = imMdcMftproorderReport; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("ids", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_ReturnMtrl"://生产退料单上报 |
| | | path = imMdcMftreturnorderReport; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_FeedMtrl": //生产补料单 |
| | | path = imMdcMftfeedorderReport; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "PRD_MORPT"://生产汇报单 |
| | | path = imProductinbillReport; |
| | | idArray.add(order.getNumber()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "STK_MISCELLANEOUS"://其他入库单 |
| | | path = imOtheroutbillAudi; |
| | | idArray.add(order.getId()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "STK_MisDelivery"://其他出库单 |
| | | path = imOtherinbillAudit; |
| | | idArray.add(order.getId()); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | default: |
| | | throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId); |
| | | } |
| | |
| | | } |
| | | // 解析返回的响应 |
| | | JSONObject data = jsonResponse.getJSONObject("data"); |
| | | String errorCode = jsonResponse.getString("errorCode"); |
| | | boolean status = jsonResponse.getBooleanValue("status"); |
| | | if ("0".equals(errorCode) && status) { |
| | | if (status) { |
| | | // 获取成功与失败的数量 |
| | | int successCount = data.getInteger("successCount"); |
| | | int failCount = data.getInteger("failCount"); |
| | |
| | | |
| | | @Value("${erp.address.imPurinbillAdd}") |
| | | private String imPurinbillAdd; |
| | | @Value("${erp.address.imOtheroutbill}") |
| | | private String imOtheroutbill; |
| | | @Value("${erp.address.imOtherinbill}") |
| | | private String imOtherinbill; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | |
| | | |
| | | private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, SimpleDateFormat sdf1, SimpleDateFormat sdf2) { |
| | | List<OrderDetl> orderDetlList = orderDetlService.selectList(new EntityWrapper<OrderDetl>().eq("order_no",order.getOrderNo())); |
| | | |
| | | if (kingDeeUtilType == null || kingDeeUtilType.formId == null) { |
| | | log.warn("kingDeeUtilType 为空,已跳过本次同步!"); |
| | | return null; |
| | | } |
| | | switch (kingDeeUtilType.formId) { |
| | | case "PUR_RECEIVEBIll": // 进仓通知单 |
| | | path = imPurinbillAdd; |
| | |
| | | JSONArray billentryArray = new JSONArray(); // 用于存储 billentry 对象 |
| | | String suppCode = null; // 供应商 |
| | | String boxType2 = null; // 货主/货源 |
| | | |
| | | // 遍历订单详情 |
| | | Date now = new Date(); |
| | | |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | suppCode = orderDetl.getSuppCode(); |
| | | boxType2 = orderDetl.getBoxType2(); |
| | |
| | | continue; |
| | | } |
| | | // JSONArray idArr = new JSONArray(); |
| | | // idArr.add(0L); // ✅ 注意必须是 Long 类型的 0L |
| | | // Double reportNum = orderDetl.getQty() - orderDetl.getWorkQty();//上报数量减去已上报数量 |
| | | // idArr.add(0L); |
| | | // 创建 billentry_lk 对象 |
| | | JSONObject billentryLk = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编号 |
| | | .fluentPut("billentry_lk", billentryLkArray); |
| | | |
| | | billentryArray.add(billentry); |
| | | // orderDetl.setWorkQty(orderDetl.getQty()); |
| | | // orderDetlService.updateById(orderDetl);//将上报数覆盖到历史上 |
| | | } |
| | | Date now = new Date(); |
| | | return new JSONObject() |
| | | .fluentPut("data", new JSONArray(Arrays.asList( |
| | | new JSONObject() |
| | |
| | | .fluentPut("supplier_number", suppCode) // 供应商编号 |
| | | .fluentPut("billentry", billentryArray) // 将 billentry 数组添加到请求参数 |
| | | ))); |
| | | |
| | | case "STK_MISCELLANEOUS": // 其他入库单 |
| | | path = imOtherinbill; |
| | | billentryArray = new JSONArray(); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | JSONObject billentry = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编码 |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("warehouse_number", "CK001") // 仓库 |
| | | .fluentPut("invstatus_number", "110") |
| | | .fluentPut("invtype_number", "110") |
| | | .fluentPut("outinvstatus_number", "110") |
| | | .fluentPut("outinvtype_number", "110") |
| | | .fluentPut("linetype_number", "010"); |
| | | billentryArray.add(billentry); |
| | | } |
| | | Date nowMis = new Date(); |
| | | return new JSONObject() |
| | | .fluentPut("data", new JSONArray(Arrays.asList( |
| | | new JSONObject() |
| | | // .fluentPut("id", 0L) |
| | | .fluentPut("billno", order.getOrderNo()) |
| | | // .fluentPut("bookdate", sdf1.format(nowMis)) |
| | | .fluentPut("biztime", sdf1.format(nowMis)) |
| | | .fluentPut("biztype_number", "354") |
| | | .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S") |
| | | .fluentPut("org_number", "BU-00001") |
| | | .fluentPut("invscheme_number", "354") |
| | | .fluentPut("billentry", billentryArray) |
| | | ))); |
| | | case "STK_MisDelivery": // 其他出库单 |
| | | path = imOtheroutbill; |
| | | billentryArray = new JSONArray(); |
| | | Date nowOut = new Date(); |
| | | for (OrderDetl orderDetl : orderDetlList) { |
| | | if (orderDetl.getQty() == 0) { |
| | | continue; |
| | | } |
| | | JSONObject billentry = new JSONObject() |
| | | .fluentPut("id", 0L) |
| | | .fluentPut("material_number", orderDetl.getMatnr()) // 物料编码 |
| | | .fluentPut("qty", orderDetl.getQty()) // 数量 |
| | | .fluentPut("warehouse_number", "CK001") // 仓库 |
| | | .fluentPut("invstatus_number", "110") |
| | | .fluentPut("invtype_number", "110") |
| | | .fluentPut("outinvstatus_number", "110") |
| | | .fluentPut("outinvtype_number", "110") |
| | | .fluentPut("linetype_number", "010"); |
| | | billentryArray.add(billentry); |
| | | } |
| | | return new JSONObject() |
| | | .fluentPut("data", new JSONArray(Arrays.asList( |
| | | new JSONObject() |
| | | // .fluentPut("id", 0L) |
| | | .fluentPut("billno", order.getOrderNo()) |
| | | // .fluentPut("bookdate", sdf1.format(nowMis)) |
| | | .fluentPut("biztime", sdf1.format(nowOut)) |
| | | .fluentPut("biztype_number", "354") |
| | | .fluentPut("billtype_number", "im_OtherInBill_STD_BT_S") |
| | | .fluentPut("org_number", "BU-00001") |
| | | .fluentPut("invscheme_number", "354") |
| | | .fluentPut("billentry", billentryArray) |
| | | ))); |
| | | default: |
| | | // 默认处理:可以抛出异常或返回空对象 |
| | | throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId); |
| | | } |
| | | } |
| | |
| | | private ReturnT<String> sendRequestAndProcessResponse(Order order, ErpSecret erpSecret, JSONObject add) { |
| | | String response = ""; |
| | | boolean success = false; |
| | | |
| | | try { |
| | | // 设置请求头 |
| | | HashMap<String, Object> headers = buildRequestHeaders(erpSecret); |
| | | |
| | | // 发送请求,将 JSONObject 转换为 String |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | |
| | | .setJson(add.toJSONString()) // 将 JSONObject 转换为 String |
| | | .build() |
| | | .doPost(); |
| | | |
| | | // 解析响应 |
| | | JSONObject jsonResponse = JSON.parseObject(response); |
| | | |
| | | // 判断是否因为 token 过期 (errorCode = 401) |
| | | if ("401".equals(jsonResponse.getString("errorCode"))) { |
| | | log.error("认证失败,尝试重新获取 Token"); |
| | |
| | | .build() |
| | | .doPost(); |
| | | } |
| | | |
| | | // 解析返回的响应 |
| | | JSONObject data = jsonResponse.getJSONObject("data"); |
| | | String errorCode = jsonResponse.getString("errorCode"); |
| | | boolean status = jsonResponse.getBooleanValue("status"); |
| | | |
| | | // 检查接口调用的整体状态 |
| | | if ("0".equals(errorCode) && status) { |
| | | // 获取成功与失败的数量 |
| | | int successCount = data.getInteger("successCount"); |
| | | int failCount = data.getInteger("failCount"); |
| | | |
| | | if (failCount == 0) { |
| | | success = true; |
| | | log.info("接口调用成功,成功的操作数量: {}", successCount); |
| | |
| | | JSONObject resultItem = resultArray.getJSONObject(i); |
| | | String billNo = resultItem.getString("number"); // 获取返回的单据号 |
| | | String billId = resultItem.getString("id"); // 获取返回的ID |
| | | |
| | | // 判断返回的单据号与订单号是否一致 |
| | | if (billNo != null && billNo.equals(order.getOrderNo())) { |
| | | // 如果一致,设置订单的 number |
| | | order.setNumber(billId); |
| | | orderService.updateById(order); |
| | | log.info("订单号 {} 与返回的单据号匹配,设置订单 ID 为 {}", order.getOrderNo(), billId); |
| | | } |
| | | } |
| | |
| | | // 保存接口日志 |
| | | saveApiLog(add, response, success); |
| | | } |
| | | |
| | | return success ? SUCCESS : FAIL; |
| | | } |
| | | |
| | |
| | | private void saveApiLog(JSONObject add, String response, boolean success) { |
| | | try { |
| | | apiLogService.save( |
| | | "进仓通知单上报新增", |
| | | "入库上报新增", |
| | | URL + path, |
| | | null, |
| | | "127.0.0.1", |
| | |
| | | |
| | | @Value("${erp.address.imPurinbillBatchSubmit}") |
| | | private String imPurinbillBatchSubmit; |
| | | |
| | | @Value("${erp.address.imOtheroutbillSubmit}") |
| | | private String imOtheroutbillSubmit; |
| | | @Value("${erp.address.imOtherinbillSubmit}") |
| | | private String imOtherinbillSubmit; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | @Autowired |
| | |
| | | |
| | | private JSONObject buildRequestParams(Order order, KingDeeUtilType kingDeeUtilType, |
| | | SimpleDateFormat sdf1, SimpleDateFormat sdf2) { |
| | | JSONObject dataObj = new JSONObject(); |
| | | JSONArray idArray = new JSONArray(); |
| | | switch (kingDeeUtilType.formId) { |
| | | case "PUR_RECEIVEBIll": // 进仓通知单提交 |
| | | path = imPurinbillBatchSubmit; |
| | | JSONArray idArray = new JSONArray(); |
| | | idArray.add(order.getNumber()); |
| | | JSONObject dataObj = new JSONObject(); |
| | | dataObj.fluentPut("id", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | |
| | | case "STK_MISCELLANEOUS"://其他入库单 |
| | | path = imOtherinbillSubmit; |
| | | idArray.add(order.getOrderNo()); |
| | | dataObj.fluentPut("billno", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | case "STK_MisDelivery"://其他出库单 |
| | | path = imOtheroutbillSubmit; |
| | | idArray.add(order.getOrderNo()); |
| | | dataObj.fluentPut("billno", idArray); |
| | | return new JSONObject().fluentPut("data", dataObj); |
| | | default: |
| | | throw new IllegalArgumentException("Unsupported formId: " + kingDeeUtilType.formId); |
| | | } |
| | |
| | | BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1), |
| | | BD_RRGANIZATION(2, "供应商","BD_RRGANIZATION","","","",1), |
| | | PUR_RECEIVEBIll(3, "收料单","PUR_RECEIVEBIll","","","",1), |
| | | // INR(1, "进仓通知库单上报","INR","FRealQty","","",1), |
| | | // PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1), |
| | | // PRD_PickMtrl(3, "生产领料单","PRD_PickMtrl","FActualQty","","",1), |
| | | // PRD_ReturnMtrl(4, "生产退料单","PRD_ReturnMtrl","FQty","","",1), |
| | | // PRD_FeedMtrl(5, "生产补料单","PRD_FeedMtrl","FActualQty","","",1), |
| | | SAL_OUTSTOCK(7, "销售出库单","SAL_OUTSTOCK","FRealQty","","",0), |
| | | // STK_MisDelivery(19, "其他出库单","STK_MisDelivery","FQty","","",0), |
| | | // STK_MISCELLANEOUS(18, "其他入库单","STK_MISCELLANEOUS","FQty","其他入库单","STK_MISCELLANEOUS",1), |
| | | |
| | | // SAL_RETURNSTOCK(9, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1), |
| | | PRD_PickMtrl(10, "生产领料单","PRD_PickMtrl","","","",0), |
| | | // PRD_ReturnMtrl(12, "生产退料单","PRD_ReturnMtrl","FQty","","",1), |
| | | // PRD_FeedMtrl(14, "生产补料单","PRD_FeedMtrl","FActualQty","","",0), |
| | | PRD_MORPT(16, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1), |
| | | // STK_InspectionForm(20, "产品检验单","STK_InspectionForm","","","",0), |
| | | |
| | | // PUR_MRB(2, "采购退料单","PUR_MRB","FRMREALQTY","","",1), |
| | | // STK_TransferDirect(6, "直接调拨单","STK_TransferDirect","","FQty","",1), |
| | | // STK_StockCountGain(7, "盘盈单","STK_StockCountGain","FGainQty","","",1), |
| | | // STK_StockCountLoss(8, "盘亏单","STK_StockCountLoss","FLossQty","","",1), |
| | | // STK_MisDelivery(9, "其他出库单","STK_MisDelivery","FQty","","",1), |
| | | // SP_PickMtrl(10, "简单生产领料单","SP_PickMtrl","FActualQty","","",1), |
| | | // SP_ReturnMtrl(11, "简单生产退料单","SP_ReturnMtrl","FQty","","",1), |
| | | // SAL_OUTSTOCK(12, "销售出库单","SAL_OUTSTOCK","FRealQty","","",1), |
| | | // SAL_RETURNSTOCK(13, "销售退货单","SAL_RETURNSTOCK","FRealQty","","",1), |
| | | // SAL_DELIVERYNOTICE(14, "发货通知单","SAL_DELIVERYNOTICE","FQty","销售出库单","SAL_OUTSTOCK",0), |
| | | // STK_MISCELLANEOUS(15, "其他入库单","STK_MISCELLANEOUS","FQty","其他入库单","STK_MISCELLANEOUS",1), |
| | | // BD_Supplier(16, "供应商","BD_Supplier","","","",1), |
| | | // PUR_ReceiveBill(17, "收料通知单","PUR_ReceiveBill","FPOQTY","采购入库单","STK_InStock",1), |
| | | // PRD_MORPT(18, "生产汇报单","PRD_MORPT","FFinishQty","生产入库单","PRD_INSTOCK",1), |
| | | // PRD_INSTOCK(19, "生产入库单","PRD_INSTOCK","","","",1), |
| | | // SAL_RETURNNOTICE(20, "退货通知单","SAL_RETURNNOTICE","FBaseJunkedQty","销售退货单","SAL_RETURNSTOCK",1), |
| | | // STK_OutStockApply(21, "出库申请单","STK_OutStockApply","FTotalSecQty","其他出库单","STK_MisDelivery",0), |
| | |
| | | this.correspondingFormId = correspondingFormId; |
| | | this.pakIn = pakIn; //1入库 0出库 |
| | | } |
| | | |
| | | public static KingDeeUtilType getByFormId(String formId) { |
| | | if (formId == null) return null; |
| | | for (KingDeeUtilType type : values()) { |
| | | if (formId.equals(type.formId)) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | public static KingDeeUtilType get(Short id) { |
| | | if (null == id) { |
| | | return null; |
| | |
| | | enabled: false |
| | | datasource: |
| | | driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver |
| | | # url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs |
| | | url: jdbc:sqlserver://10.10.10.235;databasename=jshdasrs |
| | | url: jdbc:sqlserver://127.0.0.1:1433;databasename=jshdasrs |
| | | # url: jdbc:sqlserver://10.10.10.235;databasename=jshdasrs |
| | | # url: jdbc:sqlserver://192.168.4.191:50948;databasename=jshdasrs |
| | | username: sa |
| | | password: sa@123 |
| | |
| | | #登录接口开关 |
| | | LoginAuthenticationSwitch: true |
| | | #上报、审核单据开关 |
| | | ReviewOrderSwitch: false |
| | | ReviewOrderSwitch: true |
| | | # 地址 |
| | | address: |
| | | URL: https://shyucheng.test.kdgalaxy.com |
| | |
| | | imPurinbillBatchSubmit: /kapi/v2/im/im_purinbill/batchSubmit |
| | | #进仓入库单审核 |
| | | imPurinbillBatchAudit: /kapi/v2/im/im_purinbill/batchAudit |
| | | #销售出库单查询 |
| | | imSaloutbill: /kapi/v2/eap7/im/im_saloutbill/query |
| | | #销售出库单上报 |
| | | imSaloutbillReport: /kapi/v2/im/im_saloutbill/batchAudit |
| | | #销售退货查询 |
| | | scpSalreturn: /kapi/v2/eap7/scp/scp_salreturn/batchQuery |
| | | #销售退货进仓单 |
| | | scpSalreturnDetl: /kapi/v2/eap7/scp/scp_salreturn/query |
| | | #销售退货上报 |
| | | scpSalreturnReport: /kapi/v2/eap7/scp/scp_salreturn/audit |
| | | #生产领料查询 |
| | | imMdcMftproorder: /kapi/v2/im/im_mdc_mftproorder/batchQuery |
| | | #生产领料汇报 |
| | | imMdcMftproorderReport: /kapi/v2/im/im_mdc_mftproorder/batchAudit |
| | | #生产退料单查询 |
| | | imMdcMftreturnorder: /kapi/v2/im/im_mdc_mftreturnorder/batchQuery |
| | | #生产退料单上报 |
| | | imMdcMftreturnorderReport: /kapi/v2/im/im_mdc_mftreturnorder/batchAudit |
| | | #生产补料单 |
| | | imMdcMftfeedorder: /kapi/v2/im/im_mdc_mftfeedorder/batcheQuery |
| | | #生产补料单汇报 |
| | | imMdcMftfeedorderReport: /kapi/v2/im/im_mdc_mftfeedorder/batchAudit |
| | | #生产进仓单查询 |
| | | imProductinbill: /kapi/v2/eap7/pom/pom_mftorderreport/query |
| | | #生产进仓单查询上报 |
| | | imProductinbillReport: /kapi/v2/im/im_productinbill/batchAudit |
| | | #其他出库单上报 |
| | | imOtheroutbill: /kapi/v2/im/im_otheroutbill/batchSave |
| | | #其他出库单提交 |
| | | imOtheroutbillSubmit: /kapi/v2/im/im_otheroutbill/batchSubmit |
| | | #其他出库单审核 |
| | | imOtheroutbillAudi: /kapi/v2/im/im_otheroutbill/batchAudit |
| | | #其他入库新增 |
| | | imOtherinbill: /kapi/v2/im/im_otherinbill/batchAdd |
| | | #其他入库提交 |
| | | imOtherinbillSubmit: /kapi/v2/im/im_otherinbill/batchSubmit |
| | | #其他入库审核 |
| | | imOtherinbillAudit: /kapi/v2/im/im_otherinbill/batchAudit |
| | | #产品检验单查询 |
| | | qcppManuinspec: /kapi/v2/eap7/qcpp/qcpp_manuinspec/query |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | #结果上报(保存)单地址 |
| | | outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc |
| | | #结果上报(提交)单地址 |
| | | outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc |
| | | #结果上报(审核)单地址 |
| | | outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc |
| | | # #结果上报(保存)单地址 |
| | | # outaddressSave: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save.common.kdsvc |
| | | # #结果上报(提交)单地址 |
| | | # outaddressSubmit: K3Cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit.common.kdsvc |
| | | # #结果上报(审核)单地址 |
| | | # outaddressAudit: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit.common.kdsvc |
| | | # 登录账号管理 |
| | | login : |
| | | xAcfwIdentity: "djF8MTlhNTNhZjJhOWEwMWRlODhlMDF8NDkxNTk0MDU4MTQxNXwus9WaEHKRh0daJe1TWmVoMkv3zQY2knNTZRzaOhRgwnw" |
| | |
| | | ROW_NUMBER() over (order by sum(a.anfme) desc) as row |
| | | , a.matnr |
| | | , sum(a.anfme) as anfme |
| | | , a.order_no as orderNo |
| | | , a.standby1 |
| | | , a.standby2 |
| | | , a.standby3 |
| | | , a.box_type1 as boxType1 |
| | | , a.box_type3 as boxType3 |
| | | from asr_loc_detl a |
| | | where 1=1 |
| | | group by a.matnr |
| | | group by a.matnr,a.order_no,a.box_type3,a.standby1,a.standby2,a.standby3,a.box_type1 |
| | | </select> |
| | | |
| | | <select id="selectPakoutByRule" resultMap="BaseResultMap"> |
| | |
| | | end |
| | | desc |
| | | </select> |
| | | |
| | | <select id="queryStockMatnr" resultMap="BaseResultMap"> |
| | | select a.* |
| | | from asr_loc_detl a |
| | | left join asr_loc_mast b on a.loc_no = b.loc_no |
| | | where 1=1 |
| | | and b.loc_sts = 'F' |
| | | and a.matnr = #{matnr} |
| | | order by |
| | | DATEPART(yyyy,a.modi_time),DATEPART(mm,a.modi_time),DATEPART(dd,a.modi_time), a.anfme |
| | | desc, |
| | | NEWID(), |
| | | case |
| | | when (left(a.loc_no, 2) = '01') then 0 |
| | | when (left(a.loc_no, 2) = '02') then 1 |
| | | when (left(a.loc_no, 2) = '03') then 1 |
| | | when (left(a.loc_no, 2) = '04') then 0 |
| | | when (left(a.loc_no, 2) = '05') then 0 |
| | | when (left(a.loc_no, 2) = '06') then 1 |
| | | when (left(a.loc_no, 2) = '07') then 1 |
| | | when (left(a.loc_no, 2) = '08') then 0 |
| | | when (left(a.loc_no, 2) = '09') then 0 |
| | | when (left(a.loc_no, 2) = '10') then 1 |
| | | when (left(a.loc_no, 2) = '11') then 1 |
| | | when (left(a.loc_no, 2) = '12') then 0 |
| | | when (left(a.loc_no, 2) = '13') then 0 |
| | | when (left(a.loc_no, 2) = '14') then 1 |
| | | when (left(a.loc_no, 2) = '15') then 1 |
| | | when (left(a.loc_no, 2) = '16') then 0 |
| | | when (left(a.loc_no, 2) = '17') then 0 |
| | | when (left(a.loc_no, 2) = '18') then 1 |
| | | when (left(a.loc_no, 2) = '19') then 1 |
| | | when (left(a.loc_no, 2) = '20') then 0 |
| | | when (left(a.loc_no, 2) = '21') then 0 |
| | | when (left(a.loc_no, 2) = '22') then 1 |
| | | when (left(a.loc_no, 2) = '23') then 1 |
| | | when (left(a.loc_no, 2) = '24') then 0 |
| | | when (left(a.loc_no, 2) = '25') then 0 |
| | | when (left(a.loc_no, 2) = '26') then 1 |
| | | when (left(a.loc_no, 2) = '27') then 1 |
| | | when (left(a.loc_no, 2) = '28') then 0 |
| | | when (left(a.loc_no, 2) = '29') then 0 |
| | | when (left(a.loc_no, 2) = '30') then 1 |
| | | when (left(a.loc_no, 2) = '31') then 1 |
| | | when (left(a.loc_no, 2) = '32') then 0 |
| | | when (left(a.loc_no, 2) = '33') then 0 |
| | | when (left(a.loc_no, 2) = '34') then 1 |
| | | when (left(a.loc_no, 2) = '35') then 1 |
| | | when (left(a.loc_no, 2) = '36') then 0 |
| | | when (left(a.loc_no, 2) = '37') then 0 |
| | | when (left(a.loc_no, 2) = '38') then 1 |
| | | when (left(a.loc_no, 2) = '39') then 1 |
| | | when (left(a.loc_no, 2) = '40') then 0 |
| | | when (left(a.loc_no, 2) = '41') then 0 |
| | | when (left(a.loc_no, 2) = '42') then 1 |
| | | when (left(a.loc_no, 2) = '43') then 1 |
| | | when (left(a.loc_no, 2) = '44') then 0 |
| | | when (left(a.loc_no, 2) = '45') then 0 |
| | | when (left(a.loc_no, 2) = '46') then 1 |
| | | when (left(a.loc_no, 2) = '47') then 1 |
| | | when (left(a.loc_no, 2) = '48') then 0 |
| | | else 0 |
| | | end |
| | | desc |
| | | </select> |
| | | <select id="queryStockAll" resultMap="BaseResultMap"> |
| | | select a.* |
| | | from asr_loc_detl a |
| | |
| | | and matnr = #{matnr} |
| | | <include refid="batchSeq"></include> |
| | | </delete> |
| | | |
| | | <select id="findByBarcode" resultMap="BaseResultMap"> |
| | | select * from asr_wrk_detl where 1=1 and zpallet = #{barcode} and wrk_no != 9996 |
| | | </select> |
| | | <update id="updateAnfme"> |
| | | update asr_wrk_detl |
| | | set anfme = #{anfme} |
| | |
| | | ,{field: 'anfme', align: 'center',title: '数量', hide: false} |
| | | ,{field: 'zpallet', align: 'center',title: '托盘条码', hide: false} |
| | | |
| | | // ,{field: 'specs', align: 'center',title: '规格', hide: true} |
| | | ,{field: 'boxType3', align: 'center',title: '采购单号', hide: true} |
| | | // ,{field: 'model', align: 'center',title: '代码', hide: true} |
| | | // ,{field: 'color', align: 'center',title: '颜色', hide: true} |
| | | // ,{field: 'brand', align: 'center',title: '品牌', hide: true} |
| | |
| | | {field: 'standby3', title: '客户SKU'}, |
| | | {field: 'boxType1', title: '货主'}, |
| | | {field: 'boxType3', title: '采购单号'}, |
| | | ,{field: 'standby1', align: 'center',title: '客户PO', hide: false} |
| | | {field: 'standby1', align: 'center',title: '客户PO', hide: false} |
| | | ,{field: 'standby2', align: 'center',title: 'UPC', hide: false}, |
| | | // {field: 'batch', title: '批号'}, |
| | | // {field: 'anfme', title: '数量'}, |
| | |
| | | ,{field: 'orderNo', align: 'center',title: '单据编号', templet: '#orderNoTpl', width: 160} |
| | | ,{field: 'matnr', align: 'center',title: '商品编号', width: 160} |
| | | ,{field: 'maktx', align: 'center',title: '商品名称', width: 200} |
| | | ,{field: 'batch', align: 'center',title: '序列码',hide:true} |
| | | ,{field: 'specs', align: 'center',title: '规格'} |
| | | // ,{field: 'batch', align: 'center',title: '序列码',hide:true} |
| | | // ,{field: 'specs', align: 'center',title: '规格'} |
| | | ,{field: 'standby1', align: 'center',title: 'po', hide: false} |
| | | ,{field: 'standby2', align: 'center',title: 'upc', hide: false} |
| | | // ,{field: 'anfme', align: 'center',title: '数量'} |
| | |
| | | cols: [[ |
| | | // {type: 'checkbox', merge: ['orderNo']}, |
| | | {field: 'orderNo', title: '单据编号', merge: true, align: 'center'}, |
| | | {field: 'title', title: '商品', merge: true, align: 'center', width: 350}, |
| | | {field: 'matnr', title: '物料编码', merge: true, align: 'center', width: 350}, |
| | | {field: 'batch', title: '序列码', align: 'center',hide:true}, |
| | | {field: 'anfme', title: '数量', align: 'center', width: 90, style: 'font-weight: bold'}, |
| | | {field: 'locNo', title: '货位', align: 'center', width: 100, templet: '#locNoTpl'}, |