| | |
| | | ...getColumnSearchProps('matnr'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
|
| | | dataIndex: 'maktx',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('maktx'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.specs', '规格'),
|
| | | dataIndex: 'specs',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('specs'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.model', '型号'),
|
| | | dataIndex: 'model',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('model'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.order_no', '订单号'),
|
| | | dataIndex: 'orderNo',
|
| | | width: 140,
|
| | |
| | | ...getColumnSearchProps('locNo'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.mat_id', '商品'),
|
| | | dataIndex: 'matId$',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('matId$'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.matnr', '商品编号'),
|
| | | dataIndex: 'matnr',
|
| | | width: 140,
|
| | |
| | | ...getColumnSearchProps('matnr'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
|
| | | dataIndex: 'maktx',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('maktx'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.specs', '规格'),
|
| | | dataIndex: 'specs',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('specs'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.model', '型号'),
|
| | | dataIndex: 'model',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('model'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.order_no', '订单号'),
|
| | | dataIndex: 'orderNo',
|
| | | width: 140,
|
| | |
| | | <a-form-item :label="formatMessage('db.man_order.order_no', '订单编号')" name="orderNo">
|
| | | <a-input v-model:value="formData.orderNo" />
|
| | | </a-form-item>
|
| | | <!-- <a-form-item :label="formatMessage('db.man_order.order_time', '单据日期')" name="orderTime"
|
| | | style="width: 250px;">
|
| | | <a-input v-model:value="formData.orderTime" />
|
| | | </a-form-item> -->
|
| | | <a-form-item :label="formatMessage('db.man_order.order_type', '单据类型')" name="orderType">
|
| | | <a-select v-model:value="formData.orderType" :placeholder="formatMessage('common.select', '请选择')"
|
| | | style="width: 100%" show-search :options="orderTypeQueryList" optionFilterProp="label"
|
| | |
| | | optionLabelProp="label">
|
| | | </a-select>
|
| | | </a-form-item>
|
| | | <!-- <a-form-item :label="formatMessage('db.man_order.status', '状态')" name="status" >
|
| | | <a-select v-model:value="formData.status" :options="[
|
| | | { label: '正常', value: 1 },
|
| | | { label: '禁用', value: 0 },
|
| | | ]">
|
| | | </a-select>
|
| | | </a-form-item> -->
|
| | | <!-- <a-form-item :label="formatMessage('db.man_order.create_time', '添加时间')" name="createTime"
|
| | | style="width: 250px;">
|
| | | <a-date-picker v-model:value="formData.createTime" show-time format="YYYY-MM-DD HH:mm:ss"
|
| | | value-format="YYYY-MM-DD HH:mm:ss" />
|
| | | <!-- <a-form-item :label="formatMessage('db.man_order.order_no', '物流公司')" name="orderNo" >
|
| | | <a-input v-model:value="formData.orderNo" />
|
| | | </a-form-item>
|
| | | <a-form-item :label="formatMessage('db.man_order.create_by', '添加人员')" name="createBy"
|
| | | style="width: 250px;">
|
| | | <a-select v-model:value="formData.createBy" :placeholder="formatMessage('common.select', '请选择')"
|
| | | style="width: 100%" show-search :options="userQueryList" optionFilterProp="label"
|
| | | optionLabelProp="label">
|
| | | </a-select>
|
| | | <a-form-item :label="formatMessage('db.man_order.order_no', '快递单号')" name="orderNo">
|
| | | <a-input v-model:value="formData.orderNo"/>
|
| | | </a-form-item>
|
| | | <a-form-item :label="formatMessage('db.man_order.update_time', '修改时间')" name="updateTime"
|
| | | style="width: 250px;">
|
| | | <a-date-picker v-model:value="formData.updateTime" show-time format="YYYY-MM-DD HH:mm:ss"
|
| | | value-format="YYYY-MM-DD HH:mm:ss" />
|
| | | <a-form-item :label="formatMessage('db.man_order.order_no', '物流公司')" name="orderNo" >
|
| | | <a-input v-model:value="formData.orderNo"/>
|
| | | </a-form-item>
|
| | | <a-form-item :label="formatMessage('db.man_order.update_by', '修改人员')" name="updateBy"
|
| | | style="width: 250px;">
|
| | | <a-select v-model:value="formData.updateBy" :placeholder="formatMessage('common.select', '请选择')"
|
| | | style="width: 100%" show-search :options="userQueryList" optionFilterProp="label"
|
| | | optionLabelProp="label">
|
| | | </a-select>
|
| | | <a-form-item :label="formatMessage('db.man_order.order_no', '快递单号')" name="orderNo">
|
| | | <a-input v-model:value="formData.orderNo"/>
|
| | | </a-form-item> -->
|
| | | <!-- <a-form-item :label="formatMessage('db.man_order.memo', '备注')" name="memo" style="width: 250px;">
|
| | | <a-input v-model:value="formData.memo" />
|
| | | </a-form-item> -->
|
| | |
|
| | | <a-form-item :label="formatMessage('db.man_order.update_time', '订单明细')" name="orderDetl">
|
| | | <OrderDetlComponent ref="orderDetlChild" v-if="open" />
|
| | | </a-form-item>
|
| | |
|
| | | <a-form-item>
|
| | | <a-button type="primary" html-type="submit" ref="submitButton"
|
| | | style="visibility: hidden;">Submit</a-button>
|
| | |
| | | let result = resp.data;
|
| | | if(result.data != null) {
|
| | | orderInfo.value = result.data;
|
| | | console.log(result.data);
|
| | | }
|
| | | })
|
| | | }
|
| | |
| | | 单据状态:{{ orderInfo.orderSettle$ }}
|
| | | </h3>
|
| | | </div>
|
| | | <div>
|
| | | <h3>
|
| | | 数量:{{ orderInfo.waitQty }}
|
| | | </h3>
|
| | | <h3>
|
| | | 物流名称:{{ orderInfo.logisticsName }}
|
| | | </h3>
|
| | | <h3>
|
| | | 快递单号:{{ orderInfo.logistics }}
|
| | | </h3>
|
| | | </div>
|
| | | <div>
|
| | | <h3>
|
| | | 收货地址:{{ orderInfo.address }}
|
| | | </h3>
|
| | | <h3>
|
| | | 联系电话:{{ orderInfo.phone }}
|
| | | </h3>
|
| | | </div>
|
| | | <div class="qrcode">
|
| | | <a-qrcode :value="orderInfo.orderNo" :size="100" :bordered="false" />
|
| | | </div>
|
| | |
| | | ...getColumnSearchProps('locNo'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.mat_id', '商品'),
|
| | | dataIndex: 'matId$',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('matId$'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.matnr', '商品编号'),
|
| | | dataIndex: 'matnr',
|
| | | width: 140,
|
| | |
| | | ...getColumnSearchProps('matnr'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.maktx', '商品名称'),
|
| | | dataIndex: 'maktx',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('maktx'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.specs', '规格'),
|
| | | dataIndex: 'specs',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('specs'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.model', '型号'),
|
| | | dataIndex: 'model',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('model'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.dewell', '入库时间'),
|
| | | dataIndex: 'dewell$',
|
| | | width: 140,
|
| | | ellipsis: true,
|
| | | ...getColumnSearchProps('dewell$'),
|
| | | },
|
| | | {
|
| | | title: formatMessage('db.man_loc_detl.order_no', '订单号'),
|
| | | dataIndex: 'orderNo',
|
| | | width: 140,
|
| | |
| | | import com.zy.asrs.framework.common.R;
|
| | | import com.zy.asrs.wms.asrs.entity.Loc;
|
| | | import com.zy.asrs.wms.asrs.entity.enums.LocStsType;
|
| | | import com.zy.asrs.wms.asrs.entity.param.LocMastInitParam;
|
| | | import com.zy.asrs.wms.asrs.service.LocService;
|
| | | import com.zy.asrs.wms.common.annotation.OperationLog;
|
| | | import com.zy.asrs.wms.common.domain.BaseParam;
|
| | |
| | | @OperationLog("初始化库位")
|
| | | @PostMapping("/locMap/init")
|
| | | @Transactional
|
| | | public R init(@RequestBody LocMap locMap) {
|
| | | Integer mapLev = locMap.getMapLev();
|
| | | public R init(@RequestBody LocMastInitParam param) {
|
| | | // Integer mapLev = locMap.getMapLev();
|
| | |
|
| | | locService.remove(new LambdaQueryWrapper<Loc>().eq(Loc::getLev1, mapLev));
|
| | | // locService.remove(new LambdaQueryWrapper<Loc>().eq(Loc::getLev1, mapLev));
|
| | |
|
| | | //解析json地图数据
|
| | | List<ArrayList> arrayLists = JSON.parseArray(locMap.getData(), ArrayList.class);
|
| | | int rowIdx = 0;
|
| | | for (ArrayList row : arrayLists) {
|
| | | int bayIdx = 0;
|
| | | for (Object bay : row) {
|
| | | JSONObject data = JSON.parseObject(JSON.toJSONString(bay));
|
| | | if (data.getInteger("value") == 0) {
|
| | | // List<ArrayList> arrayLists = JSON.parseArray(locMap.getData(), ArrayList.class);
|
| | | // int rowIdx = 0;
|
| | | // for (ArrayList row : arrayLists) {
|
| | | // int bayIdx = 0;
|
| | | // for (Object bay : row) {
|
| | | // JSONObject data = JSON.parseObject(JSON.toJSONString(bay));
|
| | | // if (data.getInteger("value") == 0) {
|
| | | // Loc loc = new Loc();
|
| | | // loc.setRow1(rowIdx);
|
| | | // loc.setBay1(bayIdx);
|
| | | // loc.setLev1(mapLev);
|
| | | // loc.setLocStsId(LocStsType.O.val());
|
| | | // loc.setLocNo(Utils.getPlatLocNo(rowIdx, bayIdx, mapLev));
|
| | | // locService.save(loc);
|
| | | // }
|
| | | // bayIdx++;
|
| | | // }
|
| | | // rowIdx++;
|
| | | // }
|
| | |
|
| | | List<Loc> list = new ArrayList<>();
|
| | | Integer chanl = 0; //默认第一巷道
|
| | | for (int r = param.getStartRow(); r <= param.getEndRow(); r++) {
|
| | | // if (r % param.getChannel() == 1) {
|
| | | // chanl ++;
|
| | | // }
|
| | | for (int b = param.getStartBay(); b <= param.getEndBay(); b++) {
|
| | | for (int l = param.getStartLev(); l <= param.getEndLev(); l++) {
|
| | | // 获取库位号
|
| | | String locNo = Utils.getPlatLocNo(r, b, l);
|
| | | Loc loc = new Loc();
|
| | | loc.setRow1(rowIdx);
|
| | | loc.setBay1(bayIdx);
|
| | | loc.setLev1(mapLev);
|
| | | loc.setRow1(r);
|
| | | loc.setBay1(b);
|
| | | loc.setLev1(l);
|
| | | loc.setLocStsId(LocStsType.O.val());
|
| | | loc.setLocNo(Utils.getLocNo(rowIdx, bayIdx, mapLev));
|
| | | loc.setLocNo(locNo);
|
| | | locService.save(loc);
|
| | | list.add(loc);
|
| | | }
|
| | | bayIdx++;
|
| | | }
|
| | | rowIdx++;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | return R.ok("添加成功");
|
| | | }
|
| | |
|
| | |
| | | import com.zy.asrs.framework.common.R;
|
| | | import com.zy.asrs.framework.exception.CoolException;
|
| | | import com.zy.asrs.wms.asrs.entity.MatField;
|
| | | import com.zy.asrs.wms.asrs.entity.OrderDetl;
|
| | | import com.zy.asrs.wms.asrs.entity.OrderType;
|
| | | import com.zy.asrs.wms.asrs.entity.enums.OrderSettleType;
|
| | | import com.zy.asrs.wms.asrs.entity.param.CreateOrderParam;
|
| | |
| | | import com.zy.asrs.wms.asrs.entity.template.OrderTemplate;
|
| | | import com.zy.asrs.wms.asrs.service.MatFieldService;
|
| | | import com.zy.asrs.wms.asrs.service.OrderTypeService;
|
| | | import com.zy.asrs.wms.asrs.service.impl.OrderDetlServiceImpl;
|
| | | import com.zy.asrs.wms.common.annotation.CacheData;
|
| | | import com.zy.asrs.wms.common.annotation.OperationLog;
|
| | | import com.zy.asrs.wms.common.domain.BaseParam;
|
| | |
| | | private OrderTypeService orderTypeService;
|
| | | @Autowired
|
| | | private MatFieldService matFieldService;
|
| | | @Autowired
|
| | | private OrderDetlServiceImpl orderDetlService;
|
| | |
|
| | | @PreAuthorize("hasAuthority('asrs:order:list')")
|
| | | @PostMapping("/order/page")
|
| | |
| | | @GetMapping("/order/{id}")
|
| | | // @CacheData(tableName = {"man_order"})
|
| | | public R get(@PathVariable("id") Long id) {
|
| | | return R.ok().add(orderService.getById(id));
|
| | | Order order = orderService.getById(id);
|
| | | List<OrderDetl> detls = orderDetlService.list(new LambdaQueryWrapper<OrderDetl>().eq(OrderDetl::getOrderId, order.getId()));
|
| | | if (!detls.isEmpty()) {
|
| | | Double sum = detls.stream().mapToDouble(OrderDetl::getAnfme).sum();
|
| | | order.setWaitQty(sum);
|
| | | }
|
| | | return R.ok().add(order);
|
| | | }
|
| | |
|
| | | @PreAuthorize("hasAuthority('asrs:order:save')")
|
| | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
| | | import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
| | | import com.zy.asrs.common.utils.Synchro;
|
| | | import com.zy.asrs.framework.common.DateUtils;
|
| | | import com.zy.asrs.wms.asrs.service.LocService;
|
| | | import com.zy.asrs.wms.asrs.service.MatFieldService;
|
| | | import com.zy.asrs.wms.asrs.service.MatService;
|
| | |
| | | @ApiModelProperty(value= "备注")
|
| | | private String memo;
|
| | |
|
| | |
|
| | | /**
|
| | | * 库存冻结 1: 冻结 0: 正常
|
| | | */
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | |
|
| | | public String getHostId$(){
|
| | | HostService service = SpringUtils.getBean(HostService.class);
|
| | | Host host = service.getById(this.hostId);
|
| | |
| | | @ApiModelProperty(value= "单据状态")
|
| | | private Long orderSettle;
|
| | |
|
| | | @ApiModelProperty("物流名称")
|
| | | private String logisticsName;
|
| | |
|
| | | @ApiModelProperty("收货地址")
|
| | | private String address;
|
| | |
|
| | | @ApiModelProperty("联系电话")
|
| | | private String phone;
|
| | |
|
| | | @ApiModelProperty("快递单号")
|
| | | private String logistics;
|
| | |
|
| | | @ApiModelProperty("订单数量")
|
| | | @TableField(exist = false)
|
| | | private Double waitQty;
|
| | | /**
|
| | | * 所属机构
|
| | | */
|
| | |
| | | import com.fasterxml.jackson.annotation.JsonAnyGetter;
|
| | | import com.zy.asrs.common.utils.Synchro;
|
| | | import com.zy.asrs.framework.common.Cools;
|
| | | import com.zy.asrs.framework.common.DateUtils;
|
| | | import com.zy.asrs.framework.common.SpringUtils;
|
| | | import com.zy.asrs.wms.asrs.service.LocService;
|
| | | import com.zy.asrs.wms.asrs.service.MatService;
|
| | |
| | | import com.zy.asrs.wms.system.service.UserService;
|
| | | import io.swagger.annotations.ApiModelProperty;
|
| | | import lombok.Data;
|
| | | import lombok.experimental.Delegate;
|
| | | import org.springframework.format.annotation.DateTimeFormat;
|
| | |
|
| | | import java.io.Serializable;
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | | public String getMatId$(){
|
| | | @Delegate(types = Mat.class)
|
| | | public Mat getMatId$(){
|
| | | MatService service = SpringUtils.getBean(MatService.class);
|
| | | Mat mat = service.getById(this.matId);
|
| | | if (!Cools.isEmpty(mat)){
|
| | | return String.valueOf(mat.getId());
|
| | | }
|
| | | return null;
|
| | | return mat;
|
| | | }
|
| | |
|
| | | public String getDewell$() {
|
| | | return DateUtils.diff(new Date(), createTime) + "天";
|
| | | }
|
| | |
|
| | |
|
| | | public String getHostId$(){
|
| | | HostService service = SpringUtils.getBean(HostService.class);
|
| | | Host host = service.getById(this.hostId);
|
New file |
| | |
| | | package com.zy.asrs.wms.asrs.entity.param; |
| | | |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.experimental.Accessors; |
| | | import java.io.Serializable; |
| | | import java.util.List; |
| | | |
| | | /** |
| | | * Created by vincent on 2020/6/13 |
| | | */ |
| | | @Data |
| | | @Accessors(chain = true) |
| | | public class LocMastInitParam implements Serializable { |
| | | |
| | | @ApiModelProperty("仓库ID") |
| | | private Long warehouseId; |
| | | |
| | | @ApiModelProperty("库区ID") |
| | | private Long areaId; |
| | | |
| | | @ApiModelProperty("起始排") |
| | | private Integer startRow; |
| | | |
| | | @ApiModelProperty("终止排") |
| | | private Integer endRow; |
| | | |
| | | @ApiModelProperty("起始列") |
| | | private Integer startBay; |
| | | |
| | | @ApiModelProperty("终止列") |
| | | private Integer endBay; |
| | | |
| | | @ApiModelProperty("起始层") |
| | | private Integer startLev; |
| | | |
| | | @ApiModelProperty("终止层") |
| | | private Integer endLev; |
| | | |
| | | @ApiModelProperty("库位类型") |
| | | private List<Long> typeIds; |
| | | |
| | | @ApiModelProperty("巷道") |
| | | private Integer channel; |
| | | |
| | | |
| | | } |
| | |
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import java.text.SimpleDateFormat;
|
| | | import java.util.Collections;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | | import java.util.List;
|
| | | import java.util.*;
|
| | |
|
| | | @Service("orderService")
|
| | | public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements OrderService {
|
| | |
| | | throw new CoolException("更新明细索引失败");
|
| | | }
|
| | |
|
| | | mat.setUtiliz(mat.getUtiliz() + 1);
|
| | | mat.setUtiliz(Objects.isNull(mat.getUtiliz()) ? 0 : mat.getUtiliz() + 1);
|
| | |
|
| | | if (!matService.updateById(mat)) {
|
| | | throw new CoolException("物料使用率修改失败!!");
|
| | |
| | | for (TaskDetl taskDetl : taskDetls) {
|
| | | TaskDetlLog taskDetlLog = new TaskDetlLog();
|
| | | taskDetlLog.sync(taskDetl);
|
| | | taskDetlLog.setOrderId(taskDetl.getOrderId());
|
| | | taskDetlLog.setId(null);
|
| | | taskDetlLog.setTaskId(taskLog.getId());
|
| | | if (!taskDetlLogService.save(taskDetlLog)) {
|
| | |
| | | throw new RuntimeException("库位解析异常");
|
| | | }
|
| | |
|
| | | public static String getPlatLocNo(Number row, Number bay, Number lev) {
|
| | | return "C" + zerofill(String.valueOf(row), 2) + "-" + zerofill(String.valueOf(bay), 2) + "-" + zerofill(String.valueOf(lev), 2);
|
| | | }
|
| | |
|
| | | public static String getLocNo(Number row, Number bay, Number lev) {
|
| | | return row + _LINK + bay + _LINK + lev;
|
| | | }
|
| | |
|
| | | public static String zerofill(String msg, Integer count){
|
| | | if (msg.length() == count){
|
| | | return msg;
|
| | | } else if (msg.length() > count){
|
| | | return msg.substring(0, 16);
|
| | | } else {
|
| | | StringBuilder msgBuilder = new StringBuilder(msg);
|
| | | for (int i = 0; i<count-msg.length(); i++){
|
| | | msgBuilder.insert(0,"0");
|
| | | }
|
| | | return msgBuilder.toString();
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * List转为树形结构
|
| | | *
|
| | |
| | | validation-timeout: 3000
|
| | | connection-test-query: select 1
|
| | | driver-class-name: com.mysql.cj.jdbc.Driver
|
| | | # url: jdbc:mysql://127.0.0.1:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
| | | url: jdbc:mysql://127.0.0.1:3306/ycdsasrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
| | | url: jdbc:mysql://127.0.0.1:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
| | | # url: jdbc:mysql://127.0.0.1:3306/ycdsasrs?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
| | | username: root
|
| | | password: 123456
|
| | | password: 34821015
|
| | | # url: jdbc:mysql://47.76.147.249:3306/wms_dev_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
| | | # username: wms_dev_test
|
| | | # password: smjPbTrkmTMEGKaD
|