zhou zhou
昨天 786572b2bffe9ba196a56f4b0bb7098568dbf342
#pda生产直送
8个文件已修改
186 ■■■■ 已修改文件
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaOutStockService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java 100 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/MenuController.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Menu.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/controller/pda/PdaOutStockController.java
@@ -206,18 +206,22 @@
       return pdaOutStockService.containerRebinding(param,getLoginUserId());
    }
    @PostMapping("/orderOut/buffStore/callEmpty")
    @ApiOperation("灌桶入库呼叫空桶")
    public R buffStoreCallEmpty(@RequestBody PdaGeneralParam param) {
        param.getSta1();
        return R.ok();
    @PostMapping("/orderOut/getOrderItem")
    @ApiOperation("灌桶入库呼叫新料")
    public R getOrderItem(@RequestBody PdaGeneralParam param) {
        return pdaOutStockService.getOrderItem(param);
    }
    @PostMapping("/orderOut/buffStore/callNewMat")
    @PostMapping("/orderOut/getStationArea")
    @ApiOperation("灌桶入库呼叫新料")
    public R buffStoreCallNewMat(@RequestBody PdaGeneralParam param) {
        param.getSta2();
        return R.ok();
    public R getStationArea(@RequestBody PdaGeneralParam param) {
        return pdaOutStockService.getStationArea(param);
    }
    @PostMapping("/orderOut/productionDirectDelivery")
    @ApiOperation("生产直送")
    public R productionDirectDelivery(@RequestBody PdaGeneralParam param) {
        return pdaOutStockService.productionDirectDelivery(param,getLoginUserId());
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java
@@ -2,6 +2,7 @@
import com.vincent.rsf.server.manager.entity.LocItem;
import com.vincent.rsf.server.manager.entity.TaskItem;
import com.vincent.rsf.server.manager.entity.WkOrderItem;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -11,6 +12,11 @@
@Accessors(chain = true)
public class PdaGeneralParam {
    //生产直送
    private String orderNo;
    private Long stationAreaId;
    private List<WkOrderItem> wkOrderItems;
    // 容器号
    private String containerNo;
    // 接驳站号
rsf-server/src/main/java/com/vincent/rsf/server/api/service/PdaOutStockService.java
@@ -21,5 +21,11 @@
    R containerRebinding(PdaGeneralParam param,Long loginUserId);
    R taskItemList(PdaGeneralParam param, Long loginUserId);
    R getOrderItem(PdaGeneralParam param);
    R getStationArea(PdaGeneralParam param);
    R productionDirectDelivery(PdaGeneralParam param,Long loginUserId);
}
rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -16,10 +16,12 @@
import com.vincent.rsf.server.manager.enums.*;
import com.vincent.rsf.server.manager.service.*;
import com.vincent.rsf.server.manager.service.impl.BasContainerServiceImpl;
import com.vincent.rsf.server.manager.service.impl.BasStationAreaServiceImpl;
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import lombok.Synchronized;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -56,6 +58,8 @@
    private WaitPakinService waitPakinService;
    @Autowired
    private WaitPakinItemService waitPakinItemService;
    @Autowired
    private BasStationAreaServiceImpl basStationAreaService;
    @Override
    public R getOutStockTaskItem(String barcode) {
@@ -321,6 +325,102 @@
    }
    @Override
    public R getOrderItem(PdaGeneralParam param) {
        WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                .eq(WkOrder::getCode, param.getOrderNo())
                .eq(WkOrder::getType,OrderType.ORDER_OUT.type)
        );
        if (null == order) {
            throw new CoolException("未找到对应订单");
        }
        if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val) && !order.getExceStatus().equals(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val) ) {
            throw new CoolException("当前订单不在可执行状态");
        }
        List<WkOrderItem> list = asnOrderItemService.list(new LambdaQueryWrapper<WkOrderItem>()
                .eq(WkOrderItem::getOrderId, order.getId())
                .apply("anfme <> work_qty")
        );
        return R.ok(list);
    }
    @Override
    public R getStationArea(PdaGeneralParam param) {
        return R.ok(basStationAreaService.list());
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R productionDirectDelivery(PdaGeneralParam param,Long loginUserId) {
        WkOrder order = asnOrderService.getOne(new LambdaQueryWrapper<WkOrder>()
                .eq(WkOrder::getCode, param.getOrderNo())
                .eq(WkOrder::getType,OrderType.ORDER_OUT.type)
        );
        if (null == order) {
            throw new CoolException("未找到对应订单");
        }
        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add(param.getStationAreaId().toString());
        Task task = new Task();
        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
        task.setTaskCode(ruleCode)
             .setOrgSite(param.getSta1())
            .setSort(Constants.TASK_SORT_DEFAULT_VALUE)
            .setUpdateBy(loginUserId)
            .setCreateBy(loginUserId)
            .setCreateTime(new Date())
            .setUpdateTime(new Date())
            .setTaskStatus(TaskStsType.MISSION_INITIAL.id)
            .setBarcode(param.getContainerNo())
            .setTargSiteArea(arrayList)
            .setTaskType(TaskType.TASK_TYPE_PDD.type);
        if (!taskService.save(task)) {
            throw new CoolException("任务创建失败!!");
        }
        List<TaskItem> taskItems = new ArrayList<>();
        param.getWkOrderItems().forEach(item -> {
            TaskItem taskItem = new TaskItem();
            BeanUtils.copyProperties(item, taskItem);
            taskItem.setTaskId(task.getId())
                    .setAnfme(item.getDemandQty())
                    .setWorkQty(0D)
                    .setBatch(item.getBatch())
                    .setUpdateBy(loginUserId)
                    .setCreateBy(loginUserId)
                    .setCreateTime(new Date())
                    .setUpdateTime(new Date())
                    .setSplrBatch(item.getBatch())
                    .setPlatWorkCode(item.getPlatWorkCode())
                    .setPlatItemId(item.getPlatItemId())
                    .setOrderType(OrderType.ORDER_OUT.type)
                    .setWkType(Short.parseShort(order.getWkType()))
                    .setSourceCode(order.getCode())
                    .setSourceId(order.getId());
            taskItems.add(taskItem);
            item.setWorkQty(item.getWorkQty()+item.getDemandQty());
        });
        if (!taskItemService.saveBatch(taskItems)) {
            throw new CoolException("任务明细生成失败!!");
        }
        if (!order.getExceStatus().equals(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val)) {
            order.setExceStatus(AsnExceStatus.ASN_EXCE_STATUS_EXCE_ING.val);
            order.setUpdateBy(loginUserId);
            order.setUpdateTime(new Date());
            if (!asnOrderService.updateById(order)){
                throw new CoolException("单据状态更新失败!!");
            }
        }
        if (!asnOrderItemService.updateBatchById(param.getWkOrderItems())) {
            throw new CoolException("单据明细更新失败!!");
        }
        return R.ok();
    }
    @Override
    public R getWaveListItem(String barcode) {
        LambdaQueryWrapper<Wave> lambdaQueryWrapper = new LambdaQueryWrapper<>();
        lambdaQueryWrapper.eq(!Cools.isEmpty(barcode), Wave::getCode, barcode);
rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -7,6 +7,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.vincent.rsf.server.manager.enums.TaskType;
import com.vincent.rsf.server.system.constant.DictTypeCode;
import com.vincent.rsf.server.system.entity.DictData;
import com.vincent.rsf.server.system.service.DictDataService;
@@ -315,17 +316,7 @@
    }
    public String getTaskType$() {
        if (Cools.isEmpty(this.taskType)) {
            return null;
        }
        DictDataService dictDataService = SpringUtils.getBean(DictDataService.class);
        DictData dictDatas = dictDataService.getOne(new LambdaQueryWrapper<DictData>()
                .eq(DictData::getDictTypeCode, DictTypeCode.DICT_SYS_TASK_TYPE)
                .eq(DictData::getValue, this.taskType));
        if (Objects.isNull(dictDatas) || Objects.isNull(dictDatas.getLabel())) {
            return null;
        }
        return dictDatas.getValue() + "." + dictDatas.getLabel();
        return TaskType.getTypeDesc(taskType);
    }
    public String getStartTime$(){
rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/TaskType.java
@@ -21,6 +21,7 @@
    TASK_TYPE_CHECK_OUT("107", "盘点出库"),
    TASK_TYPE_CROSS_DOCKING_OUT("109", "备货"),
    TASK_TYPE_EMPTY_OUT("110", "空板出库"),
    TASK_TYPE_PDD("111", "生产直送"),
    ;
    public Integer type;
    public String desc;
@@ -46,6 +47,12 @@
            return TaskType.TASK_TYPE_MERGE_IN.desc;
        } else if (TaskType.TASK_TYPE_CHECK_IN.type.equals(type)) {
            return TaskType.TASK_TYPE_CHECK_IN.desc;
        } else if (TaskType.TASK_TYPE_CROSS_DOCKING_OUT.type.equals(type)) {
            return TaskType.TASK_TYPE_CROSS_DOCKING_OUT.desc;
        } else if (TaskType.TASK_TYPE_EMPTY_OUT.type.equals(type)) {
            return TaskType.TASK_TYPE_EMPTY_OUT.desc;
        }else if (TaskType.TASK_TYPE_PDD.type.equals(type)) {
            return TaskType.TASK_TYPE_PDD.desc;
        }
        return null;
rsf-server/src/main/java/com/vincent/rsf/server/system/controller/MenuController.java
@@ -10,6 +10,7 @@
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.common.service.RedisService;
import com.vincent.rsf.server.common.utils.ExcelUtil;
import com.vincent.rsf.server.common.utils.NodeUtils;
import com.vincent.rsf.server.system.entity.Menu;
@@ -24,8 +25,14 @@
@RestController
public class MenuController extends BaseController {
    private static final String MENU_TREE_CACHE_FLAG = "MENU_TREE";
    private static final String MENU_TREE_CACHE_KEY = "FULL_TREE";
    private static final int MENU_TREE_CACHE_TTL_SECONDS = 300;
    @Autowired
    private MenuService menuService;
    @Autowired
    private RedisService redisService;
    @PreAuthorize("hasAuthority('system:menu:list')")
    @PostMapping("/menu/page")
@@ -48,8 +55,7 @@
//        QueryWrapper<Menu> wrapper = param.buildWrapper(true, queryWrapper -> queryWrapper.orderByAsc("sort"));
//        List<Menu> menus = menuService.list(wrapper);
//        return R.ok().add(Utils.toTreeData(menus, 0L, Menu::getParentId, Menu::getId, Menu::setChildren));
        List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>().orderByAsc(Menu::getSort));
        List<Menu> treeData = Utils.toTreeData(menuList, 0L, Menu::getParentId, Menu::getId, Menu::setChildren);
        List<Menu> treeData = getMenuTreeData();
        if (!Cools.isEmpty(map.get("condition"))) {
            Utils.treeRemove(treeData, String.valueOf(map.get("condition")), Menu::getName, Menu::getChildren);
            Utils.treeRemove(treeData, String.valueOf(map.get("condition")), Menu::getName, Menu::getChildren);
@@ -94,6 +100,7 @@
        if (!menuService.save(menu)) {
            return R.error("Save Fail");
        }
        evictMenuTreeCache();
        return R.ok("Save Success").add(menu);
    }
@@ -120,6 +127,7 @@
        if (!menuService.updateById(menu)) {
            return R.error("Update Fail");
        }
        evictMenuTreeCache();
        return R.ok("Update Success").add(menu);
    }
