skyouc
2025-03-19 cbe83089c3d3044a13bc38c7c4d94207fd22a741
#新增
1. ASN历史档逻辑处理
15个文件已添加
7个文件已修改
1179 ■■■■■ 已修改文件
rsf-server/src/main/java/asnOrderItemLog.sql 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/asnOrderLog.sql 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemLogController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java 110 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java 358 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java 294 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderLogMapper.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderItemLogMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/resources/mapper/manager/AsnOrderLogMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/asnOrderItemLog.sql
New file
@@ -0,0 +1,43 @@
-- save asnOrderItemLog record
-- mysql
insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.asnOrderItemLog', '0', '/manager/asnOrderItemLog', 'asnOrderItemLog', '0' , '0', '1' , '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query Asn order logs', '', '1', 'manager:asnOrderItemLog:list', '0', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create Asn order logs', '', '1', 'manager:asnOrderItemLog:save', '1', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update Asn order logs', '', '1', 'manager:asnOrderItemLog:update', '2', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete Asn order logs', '', '1', 'manager:asnOrderItemLog:remove', '3', '1', '1');
-- locale menu name
asnOrderItemLog: 'AsnOrderItemLog',
-- locale field
asnOrderItemLog: {
    asnId: "asnId",
    asnCode: "asnCode",
    platItemId: "platItemId",
    poDetlId: "poDetlId",
    poCode: "poCode",
    fieldsIndex: "fieldsIndex",
    matnrId: "matnrId",
    matnrCode: "matnrCode",
    maktx: "maktx",
    anfme: "anfme",
    stockUnit: "stockUnit",
    purQty: "purQty",
    purUnit: "purUnit",
    qty: "qty",
    splrCode: "splrCode",
    splrBatch: "splrBatch",
    splrName: "splrName",
    qrcode: "qrcode",
    trackCode: "trackCode",
    barcode: "barcode",
    packName: "packName",
    ntyStatus: "ntyStatus",
},
-- ResourceContent
import asnOrderItemLog from './asnOrderItemLog';
case 'asnOrderItemLog':
    return asnOrderItemLog;
