yangyang
2025-06-29 5cf0fe34b6ef60407e7e8802d3f756bed9d9b7ac
问题修复
14个文件已修改
1个文件已添加
329 ■■■■ 已修改文件
zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/locDetl/show.vue 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/order/order/edit.vue 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/orderDetl/show.vue 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/loc/locDetl/index.vue 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocMapController.java 57 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocMastInitParam.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/resources/application.yml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/components/locDetl/selectLocDetl/index.vue
@@ -64,6 +64,27 @@
        ...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,
zy-asrs-admin/src/components/locDetl/show.vue
@@ -37,13 +37,6 @@
        ...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,
@@ -51,6 +44,27 @@
        ...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,
zy-asrs-admin/src/components/order/order/edit.vue
@@ -132,10 +132,6 @@
                <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"
@@ -148,45 +144,21 @@
                        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>
zy-asrs-admin/src/components/orderDetl/show.vue
@@ -184,6 +184,7 @@
            let result = resp.data;
            if(result.data != null) {
                orderInfo.value = result.data;
                console.log(result.data);
            }
        })
    }
@@ -237,6 +238,25 @@
                        单据状态:{{ 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>
zy-asrs-admin/src/views/loc/locDetl/index.vue
@@ -69,13 +69,6 @@
    ...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,
@@ -83,6 +76,34 @@
    ...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,
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/LocMapController.java
@@ -8,6 +8,7 @@
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;
@@ -153,32 +154,56 @@
    @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("添加成功");
    }
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/controller/OrderController.java
@@ -7,6 +7,7 @@
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;
@@ -14,6 +15,7 @@
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;
@@ -43,6 +45,8 @@
    private OrderTypeService orderTypeService;
    @Autowired
    private MatFieldService matFieldService;
    @Autowired
    private OrderDetlServiceImpl orderDetlService;
    @PreAuthorize("hasAuthority('asrs:order:list')")
    @PostMapping("/order/page")
@@ -147,7 +151,13 @@
    @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')")
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/LocDetl.java
@@ -7,6 +7,7 @@
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;
@@ -137,6 +138,7 @@
    @ApiModelProperty(value= "备注")
    private String memo;
    /**
     * 库存冻结 1: 冻结  0: 正常
     */
@@ -200,6 +202,7 @@
        return null;
    }
    public String getHostId$(){
        HostService service = SpringUtils.getBean(HostService.class);
        Host host = service.getById(this.hostId);
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/Order.java
@@ -66,6 +66,21 @@
    @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;
    /**
     * 所属机构
     */
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/ViewLocDetl.java
@@ -7,6 +7,7 @@
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;
@@ -16,6 +17,7 @@
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;
@@ -183,15 +185,18 @@
        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);
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/entity/param/LocMastInitParam.java
New file
@@ -0,0 +1,47 @@
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;
}
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/service/impl/OrderServiceImpl.java
@@ -19,10 +19,7 @@
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 {
@@ -132,7 +129,7 @@
                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("物料使用率修改失败!!");
zy-asrs-wms/src/main/java/com/zy/asrs/wms/asrs/timer/TaskLogTimer.java
@@ -123,6 +123,7 @@
                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)) {
zy-asrs-wms/src/main/java/com/zy/asrs/wms/utils/Utils.java
@@ -124,10 +124,28 @@
        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转为树形结构
     *
zy-asrs-wms/src/main/resources/application.yml
@@ -13,10 +13,10 @@
      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