New file |
| | |
| | | package com.zy.asrs.task.kingdee; |
| | | |
| | | import com.zy.asrs.task.kingdee.handler.InboundOrderHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class InboundOrderScheduler { |
| | | |
| | | @Autowired |
| | | private InboundOrderHandler inboundOrderHandler; |
| | | @Value("${erp.switch.InboundOrderSwitch}") |
| | | private boolean InboundOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | void login(){ |
| | | if(!InboundOrderSwitch){ |
| | | return; |
| | | } |
| | | inboundOrderHandler.start(); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee; |
| | | |
| | | import com.zy.asrs.task.kingdee.handler.LoginAuthenticationHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | @Slf4j |
| | | @Component |
| | | public class LoginAuthenticationScheduler { |
| | | |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | @Value("${erp.switch.LoginAuthenticationSwitch}") |
| | | private boolean LoginAuthenticationSwitch; |
| | | |
| | | //@Scheduled(cron = "0/3 * * * * ? ") |
| | | void login(){ |
| | | if(!LoginAuthenticationSwitch){ |
| | | return; |
| | | } |
| | | loginAuthenticationHandler.start(); |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee; |
| | | |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.kingdee.handler.ReviewOrderSyncHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2023/10/21 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class ReviewOrderSyncScheduler { |
| | | |
| | | @Autowired |
| | | private ReviewOrderSyncHandler reviewOrderSyncHandler; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | | return; |
| | | } |
| | | List<Order> orders = orderService.selectComplete(); |
| | | for (Order order : orders) { |
| | | ReturnT<String> result = reviewOrderSyncHandler.start(order); |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]向erp审核失败", order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee; |
| | | |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.kingdee.handler.SubmitOrderSyncHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.10.21 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class SaveOrderSyncScheduler { |
| | | |
| | | @Autowired |
| | | private SubmitOrderSyncHandler submitOrderSyncHandler; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if (1==1) return; |
| | | if(!ReviewOrderSwitch){ |
| | | return; |
| | | } |
| | | List<Order> orders = orderService.selectComplete(); |
| | | for (Order order : orders) { |
| | | ReturnT<String> result = submitOrderSyncHandler.start(order); |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]提交至erp失败", order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee; |
| | | |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.asrs.task.kingdee.handler.SaveOrderSyncHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.scheduling.annotation.Async; |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.10.21 |
| | | */ |
| | | @Slf4j |
| | | @Component |
| | | public class SubmitOrderSyncScheduler { |
| | | |
| | | @Autowired |
| | | private SaveOrderSyncHandler saveOrderSyncHandler; |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Value("${erp.switch.ReviewOrderSwitch}") |
| | | private boolean ReviewOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!ReviewOrderSwitch){ |
| | | return; |
| | | } |
| | | List<Order> orders = orderService.selectComplete(); |
| | | for (Order order : orders) { |
| | | ReturnT<String> result = saveOrderSyncHandler.start(order); |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]保存至erp失败", order.getOrderNo()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.core.common.Cools; |
| | | import com.core.common.DateUtils; |
| | | import com.core.common.SnowflakeIdWorker; |
| | | import com.zy.asrs.entity.*; |
| | | import com.zy.asrs.service.*; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.erp.kingdee.entity.param.InFormIdParam; |
| | | import com.zy.erp.kingdee.enums.KingDeeUtilType; |
| | | import com.zy.erp.kingdee.utils.KingDeeUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | public class InboundOrderHandler extends AbstractHandler<String> { |
| | | @Value("${erp.address.URL}") |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.inaddress}") |
| | | //单据,商品档案地址 |
| | | private String inaddress; |
| | | |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | @Autowired |
| | | private MatService matService; |
| | | |
| | | @Autowired |
| | | private TagService tagService; |
| | | |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | |
| | | @Autowired |
| | | private SnowflakeIdWorker snowflakeIdWorker; |
| | | |
| | | @Transactional |
| | | public synchronized ReturnT<String> start() { |
| | | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | //登录金蝶 |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | for(KingDeeUtilType kingDeeUtilType : KingDeeUtilType.values()) { |
| | | InFormIdParam inFormIdParam = new InFormIdParam(); |
| | | DocType docType = docTypeService.selectOne(new EntityWrapper<DocType>().eq("doc_name", kingDeeUtilType.desc)); |
| | | if (Cools.isEmpty(docType) && !kingDeeUtilType.formId.equals("BD_MATERIAL")){ |
| | | docType = docTypeService.selectOrAdd(kingDeeUtilType.desc, kingDeeUtilType.pakIn.equals(1)); |
| | | } |
| | | inFormIdParam.setFormId(kingDeeUtilType.formId); |
| | | inFormIdParam.setLimit(100); |
| | | inFormIdParam.setStartRow("0"); |
| | | String FDocumentStatus=null; |
| | | |
| | | //条件和需要获得的结果拼接 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("FormId", inFormIdParam.getFormId()); |
| | | jsonObject.put("Limit", inFormIdParam.getLimit()); |
| | | jsonObject.put("StartRow", inFormIdParam.getStartRow()); |
| | | //物料档案查询 |
| | | if(kingDeeUtilType.formId.equals("BD_MATERIAL")){ |
| | | Tag tag = tagService.selectByName("全部", 1); |
| | | //物料状态 FUseOrgId .FNumber |
| | | FDocumentStatus="C"; |
| | | jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(tag.getUpdateTime())+"' and FDocumentStatus='"+FDocumentStatus+"' and FUseOrgId .FNumber='100'"); |
| | | jsonObject.put("FieldKeys", "FName,FNumber,FCreateDate,FSpecification,FDocumentStatus"); |
| | | // FName : 物料名称 ; |
| | | // FNumber :物料编号; |
| | | // FCreateDate :物料创建时间; |
| | | // FSpecification :物料规格; |
| | | // FDocumentStatus :物料状态 |
| | | }else{ |
| | | //获取最新时间 |
| | | //单据状态 |
| | | FDocumentStatus="B"; |
| | | jsonObject.put("FilterString", "FCreateDate>'"+sdf.format(docType.getCreateTime())+"'"+" and FStockId.Fname='立库'"+" and FDocumentStatus='"+FDocumentStatus+"'"); |
| | | jsonObject.put("FieldKeys", "FBillNo,FCreateDate,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,"+kingDeeUtilType.anfme+",FDocumentStatus"); |
| | | // FBillNo :单据编号; |
| | | // FCreateDate :单据创建时间; |
| | | // FMaterialId.FNumber : 物料编码; |
| | | // FMaterialName :物料名称; |
| | | // FMaterialId.FSpecification:物料规格 |
| | | // anfme : 物料数量 |
| | | // FDocumentStatus :单据状态; |
| | | |
| | | } |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | String add = jsonObject1.toJSONString(); |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Cookie", start.getContent()); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(inaddress) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | JSONArray data = JSON.parseArray(response); |
| | | if(data.size()<=0) continue; |
| | | if (data.getJSONArray(0).get(0).toString().length()>=20) continue; |
| | | if (kingDeeUtilType.formId.equals("BD_MATERIAL")) {//物料档案 |
| | | Tag tag = tagService.selectByName("全部", 1); |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONArray jsonArray = data.getJSONArray(j); |
| | | //对美国时间进行转换 |
| | | Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(2).toString()); |
| | | //生成商品档案 |
| | | //商品编号 |
| | | Mat mat = matService.selectByMatnr(jsonArray.get(1).toString()); |
| | | if (mat == null) { |
| | | mat = new Mat(); |
| | | mat.setMatnr(jsonArray.get(1).toString()); |
| | | mat.setMaktx(jsonArray.get(0).toString()); |
| | | mat.setSpecs(jsonArray.get(3).toString());//规格 |
| | | mat.setTagId(tag.getId()); |
| | | mat.setCreateTime(jsonDate);//商品创建时间 |
| | | mat.setUpdateTime(new Date()); |
| | | mat.setStatus(1); |
| | | //最新抓取商品时间 |
| | | if (!matService.insert(mat)) { |
| | | // throw new CoolException("服务器内部错误,请联系管理员"); |
| | | callApiLogSaveMat(mat,kingDeeUtilType, "同步新物料出错!!!"+mat, false); |
| | | log.info("同步新物料出错!!!参数:[{}]、[{}]",mat,jsonArray); |
| | | } else { |
| | | callApiLogSaveMat(mat,kingDeeUtilType, "同步新物料!", true); |
| | | // log.info("同步新物料[商品编号:{}]", mat.getMatnr()); |
| | | } |
| | | }else { |
| | | if (!jsonDate.equals(tag.getUpdateTime())){ |
| | | callApiLogSaveMat(mat,kingDeeUtilType, "商品编号重复:"+mat.getMatnr(), false); |
| | | log.info("同步新物料[商品编号:{}],商品编号重复!!!", mat.getMatnr()); |
| | | } |
| | | } |
| | | tag.setUpdateTime(jsonDate); |
| | | } |
| | | tagService.updateById(tag); |
| | | } else { |
| | | for (int j = 0; j < data.size(); j++) { |
| | | JSONArray jsonArray = data.getJSONArray(j); |
| | | //最新抓取时间 |
| | | Date jsonDate = KingDeeUtil.KingDeeDate(jsonArray.get(1).toString()); |
| | | docType.setCreateTime(jsonDate); |
| | | Order order = orderService.selectByNo(jsonArray.get(0).toString()); |
| | | if (Cools.isEmpty(order)) { |
| | | Date now = new Date(); |
| | | // 单据主档 |
| | | order = new Order( |
| | | String.valueOf(snowflakeIdWorker.nextId()), // 编号[非空] |
| | | jsonArray.get(0).toString(), // 订单编号 |
| | | DateUtils.convert(now), // 单据日期 |
| | | docType.getDocId(), // 单据类型 |
| | | null, // 项目编号 |
| | | null, // |
| | | null, // 调拨项目编号 |
| | | null, // 初始票据号 |
| | | null, // 票据号 |
| | | null, // 客户编号 |
| | | null, // 客户 |
| | | null, // 联系方式 |
| | | null, // 操作人员 |
| | | null, // 合计金额 |
| | | null, // 优惠率 |
| | | null, // 优惠金额 |
| | | null, // 销售或采购费用合计 |
| | | null, // 实付金额 |
| | | null, // 付款类型 |
| | | null, // 业务员 |
| | | null, // 结算天数 |
| | | null, // 邮费支付类型 |
| | | null, // 邮费 |
| | | null, // 付款时间 |
| | | null, // 发货时间 |
| | | null, // 物流名称 |
| | | null, // 物流单号 |
| | | 1L, // 订单状态 |
| | | 1, // 状态 |
| | | 9527L, // 添加人员 |
| | | now, // 添加时间 |
| | | 9527L, // 修改人员 |
| | | now, // 修改时间 |
| | | null // 备注 |
| | | ); |
| | | |
| | | if (!orderService.insert(order)) { |
| | | if (!jsonDate.equals(docType.getCreateTime())){ |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "生成单据主档失败,请联系管理员"+order, false); |
| | | } |
| | | continue; |
| | | // throw new CoolException("生成单据主档失败,请联系管理员"); |
| | | } |
| | | } |
| | | //物料编码 |
| | | Mat mat = matService.selectByMatnr(jsonArray.get(2).toString()); |
| | | if (Cools.isEmpty(mat)) { |
| | | if (!jsonDate.equals(docType.getCreateTime())){ |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "编号商品检索失败,请先添加商品"+jsonArray.get(2).toString(), false); |
| | | } |
| | | continue; |
| | | } |
| | | OrderDetl orderDetl1 = orderDetlService.selectOne(new EntityWrapper<OrderDetl>().eq("order_no", jsonArray.get(0).toString()).eq("matnr", jsonArray.get(2).toString())); |
| | | if (!Cools.isEmpty(orderDetl1)) { |
| | | continue; |
| | | } |
| | | OrderDetl orderDetl = new OrderDetl(); |
| | | orderDetl.sync(mat); |
| | | orderDetl.setBatch(null); |
| | | orderDetl.setAnfme(Double.parseDouble(jsonArray.get(5).toString())); |
| | | orderDetl.setOrderId(order.getId()); |
| | | orderDetl.setOrderNo(order.getOrderNo()); |
| | | orderDetl.setCreateBy(9527L); |
| | | orderDetl.setCreateTime(new Date()); |
| | | orderDetl.setUpdateBy(9527L); |
| | | orderDetl.setUpdateTime(new Date()); |
| | | orderDetl.setStatus(1); |
| | | orderDetl.setQty(0.0D); |
| | | if (!orderDetlService.insert(orderDetl)) { |
| | | callApiLogSaveOrder(order,kingDeeUtilType, "生成单据明细失败,请联系管理员!订单号:"+order.getOrderNo(), false); |
| | | // throw new CoolException("生成单据明细失败,请联系管理员"); |
| | | } |
| | | } |
| | | docTypeService.updateById(docType); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | // try { |
| | | // // 保存接口日志 |
| | | // apiLogService.save( |
| | | // "轮询数据", |
| | | // URL + inaddress, |
| | | // null, |
| | | // "127.0.0.1", |
| | | // add, |
| | | // response, |
| | | // success |
| | | // ); |
| | | // } catch (Exception e) { |
| | | // log.error("", e); |
| | | // } |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public void callApiLogSaveMat(Mat mat, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |
| | | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, |
| | | "物料编号:" + mat.getMatnr() + "、物料名称:" + mat.getName() + "、类型:" + mat.getTagId$() + "、状态:" + mat.getStatus$(), |
| | | response, bool); |
| | | } |
| | | |
| | | public void callApiLogSaveOrder(Order order, KingDeeUtilType kingDeeUtilType, String response, Boolean bool) { |
| | | apiLogService.save("获取"+kingDeeUtilType.desc, kingDeeUtilType.formId, "null", URL, |
| | | "单据编号:" + order.getId() + "、状态:" + order.getStatus$(), |
| | | response, bool); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.core.common.Cools; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.erp.kingdee.entity.param.LoginParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.Set; |
| | | |
| | | @Service |
| | | @Slf4j |
| | | @Transactional |
| | | public class LoginAuthenticationHandler extends AbstractHandler<String> { |
| | | |
| | | @Value("${erp.address.URL}") |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.loginaddress}") |
| | | //登录地址 |
| | | private String loginaddress; |
| | | |
| | | @Value("${erp.login.acctID}") |
| | | //账号ID |
| | | private String acctID; |
| | | |
| | | @Value("${erp.login.username}") |
| | | //账号 |
| | | private String username; |
| | | |
| | | @Value("${erp.login.password}") |
| | | //密码 |
| | | private String password; |
| | | |
| | | @Value("${erp.login.lcid}") |
| | | // |
| | | private Integer lcid; |
| | | |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | |
| | | /** |
| | | * 45分钟登录一次金蝶系统 |
| | | * @return |
| | | */ |
| | | @Transactional |
| | | public synchronized ReturnT<String> start() { |
| | | |
| | | LoginParam loginParam =new LoginParam(); |
| | | loginParam.setAcctID(acctID); |
| | | loginParam.setUsername(username); |
| | | loginParam.setPassword(password); |
| | | loginParam.setLcid(lcid); |
| | | //上报 |
| | | String response = ""; |
| | | String cookie = ""; |
| | | boolean success = false; |
| | | try { |
| | | response = new HttpHandler.Builder() |
| | | .setUri(URL) |
| | | .setPath(loginaddress) |
| | | .setJson(JSON.toJSONString(loginParam)) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Object sessionId = findValueByKey(JSON.parseObject(response), "SessionId"); |
| | | cookie="ASP.NET_SessionId="+sessionId+";"+"kdservice-sessionid="+jsonObject.getString("KDSVCSessionId"); |
| | | if (Cools.isEmpty(jsonObject.getString("Message"))) { |
| | | success = true; |
| | | } else { |
| | | callApiLogSaveLog(JSON.toJSONString(loginParam),false); |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+loginaddress, JSON.toJSONString(loginParam), response); |
| | | // throw new CoolException("登录金蝶失败"); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | callApiLogSaveLog(JSON.toJSONString(loginParam),false); |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+loginaddress, JSON.toJSONString(loginParam), response); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | // try { |
| | | // // 保存接口日志 |
| | | // apiLogService.save( |
| | | // "登录金蝶", |
| | | // URL + loginaddress, |
| | | // null, |
| | | // "127.0.0.1", |
| | | // JSON.toJSONString(loginParam), |
| | | // response, |
| | | // success |
| | | // ); |
| | | // } catch (Exception e) { log.error("", e); } |
| | | } |
| | | return SUCCESS.setContent(cookie); |
| | | } |
| | | |
| | | |
| | | public static Object findValueByKey(JSONObject json, String key) { |
| | | Set<String> keySet = json.keySet(); |
| | | for (String k : keySet) { |
| | | Object v = json.get(k); |
| | | if (k.equals(key)) { |
| | | return v; |
| | | } else if (v instanceof JSONArray) { |
| | | int size = ((JSONArray) v).size(); |
| | | for (int i = 0; i <= size - 1; i++) { |
| | | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } else if (v instanceof JSONObject){ |
| | | Object result = findValueByKey((JSONObject) v, key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public void callApiLogSaveLog(String response, Boolean bool) { |
| | | apiLogService.save("登录金蝶失败", URL, "null", loginaddress, |
| | | "套账ID:"+acctID+"、账号:"+username+"、密码:"+password, |
| | | response, bool); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | |
New file |
| | |
| | | package com.zy.asrs.task.kingdee.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.erp.kingdee.enums.KingDeeUtilType; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * Created by vincent on 2023/10/21 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class ReviewOrderSyncHandler extends AbstractHandler<String> { |
| | | @Value("${erp.address.URL}") |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.outaddressAudit}") |
| | | //审核地址 |
| | | private String outaddressAudit; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | //登录金蝶r |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); |
| | | |
| | | //条件拼接 |
| | | JSONObject dataJsonObject = new JSONObject(); |
| | | dataJsonObject.put("Numbers",order.getOrderNo()); |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("data", dataJsonObject); |
| | | jsonObject.put("FormId",kingDeeUtilType.formId); |
| | | String add = jsonObject.toJSONString(); |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Cookie", start.getContent()); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(outaddressAudit) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject data = JSON.parseObject(response); |
| | | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); |
| | | String bool=IsSuccess.toString(); |
| | | //审核完成原订单4转6 6.上报完成 |
| | | if(bool.equals("true")){ |
| | | success = true; |
| | | order.setSettle(6L); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "审核", |
| | | URL+ outaddressAudit, |
| | | null, |
| | | "127.0.0.1", |
| | | add, |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("", e); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | public static Object findValueByKey(JSONObject json, String key) { |
| | | Set<String> keySet = json.keySet(); |
| | | for (String k : keySet) { |
| | | Object v = json.get(k); |
| | | if (k.equals(key)) { |
| | | return v; |
| | | } else if (v instanceof JSONArray) { |
| | | int size = ((JSONArray) v).size(); |
| | | for (int i = 0; i <= size - 1; i++) { |
| | | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } else if (v instanceof JSONObject){ |
| | | Object result = findValueByKey((JSONObject) v, key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.erp.kingdee.enums.KingDeeUtilType; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.10.21 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class SaveOrderSyncHandler extends AbstractHandler<String> { |
| | | @Value("${erp.address.URL}") |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.outaddressSave}") |
| | | //保存地址 |
| | | private String outaddressSave; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | //登录金蝶r |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); |
| | | |
| | | //条件拼接 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("Numbers",order.getOrderNo()); |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); |
| | | String add = jsonObject1.toJSONString(); |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Cookie", start.getContent()); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(outaddressSave) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject data = JSON.parseObject(response); |
| | | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); |
| | | String bool=IsSuccess.toString(); |
| | | //保存完成原订单8转6 |
| | | if(bool.equals("true")){ |
| | | success = true; |
| | | order.setSettle(6L); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "保存", |
| | | URL+ outaddressSave, |
| | | null, |
| | | "127.0.0.1", |
| | | add, |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("", e); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | public static Object findValueByKey(JSONObject json, String key) { |
| | | Set<String> keySet = json.keySet(); |
| | | for (String k : keySet) { |
| | | Object v = json.get(k); |
| | | if (k.equals(key)) { |
| | | return v; |
| | | } else if (v instanceof JSONArray) { |
| | | int size = ((JSONArray) v).size(); |
| | | for (int i = 0; i <= size - 1; i++) { |
| | | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } else if (v instanceof JSONObject){ |
| | | Object result = findValueByKey((JSONObject) v, key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.asrs.task.kingdee.handler; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONArray; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.baomidou.mybatisplus.mapper.EntityWrapper; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import com.zy.erp.kingdee.enums.KingDeeUtilType; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Set; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.10.21 |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class SubmitOrderSyncHandler extends AbstractHandler<String> { |
| | | @Value("${erp.address.URL}") |
| | | //端口 |
| | | private String URL; |
| | | |
| | | @Value("${erp.address.outaddressSubmit}") |
| | | //提交地址 |
| | | private String outaddressSubmit; |
| | | |
| | | @Autowired |
| | | private OrderService orderService; |
| | | @Autowired |
| | | private ApiLogService apiLogService; |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | //登录金蝶r |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | | if (null == docType) { |
| | | return SUCCESS; |
| | | } |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); |
| | | |
| | | //条件拼接 |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("Numbers",order.getOrderNo()); |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); |
| | | String add = jsonObject1.toJSONString(); |
| | | //上报 |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | //获取Cookie值 |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Cookie", start.getContent()); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(headers) |
| | | .setUri(URL) |
| | | .setPath(outaddressSubmit) |
| | | .setJson(add) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject data = JSON.parseObject(response); |
| | | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); |
| | | String bool=IsSuccess.toString(); |
| | | //提交完成原订单8转6 |
| | | if(bool.equals("true")){ |
| | | success = true; |
| | | order.setSettle(6L); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("fail", e); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | apiLogService.save( |
| | | "提交", |
| | | URL+ outaddressSubmit, |
| | | null, |
| | | "127.0.0.1", |
| | | add, |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("", e); |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | public static Object findValueByKey(JSONObject json, String key) { |
| | | Set<String> keySet = json.keySet(); |
| | | for (String k : keySet) { |
| | | Object v = json.get(k); |
| | | if (k.equals(key)) { |
| | | return v; |
| | | } else if (v instanceof JSONArray) { |
| | | int size = ((JSONArray) v).size(); |
| | | for (int i = 0; i <= size - 1; i++) { |
| | | Object result = findValueByKey((JSONObject) ((JSONArray) v).get(i), key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } else if (v instanceof JSONObject){ |
| | | Object result = findValueByKey((JSONObject) v, key); |
| | | if (result != null){ |
| | | return result; |
| | | } |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.erp.kingdee.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class InFormIdParam { |
| | | |
| | | //查找表单唯一标识 |
| | | private String FormId; |
| | | |
| | | //最多允许查询的数量,0或者不要此属性标识不限制 |
| | | private String TopRowCount; |
| | | |
| | | private Integer Limit; |
| | | |
| | | private String StartRow; |
| | | |
| | | //过滤条件(eg:\"FNumber>'0301010120001' and FCreateDate>'2023-07-05' \") |
| | | //1、Left:左括号 |
| | | //3、Compare:比较运算符,如 大于">"、小于"<"、等于"="、包含"like"、左包含"llike"、右包含"rlike" |
| | | //4、Value:比较值 |
| | | //5、Right:右括号 |
| | | //6、Logic:逻辑运算符,如 "and"、"or" |
| | | private Integer Filterstring; |
| | | |
| | | //排序条件 |
| | | private Integer OrderString; |
| | | |
| | | //待查询表单的字段列(期望返回值) |
| | | private Integer FieldKeys; |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.erp.kingdee.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class LoginParam { |
| | | //账号ID |
| | | private String acctID; |
| | | |
| | | //账号 |
| | | private String username; |
| | | |
| | | //密码 |
| | | private String password; |
| | | |
| | | // |
| | | private Integer lcid; |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.erp.kingdee.enums; |
| | | |
| | | public enum KingDeeUtilType { |
| | | BD_MATERIAL(0, "物料档案","BD_MATERIAL","","","",1), |
| | | // STK_InStock(1, "采购入库单","STK_InStock","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), |
| | | // 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), |
| | | //米多青岛 |
| | | STK_OutStockApply30(30, "试用品发货通知单","","","研发样品出库单","",0), |
| | | STK_OutStockApply31(31, "试用品发货通知单","","","研发样品出库单","",0), |
| | | STK_OutStockApply32(32, "试用品发货通知单","","","研发样品出库单","",0), |
| | | STK_OutStockApply33(33, "试用品发货通知单","","","研发样品出库单","",0), |
| | | STK_OutStockApply34(34, "试用品发货通知单","","","研发样品出库单","",0), |
| | | STK_OutStockApply35(35, "试用品发货通知单","","","研发样品出库单","",0), |
| | | |
| | | |
| | | |
| | | |
| | | ; |
| | | public Integer id; |
| | | public String desc; |
| | | public String formId; |
| | | public String anfme; |
| | | public String correspondingName; |
| | | public String correspondingFormId; |
| | | public Integer pakIn; |
| | | |
| | | KingDeeUtilType(Integer id, String desc,String formId,String anfme,String correspondingName,String correspondingFormId,int pakIn){ |
| | | this.id = id; |
| | | this.desc = desc; |
| | | this.formId = formId; |
| | | this.anfme = anfme; |
| | | this.correspondingName = correspondingName; |
| | | this.correspondingFormId = correspondingFormId; |
| | | this.pakIn = pakIn; //1入库 0出库 |
| | | } |
| | | |
| | | public static KingDeeUtilType get(Short id) { |
| | | if (null == id) { |
| | | return null; |
| | | } |
| | | for (KingDeeUtilType type : KingDeeUtilType.values()) { |
| | | if (type.id.equals(id.intValue())) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static KingDeeUtilType get(String desc) { |
| | | if (null == desc) { |
| | | return null; |
| | | } |
| | | for (KingDeeUtilType type : KingDeeUtilType.values()) { |
| | | if (type.desc.equals(desc)) { |
| | | return type; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | public static KingDeeUtilType get(KingDeeUtilType type) { |
| | | if (null == type) { |
| | | return null; |
| | | } |
| | | for (KingDeeUtilType crnLiftPosType : KingDeeUtilType.values()) { |
| | | if (crnLiftPosType == type) { |
| | | return crnLiftPosType; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | } |
New file |
| | |
| | | package com.zy.erp.kingdee.utils; |
| | | |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDateTime; |
| | | import java.time.format.DateTimeFormatter; |
| | | import java.util.Date; |
| | | |
| | | public class KingDeeUtil { |
| | | |
| | | //对美国时间进行转换 |
| | | public static Date KingDeeDate(String jsonArrayDate) throws ParseException { |
| | | SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); |
| | | DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME; |
| | | LocalDateTime dateTime = LocalDateTime.parse(jsonArrayDate, formatter); |
| | | String format = dateFormat.format(dateTime); |
| | | return sdf.parse(format); |
| | | } |
| | | |
| | | |
| | | |
| | | } |
New file |
| | |
| | | package com.zy.erp.kingdee.utils; |
| | | |
| | | import com.alibaba.fastjson.JSON; |
| | | import com.alibaba.fastjson.JSONObject; |
| | | import com.core.common.SpringUtils; |
| | | import com.core.exception.CoolException; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | | import com.zy.common.utils.HttpHandler; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.util.Map; |
| | | |
| | | @Slf4j |
| | | public class PostMesDataUtils extends AbstractHandler<String> { |
| | | |
| | | public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam){ |
| | | // if (true){ |
| | | // System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); |
| | | // return SUCCESS; |
| | | // } |
| | | if(combParam != null){ |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | // Map<String, Object> map = new HashMap<>() |
| | | // map.put("appkey","ea1f0459efc02a79f046f982767939ae"); |
| | | response = new HttpHandler.Builder() |
| | | // .setHeaders(map) |
| | | .setUri(URL) |
| | | .setPath(mesPath) |
| | | .setJson(JSON.toJSONString(combParam)) |
| | | .build() |
| | | .doPost(); |
| | | System.out.println("response:"+response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | success = true; |
| | | } else { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); |
| | | throw new CoolException("上报"+name); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); |
| | | apiLogService.save( |
| | | "上报"+name, |
| | | URL +"/"+ mesPath, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(combParam), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("", e); } |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | |
| | | public ReturnT<String> postMesData(String name, String URL, String mesPath, Object combParam, Map<String, Object> map){ |
| | | // if (true){ |
| | | // System.out.println("name:"+name+",URL:"+URL+",mesPath:"+mesPath+",combParam:"+combParam); |
| | | // return SUCCESS; |
| | | // } |
| | | if(combParam != null){ |
| | | String response = ""; |
| | | boolean success = false; |
| | | try { |
| | | // Map<String, Object> map = new HashMap<>(); |
| | | // map.put("appkey","ea1f0459efc02a79f046f982767939ae"); |
| | | response = new HttpHandler.Builder() |
| | | .setHeaders(map) |
| | | .setUri(URL) |
| | | .setPath(mesPath) |
| | | .setJson(JSON.toJSONString(combParam)) |
| | | .build() |
| | | .doPost(); |
| | | System.out.println("response:"+response); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | |
| | | if (jsonObject.getInteger("code").equals(200)) { |
| | | success = true; |
| | | } else { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); |
| | | throw new CoolException("上报"+name); |
| | | } |
| | | } catch (Exception e) { |
| | | log.error("请求接口失败!!!url:{};request:{};response:{}", URL+"/"+mesPath, JSON.toJSONString(combParam), response); |
| | | // TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); |
| | | return FAIL.setMsg(e.getMessage()); |
| | | } finally { |
| | | try { |
| | | // 保存接口日志 |
| | | ApiLogService apiLogService = SpringUtils.getBean(ApiLogService.class); |
| | | apiLogService.save( |
| | | "上报"+name, |
| | | URL +"/"+ mesPath, |
| | | null, |
| | | "127.0.0.1", |
| | | JSON.toJSONString(combParam), |
| | | response, |
| | | success |
| | | ); |
| | | } catch (Exception e) { |
| | | log.error("", e); } |
| | | } |
| | | } |
| | | return SUCCESS; |
| | | } |
| | | } |
| | |
| | | # 一个堆垛机负责的货架排数 |
| | | groupCount: 4 |
| | | |
| | | #erp |
| | | #金蝶erp对接 |
| | | erp: |
| | | # 开关 |
| | | switch: |
| | | #获取单据开关 米多无用 |
| | | InboundOrderSwitch: false |
| | | #登录接口开关 |
| | | LoginAuthenticationSwitch: false |
| | | #上报单据开关 |
| | | ReviewOrderSwitch: false |
| | | # 地址 |
| | | address: |
| | | URL: http://58.210.10.90:28090 |
| | | #登录地址 |
| | | loginaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.AuthService.ValidateUser.common.kdsvc |
| | | #单据,商品档案地址 |
| | | inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.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 : |
| | | acctID: "65712e41a21468" |
| | | username: "13465800579" |
| | | password: "a.111111" |
| | | lcid: 2052 |
| | | # 速腾对接 已废弃 保持false |
| | | enable: false |