rsf-server/src/main/java/asnOrderLog.sql
New file
@@ -0,0 +1,32 @@
-- save asnOrderLog record
-- mysql
insert into `sys_menu` ( `name`, `parent_id`, `route`, `component`, `type`, `sort`, `tenant_id`, `status`) values ( 'menu.asnOrderLog', '0', '/manager/asnOrderLog', 'asnOrderLog', '0' , '0', '1' , '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Query Asn order logs', '', '1', 'manager:asnOrderLog:list', '0', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Create Asn order logs', '', '1', 'manager:asnOrderLog:save', '1', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Update Asn order logs', '', '1', 'manager:asnOrderLog:update', '2', '1', '1');
insert into `sys_menu` ( `name`, `parent_id`, `type`, `authority`, `sort`, `tenant_id`, `status`) values ( 'Delete Asn order logs', '', '1', 'manager:asnOrderLog:remove', '3', '1', '1');
-- locale menu name
asnOrderLog: 'AsnOrderLog',
-- locale field
asnOrderLog: {
    code: "code",
    poCode: "poCode",
    poId: "poId",
    type: "type",
    wkType: "wkType",
    anfme: "anfme",
    qty: "qty",
    logisNo: "logisNo",
    arrTime: "arrTime",
    rleStatus: "rleStatus",
    ntyStatus: "ntyStatus",
},
-- ResourceContent
import asnOrderLog from './asnOrderLog';
case 'asnOrderLog':
    return asnOrderLog;
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/MobileServiceImpl.java
@@ -17,6 +17,8 @@
import com.vincent.rsf.server.common.utils.JwtUtil;
import com.vincent.rsf.server.manager.entity.*;
import com.vincent.rsf.server.manager.mapper.*;
import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.WarehouseAreasItemService;
import com.vincent.rsf.server.manager.service.WarehouseAreasService;
import com.vincent.rsf.server.system.constant.CodeRes;
@@ -32,13 +34,16 @@
import com.vincent.rsf.server.system.service.UserLoginService;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import org.apache.tika.utils.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.*;
/**
@@ -79,6 +84,12 @@
    private PurchaseItemMapper purchaseItemMapper;
    @Resource
    private FieldsMapper fieldsMapper;
    @Autowired
    private AsnOrderLogService asnOrderLogService;
    @Autowired
    private AsnOrderItemLogService asnOrderItemLogService;
    @Autowired
    private FieldsItemService fieldsItemService;
@@ -172,6 +183,9 @@
        String asnCode = receipts.stream().findFirst().get().getAsnCode();
        AsnOrder asnOrder = asnOrderMapper.selectOne(new LambdaQueryWrapper<AsnOrder>().eq(AsnOrder::getCode, asnCode));
        if (Objects.isNull(asnOrder)) {
            throw new CoolException("数据错误:主单不存在!!");
        }
        asnOrder.setQty(receiptQty);
        if (asnOrderMapper.updateById(asnOrder) < 1) {
@@ -248,18 +262,65 @@
                }
            }
            allOrders.add(item);
        });
        if (!warehouseAreasItemService.saveBatch(allOrders)) {
            throw new CoolException("收货失败!!");
        }
        //获取采购数量
        double purQty = receipts.stream().mapToDouble(ReceiptDetlsDto::getPurQty).sum();
        BigDecimal subtract = BigDecimal.valueOf(receiptQty).subtract(BigDecimal.valueOf(purQty));
        //判断已收货数量是否小于等于采购数量
        if (subtract.compareTo(new BigDecimal("0.0")) <= 0) {
            asnOrder.setRleStatus(Short.valueOf("1"));
            //日志表操作
            operateOrderLogs(asnOrder);
        }
        return R.ok("操作成功");
    }
    /**
     * @author Ryan
     * @description 删除原主单及明细,加入历史档
     * @param
     * @return
     * @time 2025/3/19 19:53
     */
    private void operateOrderLogs(AsnOrder asnOrder) {
        if (asnOrderMapper.deleteById(asnOrder.getId()) < 1) {
            throw new CoolException("原单据删除失败!!");
        }
        AsnOrderLog orderLog = new AsnOrderLog();
        BeanUtils.copyProperties(asnOrder, orderLog);
        if (!asnOrderLogService.save(orderLog)) {
            throw new CoolException("主单历史档添加失败!!");
        }
        List<AsnOrderItemLog> logs = new ArrayList<>();
        List<AsnOrderItem> items = asnOrderItemMapper.selectList(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId()));
        items.forEach(item -> {
            AsnOrderItemLog itemLog = new AsnOrderItemLog();
            BeanUtils.copyProperties(item, itemLog);
            logs.add(itemLog);
        });
        if (!asnOrderItemLogService.saveBatch(logs)) {
            throw new CoolException("通知单明细历史档保存失败!!");
        }
        if (asnOrderItemMapper.delete(new LambdaQueryWrapper<AsnOrderItem>().eq(AsnOrderItem::getAsnId, asnOrder.getId())) < 1) {
            throw new CoolException("原单据明细删除失败!!");
        }
    }
    /**
     * @author Ryan
     * @description 其它收货
     * @param params
     * @return
rsf-server/src/main/java/com/vincent/rsf/server/common/CodeBuilder.java
@@ -22,8 +22,8 @@
//        generator.username="sa";
//        generator.password="Zoneyung@zy56$";
        generator.table="man_loc_type_rela";
        generator.tableDesc="loc type rela";
        generator.table="man_asn_order_item_log";
        generator.tableDesc="Asn order logs";
        generator.packagePath="com.vincent.rsf.server.manager";
        generator.build();
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderItemLogController.java
New file
@@ -0,0 +1,110 @@
package com.vincent.rsf.server.manager.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.vincent.rsf.server.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@RestController
public class AsnOrderItemLogController extends BaseController {
    @Autowired
    private AsnOrderItemLogService asnOrderItemLogService;
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @PostMapping("/asnOrderItemLog/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<AsnOrderItemLog, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrderItemLog.class);
        return R.ok().add(asnOrderItemLogService.page(pageParam, pageParam.buildWrapper(true)));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @PostMapping("/asnOrderItemLog/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(asnOrderItemLogService.list());
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @PostMapping({"/asnOrderItemLog/many/{ids}", "/asnOrderItemLogs/many/{ids}"})
    public R many(@PathVariable Long[] ids) {
        return R.ok().add(asnOrderItemLogService.listByIds(Arrays.asList(ids)));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @GetMapping("/asnOrderItemLog/{id}")
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(asnOrderItemLogService.getById(id));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:save')")
    @OperationLog("Create Asn order logs")
    @PostMapping("/asnOrderItemLog/save")
    public R save(@RequestBody AsnOrderItemLog asnOrderItemLog) {
        asnOrderItemLog.setCreateBy(getLoginUserId());
        asnOrderItemLog.setCreateTime(new Date());
        asnOrderItemLog.setUpdateBy(getLoginUserId());
        asnOrderItemLog.setUpdateTime(new Date());
        if (!asnOrderItemLogService.save(asnOrderItemLog)) {
            return R.error("Save Fail");
        }
        return R.ok("Save Success").add(asnOrderItemLog);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:update')")
    @OperationLog("Update Asn order logs")
    @PostMapping("/asnOrderItemLog/update")
    public R update(@RequestBody AsnOrderItemLog asnOrderItemLog) {
        asnOrderItemLog.setUpdateBy(getLoginUserId());
        asnOrderItemLog.setUpdateTime(new Date());
        if (!asnOrderItemLogService.updateById(asnOrderItemLog)) {
            return R.error("Update Fail");
        }
        return R.ok("Update Success").add(asnOrderItemLog);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:remove')")
    @OperationLog("Delete Asn order logs")
    @PostMapping("/asnOrderItemLog/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (!asnOrderItemLogService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
        return R.ok("Delete Success").add(ids);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @PostMapping("/asnOrderItemLog/query")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<AsnOrderItemLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(AsnOrderItemLog::getId, condition);
        }
        asnOrderItemLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getId()))
        );
        return R.ok().add(vos);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderItemLog:list')")
    @PostMapping("/asnOrderItemLog/export")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(asnOrderItemLogService.list(), AsnOrderItemLog.class), response);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/AsnOrderLogController.java
New file
@@ -0,0 +1,110 @@
package com.vincent.rsf.server.manager.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.annotation.OperationLog;
import com.vincent.rsf.server.common.domain.BaseParam;
import com.vincent.rsf.server.common.domain.KeyValVo;
import com.vincent.rsf.server.common.domain.PageParam;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.system.controller.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
@RestController
public class AsnOrderLogController extends BaseController {
    @Autowired
    private AsnOrderLogService asnOrderLogService;
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @PostMapping("/asnOrderLog/page")
    public R page(@RequestBody Map<String, Object> map) {
        BaseParam baseParam = buildParam(map, BaseParam.class);
        PageParam<AsnOrderLog, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrderLog.class);
        return R.ok().add(asnOrderLogService.page(pageParam, pageParam.buildWrapper(true)));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @PostMapping("/asnOrderLog/list")
    public R list(@RequestBody Map<String, Object> map) {
        return R.ok().add(asnOrderLogService.list());
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @PostMapping({"/asnOrderLog/many/{ids}", "/asnOrderLogs/many/{ids}"})
    public R many(@PathVariable Long[] ids) {
        return R.ok().add(asnOrderLogService.listByIds(Arrays.asList(ids)));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @GetMapping("/asnOrderLog/{id}")
    public R get(@PathVariable("id") Long id) {
        return R.ok().add(asnOrderLogService.getById(id));
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:save')")
    @OperationLog("Create Asn order logs")
    @PostMapping("/asnOrderLog/save")
    public R save(@RequestBody AsnOrderLog asnOrderLog) {
        asnOrderLog.setCreateBy(getLoginUserId());
        asnOrderLog.setCreateTime(new Date());
        asnOrderLog.setUpdateBy(getLoginUserId());
        asnOrderLog.setUpdateTime(new Date());
        if (!asnOrderLogService.save(asnOrderLog)) {
            return R.error("Save Fail");
        }
        return R.ok("Save Success").add(asnOrderLog);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:update')")
    @OperationLog("Update Asn order logs")
    @PostMapping("/asnOrderLog/update")
    public R update(@RequestBody AsnOrderLog asnOrderLog) {
        asnOrderLog.setUpdateBy(getLoginUserId());
        asnOrderLog.setUpdateTime(new Date());
        if (!asnOrderLogService.updateById(asnOrderLog)) {
            return R.error("Update Fail");
        }
        return R.ok("Update Success").add(asnOrderLog);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:remove')")
    @OperationLog("Delete Asn order logs")
    @PostMapping("/asnOrderLog/remove/{ids}")
    public R remove(@PathVariable Long[] ids) {
        if (!asnOrderLogService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
        return R.ok("Delete Success").add(ids);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @PostMapping("/asnOrderLog/query")
    public R query(@RequestParam(required = false) String condition) {
        List<KeyValVo> vos = new ArrayList<>();
        LambdaQueryWrapper<AsnOrderLog> wrapper = new LambdaQueryWrapper<>();
        if (!Cools.isEmpty(condition)) {
            wrapper.like(AsnOrderLog::getId, condition);
        }
        asnOrderLogService.page(new Page<>(1, 30), wrapper).getRecords().forEach(
                item -> vos.add(new KeyValVo(item.getId(), item.getId()))
        );
        return R.ok().add(vos);
    }
    @PreAuthorize("hasAuthority('manager:asnOrderLog:list')")
    @PostMapping("/asnOrderLog/export")
    public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
        ExcelUtil.build(ExcelUtil.create(asnOrderLogService.list(), AsnOrderLog.class), response);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/LocController.java
@@ -76,8 +76,7 @@
        if (Objects.isNull(loc.getTypeIds())) {
            throw new CoolException("库位类型不能为空!!");
        }
        List<Long> lists = JSONArray.parseArray(loc.getTypeIds(), Long.class);
        String join = StringUtils.join(lists, ",");
        String join = StringUtils.join(loc.getTypeIds(), ",");
        loc.setType(join);
        loc.setCreateBy(getLoginUserId());
@@ -87,7 +86,7 @@
        }
        if (!locService.saveType(loc)) {
            throw new CoolException("库位类型保存失败!!");
            throw new CoolException("库位类型关联关系保存失败!!");
        }
        return R.ok("Save Success").add(loc);
    }
@@ -97,10 +96,17 @@
    @PostMapping("/loc/update")
    public R update(@RequestBody Loc loc) {
        loc.setUpdateBy(getLoginUserId());
        loc.setUpdateTime(new Date());
        String join = StringUtils.join(loc.getTypeIds(), ",");
        loc.setType(join);
        if (!locService.updateById(loc)) {
            return R.error("Update Fail");
        }
        if (!locService.updateLoc(loc)) {
            throw new CoolException("库位类型关联关系修改失败!!");
        }
        return R.ok("Update Success").add(loc);
    }
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderItemLog.java
New file
@@ -0,0 +1,358 @@
package com.vincent.rsf.server.manager.entity;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("man_asn_order_item_log")
public class AsnOrderItemLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * ASN主单标识
     */
    @ApiModelProperty(value= "ASN主单标识")
    private Long asnId;
    /**
     * ASN单号
     */
    @ApiModelProperty(value= "ASN单号")
    private String asnCode;
    /**
     * 平台行号
     */
    @ApiModelProperty(value= "平台行号")
    private String platItemId;
    /**
     * PO单明细标识
     */
    @ApiModelProperty(value= "PO单明细标识")
    private Long poDetlId;
    /**
     * PO单编码
     */
    @ApiModelProperty(value= "PO单编码")
    private String poCode;
    /**
     * 动态字段索引
     */
    @ApiModelProperty(value= "动态字段索引 ")
    private String fieldsIndex;
    /**
     * 物料标识
     */
    @ApiModelProperty(value= "物料标识")
    private String matnrId;
    /**
     * 物料助记码
     */
    @ApiModelProperty(value= "物料助记码")
    private String matnrCode;
    /**
     * 物料名称
     */
    @ApiModelProperty(value= "物料名称")
    private String maktx;
    /**
     * 送货数量
     */
    @ApiModelProperty(value= "送货数量")
    private Double anfme;
    /**
     * 库存单位
     */
    @ApiModelProperty(value= "库存单位")
    private String stockUnit;
    /**
     * 采购数量
     */
    @ApiModelProperty(value= "采购数量")
    private Double purQty;
    /**
     * 采购单位
     */
    @ApiModelProperty(value= "采购单位")
    private String purUnit;
    /**
     * 已收数量
     */
    @ApiModelProperty(value= "已收数量")
    private Double qty;
    /**
     * 供应商编码
     */
    @ApiModelProperty(value= "供应商编码")
    private String splrCode;
    /**
     * 供应商批次
     */
    @ApiModelProperty(value= "供应商批次")
    private String splrBatch;
    /**
     * 供应商名称
     */
    @ApiModelProperty(value= "供应商名称")
    private String splrName;
    /**
     * 二维码
     */
    @ApiModelProperty(value= "二维码")
    private String qrcode;
    /**
     * 跟踪码
     */
    @ApiModelProperty(value= "跟踪码")
    private String trackCode;
    /**
     * 条形码
     */
    @ApiModelProperty(value= "条形码")
    private String barcode;
    /**
     * 包装名称
     */
    @ApiModelProperty(value= "包装名称")
    private String packName;
    /**
     * 质检状态上报 0:  未上报   1:  已上报
     */
    @ApiModelProperty(value= "质检状态上报 0:  未上报   1:  已上报  ")
    private Short ntyStatus;
    /**
     * 状态 1: 正常  0: 冻结
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 冻结  ")
    private Integer status;
    /**
     * 是否删除 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
     * 租户
     */
    @ApiModelProperty(value= "租户")
    private Integer tenantId;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    public AsnOrderItemLog() {}
    public AsnOrderItemLog(Long asnId,String asnCode,String platItemId,Long poDetlId,String poCode,String fieldsIndex,String matnrId,String matnrCode,String maktx,Double anfme,String stockUnit,Double purQty,String purUnit,Double qty,String splrCode,String splrBatch,String splrName,String qrcode,String trackCode,String barcode,String packName,Short ntyStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.asnId = asnId;
        this.asnCode = asnCode;
        this.platItemId = platItemId;
        this.poDetlId = poDetlId;
        this.poCode = poCode;
        this.fieldsIndex = fieldsIndex;
        this.matnrId = matnrId;
        this.matnrCode = matnrCode;
        this.maktx = maktx;
        this.anfme = anfme;
        this.stockUnit = stockUnit;
        this.purQty = purQty;
        this.purUnit = purUnit;
        this.qty = qty;
        this.splrCode = splrCode;
        this.splrBatch = splrBatch;
        this.splrName = splrName;
        this.qrcode = qrcode;
        this.trackCode = trackCode;
        this.barcode = barcode;
        this.packName = packName;
        this.ntyStatus = ntyStatus;
        this.status = status;
        this.deleted = deleted;
        this.tenantId = tenantId;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
    }
