| | |
| | | import org.springframework.scheduling.annotation.Scheduled; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | @Value("${erp.switch.SaveOrderSwitch}") |
| | | private boolean SaveOrderSwitch; |
| | | |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if (1==1) return; |
| | | if(!SaveOrderSwitch){ |
| | | 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()); |
| | | try{ |
| | | ReturnT<String> result = saveOrderSyncHandler.start(order); |
| | | if (!result.isSuccess()) { |
| | | log.error("单据[orderNo={}]提交至erp失败", order.getOrderNo()); |
| | | } |
| | | }catch (Exception e){ |
| | | Order order1 = orderService.selectById(order.getId()); |
| | | order1.setUpdateTime(new Date()); |
| | | orderService.updateById(order1); |
| | | } |
| | | } |
| | | } |
| | |
| | | @Value("${erp.switch.SubmitOrderSwitch}") |
| | | private boolean SubmitOrderSwitch; |
| | | |
| | | @Scheduled(cron = "0/3 * * * * ? ") |
| | | // @Scheduled(cron = "0/3 * * * * ? ") |
| | | @Async("orderThreadPool") |
| | | public void completeAndReport(){ |
| | | if(!SubmitOrderSwitch){ |
| | |
| | | order.setUpdateTime(new Date()); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } else { |
| | | success = false; |
| | | order.setSettle(7L); |
| | | order.setUpdateTime(new Date()); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } catch (Exception e) { |
| | | log.info("下推error:"+response); |
| | |
| | | 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.fasterxml.jackson.databind.JsonNode; |
| | | import com.fasterxml.jackson.databind.ObjectMapper; |
| | | import com.zy.asrs.entity.DocType; |
| | | import com.zy.asrs.entity.Order; |
| | | import com.zy.asrs.entity.OrderDetl; |
| | | import com.zy.asrs.service.ApiLogService; |
| | | import com.zy.asrs.service.DocTypeService; |
| | | import com.zy.asrs.service.OrderDetlService; |
| | | import com.zy.asrs.service.OrderService; |
| | | import com.zy.asrs.task.AbstractHandler; |
| | | import com.zy.asrs.task.core.ReturnT; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.util.HashMap; |
| | | import java.util.Set; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * Created by Monkey D. Luffy on 2023.10.21 |
| | |
| | | @Autowired |
| | | private DocTypeService docTypeService; |
| | | @Autowired |
| | | private OrderDetlService orderDetlService; |
| | | @Autowired |
| | | private LoginAuthenticationHandler loginAuthenticationHandler; |
| | | |
| | | @Transactional |
| | | public ReturnT<String> start(Order order) { |
| | | List<OrderDetl> orderDetls = orderDetlService.selectByOrderId(order.getId()); |
| | | if (Cools.isEmpty(orderDetls) || orderDetls.size()==0){ |
| | | return SUCCESS; |
| | | } |
| | | //登录金蝶r |
| | | ReturnT<String> start = loginAuthenticationHandler.start(); |
| | | DocType docType = docTypeService.selectById(order.getDocType()); |
| | |
| | | return SUCCESS; |
| | | } |
| | | KingDeeUtilType kingDeeUtilType = KingDeeUtilType.get(docType.getDocName()); |
| | | |
| | | if (kingDeeUtilType.entryId!=2){ |
| | | return SUCCESS; |
| | | } |
| | | Date now = new Date(); |
| | | //条件拼接 |
| | | JSONObject jsonObjectFBillTypeID = new JSONObject(); |
| | | JSONObject jsonObjectFPickerId = new JSONObject(); |
| | | if (kingDeeUtilType.pakIn==1){ |
| | | jsonObjectFBillTypeID.put("FNUMBER","QTRKD01_SYS"); |
| | | }else { |
| | | jsonObjectFBillTypeID.put("FNUMBER","QTCKD01_SYS"); |
| | | jsonObjectFPickerId.put("FStaffNumber","X0103_GLGW074_1"); |
| | | } |
| | | |
| | | JSONObject jsonObjectFStockOrgId = new JSONObject(); |
| | | jsonObjectFStockOrgId.put("FNUMBER","100"); |
| | | |
| | | JSONObject jsonObjectFOwnerIdHead = new JSONObject(); |
| | | jsonObjectFOwnerIdHead.put("FNUMBER","100"); |
| | | |
| | | JSONObject jsonObjectFDEPTID = new JSONObject(); |
| | | jsonObjectFDEPTID.put("FNUMBER","CX"); |
| | | |
| | | List<JSONObject> jsonObjects = new ArrayList<>(); |
| | | |
| | | for (OrderDetl orderDetl:orderDetls){ |
| | | JSONObject jsonObjectFMATERIALID = new JSONObject(); |
| | | jsonObjectFMATERIALID.put("FNUMBER",orderDetl.getMatnr()); |
| | | |
| | | JSONObject jsonObjectFSTOCKID = new JSONObject(); |
| | | jsonObjectFSTOCKID.put("FNUMBER","CK001"); |
| | | |
| | | JSONObject jsonObjectFLOT = new JSONObject(); |
| | | jsonObjectFLOT.put("FNUMBER",orderDetl.getBatch()); |
| | | |
| | | // 使用LinkedHashMap来保持插入顺序 |
| | | Map<String, Object> orderedMap = new LinkedHashMap<>(); |
| | | |
| | | // 按照期望的顺序添加键值对 |
| | | orderedMap.put("FMATERIALID", jsonObjectFMATERIALID); |
| | | orderedMap.put("FSTOCKID", jsonObjectFSTOCKID); |
| | | orderedMap.put("FLOT", jsonObjectFLOT); |
| | | orderedMap.put("FQty", orderDetl.getQty()); // 将"FQty"放到最后 |
| | | |
| | | JSONObject jsonObjectEnd = new JSONObject(orderedMap); |
| | | |
| | | jsonObjects.add(jsonObjectEnd); |
| | | } |
| | | |
| | | JSONObject jsonObject = new JSONObject(); |
| | | jsonObject.put("Numbers",order.getOrderNo()); |
| | | jsonObject.put("FBillTypeID",jsonObjectFBillTypeID); |
| | | if (kingDeeUtilType.pakIn==0){ |
| | | jsonObject.put("FPickerId",jsonObjectFPickerId); |
| | | } |
| | | jsonObject.put("FDate",DateUtils.convert(now, DateUtils.yyyyMMdd_F)); |
| | | jsonObject.put("FStockOrgId",jsonObjectFStockOrgId); |
| | | jsonObject.put("FOwnerTypeIdHead","BD_OwnerOrg"); |
| | | jsonObject.put("FOwnerIdHead",jsonObjectFOwnerIdHead); |
| | | jsonObject.put("FDEPTID",jsonObjectFDEPTID); |
| | | jsonObject.put("FEntity",jsonObjects); |
| | | |
| | | JSONObject jsonObjectModel = new JSONObject(); |
| | | jsonObjectModel.put("Model",jsonObject); |
| | | |
| | | JSONObject jsonObject1 = new JSONObject(); |
| | | jsonObject1.put("data", jsonObject); |
| | | jsonObject1.put("data", jsonObjectModel); |
| | | jsonObject1.put("FormId",kingDeeUtilType.correspondingFormId); |
| | | String add = jsonObject1.toJSONString(); |
| | | //上报 |
| | |
| | | .setUri(URL) |
| | | .setPath(outaddressSave) |
| | | .setJson(add) |
| | | .setHttps(true) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject data = JSON.parseObject(response); |
| | | Object IsSuccess = findValueByKey(JSON.parseObject(response), "IsSuccess"); |
| | | String bool=IsSuccess.toString(); |
| | | String bool1=IsSuccess.toString(); |
| | | //保存完成原订单8转6 |
| | | if(bool.equals("true")){ |
| | | success = true; |
| | | order.setSettle(6L); |
| | | if(bool1.equals("true")){ |
| | | ObjectMapper objectMapper = new ObjectMapper(); |
| | | JsonNode rootNode = objectMapper.readTree(response); |
| | | boolean bool = rootNode.get("Result").get("ResponseStatus").get("IsSuccess").asBoolean(); |
| | | log.info("审核bool:"+bool); |
| | | //提交完成原订单4转6 6.上报完成 |
| | | if(bool){ |
| | | success = true; |
| | | order.setSettle(6L); |
| | | order.setUpdateTime(new Date()); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | }else { |
| | | success = false; |
| | | order.setSettle(7L); |
| | | order.setUpdateTime(new Date()); |
| | | orderService.update(order,new EntityWrapper<Order>().eq("order_no",order.getOrderNo())); |
| | | } |
| | | } catch (Exception e) { |
New file |
| | |
| | | package com.zy.erp.kingdee.entity.param; |
| | | |
| | | import lombok.Data; |
| | | |
| | | @Data |
| | | public class SaceOrderOtherParam { |
| | | //账号ID |
| | | private String FMATERIALID; |
| | | |
| | | //账号 |
| | | private String FSTOCKID; |
| | | |
| | | //密码 |
| | | private String FLOT; |
| | | |
| | | // |
| | | private Integer FQty; |
| | | } |
| | |
| | | STK_OutStockApply337(12, "研发领料出库申请单-研发领料出库单","STK_OUTSTOCKAPPLY","","研发领料出库单","",0,"STK_OutstockApplyTosTK_MisDelivery",0), |
| | | STK_ASSEMBLY1(13, "组装拆卸单1","STK_ASSEMBLY","","","",1,"",0), |
| | | STK_ASSEMBLY2(14, "组装拆卸单2","STK_ASSEMBLY","","","",0,"",0), |
| | | SAL_RETURNNOTICE1(15, "其他入库单","SAL_RETURNNOTICE","","其他入库单","STK_MISCELLANEOUS",1,"",2), |
| | | SAL_DELIVERYNOTICE2(16, "其他出库单","SAL_DELIVERYNOTICE","","其他出库单","SAL_DELIVERYNOTICE",0,"",2), |
| | | PRD_PPBOM(17, "生产用料清单-生产用料清单变更单","PRD_PPBOM","","生产领料单","PRD_PPBOMChange",1,"PRD_PPBOM2PPBOMCHANGE",2), |
| | | SAL_RETURNNOTICE1(15, "其它入库单","STK_MISCELLANEOUS","","其它入库单","STK_MISCELLANEOUS",1,"",2), |
| | | SAL_DELIVERYNOTICE2(16, "其它出库单","STK_MisDelivery","","其他出库单","STK_MisDelivery",0,"",2), |
| | | PRD_PPBOM(17, "生产用料清单-生产用料清单变更单","PRD_PPBOM","","生产领料单","PRD_PPBOMChange",1,"PRD_PPBOM2PPBOMCHANGE",10), |
| | | STK_TRANSFERAPPLY2(18, "调拨申请单2-直接调拨单","STK_TRANSFERAPPLY","","直接调拨单","STK_TransferDirect",0,"StkTransferApphy-StkTransferDirect",1), |
| | | STK_TRANSFERAPPLY3(19, "调拨申请单3-直接调拨单","STK_TRANSFERAPPLY","","直接调拨单","STK_TransferDirect",0,"StkTransferApphy-StkTransferDirect",1), |
| | | ; |
| | |
| | | # url: jdbc:sqlserver://10.10.10.100:1433;databasename=mdqdasrs |
| | | # username: sa |
| | | # password: Dtzhcy101+ |
| | | url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs |
| | | username: sa |
| | | password: sa@123 |
| | | # url: jdbc:sqlserver://127.0.0.1:51433;databasename=mdqdasrs |
| | | # url: jdbc:sqlserver://127.0.0.1:1433;databasename=mdqdasrs |
| | | # username: sa |
| | | # password: Zoneyung@zy56$ |
| | | # password: sa@123 |
| | | url: jdbc:sqlserver://47.97.1.152:51433;databasename=mdqdasrs |
| | | username: sa |
| | | password: Zoneyung@zy56$ |
| | | mvc: |
| | | static-path-pattern: /** |
| | | redis: |
| | |
| | | InboundOrderSwitch: false |
| | | #登录接口开关 |
| | | LoginAuthenticationSwitch: true |
| | | #上报单据开关 米多无用 |
| | | #审核单据开关 米多无用 |
| | | ReviewOrderSwitch: false |
| | | #保存单据开关 |
| | | SaveOrderSwitch: true |
| | | #提交单据开关 米多无用 |
| | | SubmitOrderSwitch: false |
| | | #下推单据开关 |
| | | PushDowmOrderSwitch: true |
| | | # 地址 |
| | |
| | | inaddress: K3CLOUD/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.ExecuteBillQuery.common.kdsvc |
| | | #单据下推地址 |
| | | pushDowmAudit: K3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Push.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 : |
| | |
| | | {field: 'payment$', title: '货物特征', width: 160}, |
| | | // {field: 'batch', title: '批号'}, |
| | | {field: 'anfme', title: '数量'}, |
| | | {field: 'batch', title: '批次'}, |
| | | {field: 'workQty', title: '作业数量'}, |
| | | {field: 'qty', title: '完成数量', style: 'font-weight: bold'}, |
| | | // {field: 'unit', title: '单位'}, |
| | |
| | | layer.msg('数量不能小于已作业数量', {icon: 2}); |
| | | return false; |
| | | } |
| | | |
| | | if (nList[xi].batch === ""){ |
| | | layer.msg('批次不能为空', {icon: 2}); |
| | | return false; |
| | | } |
| | | } |
| | | for (let xi = 0; xi < nList.length; xi++) { |
| | | if (nList[xi].owner <= 0){ |
| | |
| | | {field: 'specs', title: '规格'}, |
| | | {field: 'weight', title: '重量', edit: true}, |
| | | {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, |
| | | {field: 'batch', title: '批次(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, |
| | | {field: 'owner', title: '货主编号', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110}, |
| | | {field: 'payment', title: '货物状态', style: 'color: blue;font-weight: bold', templet: '#payment'}, |
| | | // {field: 'payment', title: '货物状态',align: 'center', templet: '#payment'}, |