@@ -130,6 +138,7 @@
        if (!menuService.removeByIds(Arrays.asList(ids))) {
            return R.error("Delete Fail");
        }
        evictMenuTreeCache();
        return R.ok("Delete Success").add(ids);
    }
@@ -153,5 +162,20 @@
        ExcelUtil.build(ExcelUtil.create(menuService.list(), Menu.class), response);
    }
    private List<Menu> getMenuTreeData() {
        List<Menu> treeData = redisService.get(MENU_TREE_CACHE_FLAG, MENU_TREE_CACHE_KEY);
        if (treeData != null) {
            return treeData;
        }
        List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>().orderByAsc(Menu::getSort));
        treeData = Utils.toTreeData(menuList, 0L, Menu::getParentId, Menu::getId, Menu::setChildren);
        redisService.set(MENU_TREE_CACHE_FLAG, MENU_TREE_CACHE_KEY, treeData, MENU_TREE_CACHE_TTL_SECONDS);
        return treeData;
    }
    private void evictMenuTreeCache() {
        redisService.delete(MENU_TREE_CACHE_FLAG, MENU_TREE_CACHE_KEY);
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/system/entity/Menu.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.vincent.rsf.framework.common.Cools;
import com.vincent.rsf.framework.common.SpringUtils;
import com.vincent.rsf.server.system.service.TenantService;
@@ -187,6 +188,7 @@
        }
    }
    @JsonIgnore
    public String getTenantId$(){
        TenantService service = SpringUtils.getBean(TenantService.class);
        Tenant tenant = service.getById(this.tenantId);
@@ -203,6 +205,7 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.createTime);
    }
    @JsonIgnore
    public String getCreateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.createBy);
@@ -219,6 +222,7 @@
        return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.updateTime);
    }
    @JsonIgnore
    public String getUpdateBy$(){
        UserService service = SpringUtils.getBean(UserService.class);
        User user = service.getById(this.updateBy);