//    AsnOrderItemLog asnOrderItemLog = new AsnOrderItemLog(
//            null,    // ASN主单标识
//            null,    // ASN单号
//            null,    // 平台行号
//            null,    // PO单明细标识
//            null,    // PO单编码
//            null,    // 动态字段索引
//            null,    // 物料标识
//            null,    // 物料助记码
//            null,    // 物料名称
//            null,    // 送货数量[非空]
//            null,    // 库存单位
//            null,    // 采购数量[非空]
//            null,    // 采购单位
//            null,    // 已收数量
//            null,    // 供应商编码
//            null,    // 供应商批次
//            null,    // 供应商名称
//            null,    // 二维码
//            null,    // 跟踪码
//            null,    // 条形码
//            null,    // 包装名称
//            null,    // 质检状态上报[非空]
//            null,    // 状态[非空]
//            null,    // 是否删除[非空]
//            null,    // 租户
//            null,    // 添加人员
//            null,    // 添加时间[非空]
//            null,    // 修改人员
//            null,    // 修改时间[非空]
//            null    // 备注
//    );
    public String getNtyStatus$(){
        if (null == this.ntyStatus){ return null; }
        switch (this.ntyStatus){
            case 0:
                return " 未上报";
            case  1:
                return " 已上报";
            default:
                return String.valueOf(this.ntyStatus);
        }
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "冻结";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public Boolean getStatusBool(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return true;
            case 0:
                return false;
            default:
                return null;
        }
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/AsnOrderLog.java
New file
@@ -0,0 +1,294 @@
package com.vincent.rsf.server.manager.entity;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.format.annotation.DateTimeFormat;
import com.baomidou.mybatisplus.annotation.TableLogic;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.system.service.UserService;
import com.vincent.rsf.server.system.entity.User;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("man_asn_order_log")
public class AsnOrderLog implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * ID
     */
    @ApiModelProperty(value= "ID")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 编号
     */
    @ApiModelProperty(value= "编号")
    private String code;
    /**
     * PO单号
     */
    @ApiModelProperty(value= "PO单号")
    private String poCode;
    /**
     * PO单据标识
     */
    @ApiModelProperty(value= "PO单据标识")
    private Long poId;
    /**
     * 单据类型
     */
    @ApiModelProperty(value= "单据类型")
    private String type;
    /**
     * 业务类型
     */
    @ApiModelProperty(value= "业务类型")
    private String wkType;
    /**
     * 送货数量
     */
    @ApiModelProperty(value= "送货数量")
    private Double anfme;
    /**
     * 已收数量
     */
    @ApiModelProperty(value= "已收数量")
    private Double qty;
    /**
     * 物流单号
     */
    @ApiModelProperty(value= "物流单号")
    private String logisNo;
    /**
     * 预计到达时间
     */
    @ApiModelProperty(value= "预计到达时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date arrTime;
    /**
     * 释放状态 0:  正常   1:  已释放
     */
    @ApiModelProperty(value= "释放状态 0:  正常   1:  已释放  ")
    private Short rleStatus;
    /**
     * 质检上报状态 0:  未上报   1:  已上报   2:  部分上报
     */
    @ApiModelProperty(value= "质检上报状态 0:  未上报   1:  已上报   2:  部分上报  ")
    private Short ntyStatus;
    /**
     * 状态 1: 正常  0: 冻结
     */
    @ApiModelProperty(value= "状态 1: 正常  0: 冻结  ")
    private Integer status;
    /**
     * 是否删除 1: 是  0: 否
     */
    @ApiModelProperty(value= "是否删除 1: 是  0: 否  ")
    @TableLogic
    private Integer deleted;
    /**
     * 租户
     */
    @ApiModelProperty(value= "租户")
    private Integer tenantId;
    /**
     * 添加人员
     */
    @ApiModelProperty(value= "添加人员")
    private Long createBy;
    /**
     * 添加时间
     */
    @ApiModelProperty(value= "添加时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;
    /**
     * 修改人员
     */
    @ApiModelProperty(value= "修改人员")
    private Long updateBy;
    /**
     * 修改时间
     */
    @ApiModelProperty(value= "修改时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
    /**
     * 备注
     */
    @ApiModelProperty(value= "备注")
    private String memo;
    public AsnOrderLog() {}
    public AsnOrderLog(String code,String poCode,Long poId,String type,String wkType,Double anfme,Double qty,String logisNo,Date arrTime,Short rleStatus,Short ntyStatus,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) {
        this.code = code;
        this.poCode = poCode;
        this.poId = poId;
        this.type = type;
        this.wkType = wkType;
        this.anfme = anfme;
        this.qty = qty;
        this.logisNo = logisNo;
        this.arrTime = arrTime;
        this.rleStatus = rleStatus;
        this.ntyStatus = ntyStatus;
        this.status = status;
        this.deleted = deleted;
        this.tenantId = tenantId;
        this.createBy = createBy;
        this.createTime = createTime;
        this.updateBy = updateBy;
        this.updateTime = updateTime;
        this.memo = memo;
    }
//    AsnOrderLog asnOrderLog = new AsnOrderLog(
//            null,    // 编号
//            null,    // PO单号
//            null,    // PO单据标识
//            null,    // 单据类型[非空]
//            null,    // 业务类型[非空]
//            null,    // 送货数量[非空]
//            null,    // 已收数量[非空]
//            null,    // 物流单号
//            null,    // 预计到达时间
//            null,    // 释放状态[非空]
//            null,    // 质检上报状态[非空]
//            null,    // 状态[非空]
//            null,    // 是否删除[非空]
//            null,    // 租户
//            null,    // 添加人员
//            null,    // 添加时间[非空]
//            null,    // 修改人员
//            null,    // 修改时间[非空]
//            null    // 备注
//    );
    public String getArrTime$(){
        if (Cools.isEmpty(this.arrTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.arrTime);
    }
    public String getRleStatus$(){
        if (null == this.rleStatus){ return null; }
        switch (this.rleStatus){
            case 0:
                return " 正常";
            case  1:
                return " 已释放";
            default:
                return String.valueOf(this.rleStatus);
        }
    }
    public String getNtyStatus$(){
        if (null == this.ntyStatus){ return null; }
        switch (this.ntyStatus){
            case 0:
                return " 未上报";
            case  1:
                return " 已上报";
            case  2:
                return " 部分上报";
            default:
                return String.valueOf(this.ntyStatus);
        }
    }
    public String getStatus$(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return "正常";
            case 0:
                return "冻结";
            default:
                return String.valueOf(this.status);
        }
    }
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getCreateTime$(){
        if (Cools.isEmpty(this.createTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);
        if (!Cools.isEmpty(user)){
            return String.valueOf(user.getNickname());
        }
        return null;
    }
    public String getUpdateTime$(){
        if (Cools.isEmpty(this.updateTime)){
            return "";
        }
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    public Boolean getStatusBool(){
        if (null == this.status){ return null; }
        switch (this.status){
            case 1:
                return true;
            case 0:
                return false;
            default:
                return null;
        }
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Loc.java
@@ -63,7 +63,7 @@
    @ApiModelProperty("库位类型(*)[man_loc_type]")
    @TableField(exist = false)
    private String typeIds;
    private List<Long> typeIds;
    /**
     * 虚拟库位
@@ -280,9 +280,10 @@
//            null    // 备注
//    );
    public String getType$(){
    public String getTypeId$(){
        if (null == this.type){ return null; }
        List<String> asList = Arrays.asList(this.type);
        String[] split = this.type.split(",");
        List<String> asList = Arrays.asList(split);
        if (asList.isEmpty()) {
            return null;
        }
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderItemLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.mapper;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface AsnOrderItemLogMapper extends BaseMapper<AsnOrderItemLog> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/AsnOrderLogMapper.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.mapper;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Mapper
@Repository
public interface AsnOrderLogMapper extends BaseMapper<AsnOrderLog> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/AsnOrderLogSchedule.java
New file
@@ -0,0 +1,36 @@
package com.vincent.rsf.server.manager.schedules;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.vincent.rsf.server.manager.entity.AsnOrder;
import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.vincent.rsf.server.manager.service.AsnOrderItemService;
import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.vincent.rsf.server.manager.service.AsnOrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
/**
 * @author Ryan
 * @version 1.0
 * @title AsnOrderLogSchedule
 * @description
 * @create 2025/3/19 19:07
 */
@Component
public class AsnOrderLogSchedule {
    /**
     * @author Ryan
     * @description 删除已完成订单加入Log表
     * @param
     * @return
     * @time 2025/3/19 19:09
     */
    @Scheduled(cron = "0 0/05 * * * ?  ")
    @Transactional(rollbackFor = Exception.class)
    public void moveOrderToLog() {
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderItemLogService.java
New file
@@ -0,0 +1,8 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
public interface AsnOrderItemLogService extends IService<AsnOrderItemLog> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/AsnOrderLogService.java
New file
@@ -0,0 +1,8 @@
package com.vincent.rsf.server.manager.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
public interface AsnOrderLogService extends IService<AsnOrderLog> {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocService.java
@@ -15,4 +15,6 @@
    R initLocs(LocMastInitParam param);
    boolean saveType(Loc typeIds);
    boolean updateLoc(Loc loc);
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderItemLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.service.impl;
import com.vincent.rsf.server.manager.mapper.AsnOrderItemLogMapper;
import com.vincent.rsf.server.manager.entity.AsnOrderItemLog;
import com.vincent.rsf.server.manager.service.AsnOrderItemLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("asnOrderItemLogService")
public class AsnOrderItemLogServiceImpl extends ServiceImpl<AsnOrderItemLogMapper, AsnOrderItemLog> implements AsnOrderItemLogService {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/AsnOrderLogServiceImpl.java
New file
@@ -0,0 +1,12 @@
package com.vincent.rsf.server.manager.service.impl;
import com.vincent.rsf.server.manager.mapper.AsnOrderLogMapper;
import com.vincent.rsf.server.manager.entity.AsnOrderLog;
import com.vincent.rsf.server.manager.service.AsnOrderLogService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service("asnOrderLogService")
public class AsnOrderLogServiceImpl extends ServiceImpl<AsnOrderLogMapper, AsnOrderLog> implements AsnOrderLogService {
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocServiceImpl.java
@@ -1,6 +1,7 @@
package com.vincent.rsf.server.manager.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.framework.exception.CoolException;
@@ -11,6 +12,7 @@
import com.vincent.rsf.server.manager.entity.WarehouseAreas;
import com.vincent.rsf.server.manager.mapper.LocMapper;
import com.vincent.rsf.server.manager.entity.Loc;
import com.vincent.rsf.server.manager.mapper.LocTypeRelaMapper;
import com.vincent.rsf.server.manager.service.LocService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.vincent.rsf.server.manager.service.LocTypeRelaService;
@@ -34,6 +36,9 @@
    @Autowired
    private LocTypeRelaService locTypeRelaService;
    @Autowired
    private LocTypeRelaMapper locTypeRelaMapper;
    @Override
    public R modifyLocs(LocModifyParams locs) {
@@ -102,19 +107,35 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean saveType(Loc loc) {
        List<LocTypeRela> relas =  new ArrayList<>();
        List<Long> lists = JSONArray.parseArray(loc.getTypeIds(), Long.class);
        lists.forEach(id -> {
        loc.getTypeIds().forEach(id -> {
            LocTypeRela typeRela = new LocTypeRela();
            typeRela.setTypeId(id)
                    .setLocId(loc.getId());
            relas.add(typeRela);
        });
        if (!locTypeRelaService.saveBatch(relas)) {
        if (!locTypeRelaService.saveOrUpdateBatch(relas)) {
            throw new CoolException("库位关联关系保存成功!!");
        }
        return true;
    }
    @Override
    public boolean updateLoc(Loc loc) {
        locTypeRelaMapper.delete(new LambdaQueryWrapper<LocTypeRela>().eq(LocTypeRela::getLocId, loc.getId()));
        List<LocTypeRela> relas =  new ArrayList<>();
        loc.getTypeIds().forEach(id -> {
            LocTypeRela typeRela = new LocTypeRela();
            typeRela.setTypeId(id)
                    .setLocId(loc.getId());
            relas.add(typeRela);
        });
        if (!locTypeRelaService.saveOrUpdateBatch(relas)) {
            throw new CoolException("库位关联关系保存成功!!");
        }
        return false;
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/MatnrServiceImpl.java
@@ -105,6 +105,7 @@
                record.setExtendFields(fields);
            }
        }
        return null;
        page.setRecords(records);
        return page;
    }
}
rsf-server/src/main/resources/mapper/manager/AsnOrderItemLogMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vincent.rsf.server.manager.mapper.AsnOrderItemLogMapper">
</mapper>
rsf-server/src/main/resources/mapper/manager/AsnOrderLogMapper.xml
New file
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vincent.rsf.server.manager.mapper.AsnOrderLogMapper">
</mapper>