add:新增销售单

This commit is contained in:
2025-09-25 09:47:52 +08:00
parent c77bce593f
commit 88e19d0b7a
20 changed files with 978 additions and 23 deletions

View File

@@ -69,5 +69,11 @@ public class MaterialbaseController {
return new ResponseEntity<>(HttpStatus.NO_CONTENT); return new ResponseEntity<>(HttpStatus.NO_CONTENT);
} }
@PostMapping("/queryMater")
@Log("获取物料")
public ResponseEntity<Object> queryMater(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(iMdMeMaterialbaseService.getByCode(whereJson.getString("material_code")),HttpStatus.OK);
}
} }

View File

@@ -61,4 +61,10 @@ public class SupplierController {
return new ResponseEntity<>(HttpStatus.OK); return new ResponseEntity<>(HttpStatus.OK);
} }
@PostMapping("/getSupp")
@Log("获取供应商")
public ResponseEntity<Object> getSupp() {
return new ResponseEntity<>(iMdCsSupplierbaseService.getSupp(), HttpStatus.OK);
}
} }

View File

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery; import org.nl.common.domain.query.PageQuery;
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase; import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -43,4 +44,11 @@ public interface IMdCsSupplierbaseService extends IService<MdCsSupplierbase> {
* @param ids 供应商标识集合 * @param ids 供应商标识集合
*/ */
void delete(Set<String> ids); void delete(Set<String> ids);
/**
* 获取供应商
* @return List<MdCsSupplierbase>
*/
List<MdCsSupplierbase> getSupp();
} }

View File

@@ -16,9 +16,11 @@ import org.nl.wms.basedata_manage.enums.BaseDataEnum;
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService; import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase; import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
import org.nl.wms.basedata_manage.service.dao.mapper.MdCsSupplierbaseMapper; import org.nl.wms.basedata_manage.service.dao.mapper.MdCsSupplierbaseMapper;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
@@ -59,7 +61,7 @@ public class MdCsSupplierbaseServiceImpl extends ServiceImpl<MdCsSupplierbaseMap
.eq(MdCsSupplierbase::getSupp_code, dto.getSupp_code()) .eq(MdCsSupplierbase::getSupp_code, dto.getSupp_code())
); );
if (ObjectUtil.isNotEmpty(mdCsSupplierbase)) { if (ObjectUtil.isNotEmpty(mdCsSupplierbase)) {
throw new BadRequestException("当前供应商编码已存在【"+dto.getSupp_code()+""); throw new BadRequestException("当前供应商编码已存在【" + dto.getSupp_code() + "");
} }
// 新增 // 新增
@@ -93,4 +95,13 @@ public class MdCsSupplierbaseServiceImpl extends ServiceImpl<MdCsSupplierbaseMap
public void delete(Set<String> ids) { public void delete(Set<String> ids) {
this.baseMapper.deleteBatchIds(ids); this.baseMapper.deleteBatchIds(ids);
} }
@Override
public List<MdCsSupplierbase> getSupp() {
return this.baseMapper.selectList(
new QueryWrapper<MdCsSupplierbase>().lambda()
.eq(MdCsSupplierbase::getIs_used, IOSConstant.IS_DELETE_YES)
.eq(MdCsSupplierbase::getIs_delete, IOSConstant.IS_DELETE_NO)
);
}
} }

View File

@@ -18,8 +18,10 @@ import org.nl.wms.sch_manage.service.util.tasks.BackInTask;
import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IRawAssistIStorService; import org.nl.wms.warehouse_management.service.IRawAssistIStorService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis; import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl; import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils; import org.nl.wms.warehouse_management.service.util.UpdateIvtUtils;
@@ -27,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
/** /**
@@ -88,6 +91,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Autowired @Autowired
private IRawAssistIStorService iRawAssistIStorService; private IRawAssistIStorService iRawAssistIStorService;
@Resource
private GroupPlateMapper groupPlateMapper;
@Override @Override
public PdaResponse getDtl(JSONObject whereJson) { public PdaResponse getDtl(JSONObject whereJson) {
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson)); return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson));
@@ -129,6 +135,14 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
// 更新分配明细实际出库数量 // 更新分配明细实际出库数量
disDao.setReal_qty(jsonIvt.getBigDecimal("qty")); disDao.setReal_qty(jsonIvt.getBigDecimal("qty"));
ioStorInvDisMapper.updateById(disDao); ioStorInvDisMapper.updateById(disDao);
// 删除组盘信息
groupPlateMapper.delete(
new QueryWrapper<GroupPlate>().lambda()
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getPcsn,disDao.getPcsn())
.eq(GroupPlate::getMaterial_id,disDao.getMaterial_id())
.eq(GroupPlate::getStoragevehicle_code,disDao.getStoragevehicle_code())
);
} else { } else {
// ------剩余回库------ // ------剩余回库------
// 更新库存 :变动数量 = 减可用(库存数量-(实际出库数量-计划数量)) // 更新库存 :变动数量 = 减可用(库存数量-(实际出库数量-计划数量))

View File

@@ -19,10 +19,14 @@ import org.nl.wms.sch_manage.service.util.AbstractTask;
import org.nl.wms.sch_manage.service.util.AcsTaskDto; import org.nl.wms.sch_manage.service.util.AcsTaskDto;
import org.nl.wms.sch_manage.service.util.TaskType; import org.nl.wms.sch_manage.service.util.TaskType;
import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IMdPbGroupplateService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
/** /**
* @Author: Liuxy * @Author: Liuxy
* @Description: 余料回库类 * @Description: 余料回库类
@@ -50,6 +54,9 @@ public class BackInTask extends AbstractTask {
@Autowired @Autowired
private IStructattrService iStructattrService; private IStructattrService iStructattrService;
@Resource
private IMdPbGroupplateService iMdPbGroupplateService;
@Override @Override
public String create(JSONObject json) { public String create(JSONObject json) {
SchBaseTask task = new SchBaseTask(); SchBaseTask task = new SchBaseTask();
@@ -131,7 +138,7 @@ public class BackInTask extends AbstractTask {
if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) { if (Integer.parseInt(taskObj.getTask_status()) > Integer.parseInt(TaskStatus.CREATE.getCode())) {
throw new BadRequestException("只能取消生成中的任务!"); throw new BadRequestException("只能取消生成中的任务!");
} }
this.cancelTask(taskObj); this.cancelTask(taskObj);
} }
@Override @Override
@@ -143,22 +150,30 @@ public class BackInTask extends AbstractTask {
// 更新终点 // 更新终点
iStructattrService.update( iStructattrService.update(
new UpdateWrapper<Structattr>().lambda() new UpdateWrapper<Structattr>().lambda()
.eq(Structattr::getStruct_code, taskObj.getPoint_code2()) .eq(Structattr::getStruct_code, taskObj.getPoint_code2())
.set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code()) .set(Structattr::getStoragevehicle_code, taskObj.getVehicle_code())
.set(Structattr::getTaskdtl_id, null) .set(Structattr::getTaskdtl_id, null)
.set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定")) .set(Structattr::getLock_type, IOSEnum.LOCK_TYPE.code("未锁定"))
); );
// 更新起点 // 更新起点
iSchBasePointService.update( iSchBasePointService.update(
new UpdateWrapper<SchBasePoint>().lambda() new UpdateWrapper<SchBasePoint>().lambda()
.eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1()) .eq(SchBasePoint::getPoint_code, taskObj.getPoint_code1())
.set(SchBasePoint::getVehicle_code, null) .set(SchBasePoint::getVehicle_code, null)
.set(SchBasePoint::getIos_id, null) .set(SchBasePoint::getIos_id, null)
); );
// 更新任务 // 更新任务
taskObj.setRemark("已完成"); taskObj.setRemark("已完成");
taskObj.setTask_status(TaskStatus.FINISHED.getCode()); taskObj.setTask_status(TaskStatus.FINISHED.getCode());
taskService.updateById(taskObj); taskService.updateById(taskObj);
// 更新组盘状态
iMdPbGroupplateService.update(
new UpdateWrapper<GroupPlate>().lambda()
.set(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getStoragevehicle_code, taskObj.getVehicle_code())
.eq(GroupPlate::getStatus, IOSEnum.GROUP_PLATE_STATUS.code("出库"))
);
} }
@Transactional @Transactional

View File

@@ -0,0 +1,78 @@
package org.nl.wms.warehouse_management.controller;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.base.TableDataInfo;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.warehouse_management.service.IStIvtSalesorderService;
import org.nl.wms.warehouse_management.service.dao.StIvtSalesorder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import java.util.Set;
/**
* <p>
* 出入库回传 控制层
* </p>
*
* @author Liuxy
* @since 2025-06-03
*/
@RestController
@RequiredArgsConstructor
@RequestMapping("/api/salesorder")
@Slf4j
public class SalesOrderController {
@Autowired
private IStIvtSalesorderService iStIvtSalesorderService;
@GetMapping
@Log("分页查询")
public ResponseEntity<Object> query(@RequestParam Map whereJson, PageQuery page) {
return new ResponseEntity<>(TableDataInfo.build(iStIvtSalesorderService.queryAll(whereJson, page)), HttpStatus.OK);
}
@PostMapping
@Log("新增销售单")
public ResponseEntity<Object> create(@Validated @RequestBody StIvtSalesorder dao) {
iStIvtSalesorderService.create(dao);
return new ResponseEntity<>(HttpStatus.CREATED);
}
@PutMapping
@Log("修改销售单")
public ResponseEntity<Object> update(@Validated @RequestBody StIvtSalesorder dao) {
iStIvtSalesorderService.update(dao);
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
}
@DeleteMapping
@Log("删除销售单")
public ResponseEntity<Object> delete(@RequestBody Set<String> ids) {
iStIvtSalesorderService.delete(ids);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/checkIos")
@Log("审核")
public ResponseEntity<Object> checkIos(@Validated @RequestBody StIvtSalesorder dao) {
iStIvtSalesorderService.checkIos(dao);
return new ResponseEntity<>(HttpStatus.OK);
}
@PostMapping("/createOutIos")
@Log("创建出库单")
public ResponseEntity<Object> createOutIos(@Validated @RequestBody StIvtSalesorder dao) {
iStIvtSalesorderService.createOutIos(dao);
return new ResponseEntity<>(HttpStatus.OK);
}
}

View File

@@ -80,4 +80,9 @@ public class IOSConstant {
* 主存区编码 * 主存区编码
*/ */
public final static String SECT_CODE = "ZC01"; public final static String SECT_CODE = "ZC01";
/**
* 仓库ID
*/
public final static String STOR_ID = "1582991156504039424";
} }

View File

@@ -30,6 +30,9 @@ public enum IOSEnum {
// 入库业务类型 // 入库业务类型
BILL_TYPE(MapOf.of("生产入库","0001", "手工入库", "0009")), BILL_TYPE(MapOf.of("生产入库","0001", "手工入库", "0009")),
// 出库业务类型
BILL_TYPE_OUT(MapOf.of("销售出库","1001", "手工出库", "1009")),
//入库分配明细状态 //入库分配明细状态
INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")), INBILL_DIS_STATUS(MapOf.of("未生成", "00", "生成", "01", "执行中", "02", "完成", "99")),
@@ -77,6 +80,9 @@ public enum IOSEnum {
// 盘点明细状态 // 盘点明细状态
CHECK_DTL_STATUS(MapOf.of("生成", "10", "盘点中", "20", "已盘点", "30", "完成", "99")), CHECK_DTL_STATUS(MapOf.of("生成", "10", "盘点中", "20", "已盘点", "30", "完成", "99")),
// 销售单状态
SALE_STATUS(MapOf.of("生成", "1", "审核", "2", "下发", "3", "完成", "9")),
; ;
private Map<String, String> code; private Map<String, String> code;

View File

@@ -0,0 +1,62 @@
package org.nl.wms.warehouse_management.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import org.nl.common.domain.query.PageQuery;
import org.nl.wms.warehouse_management.service.dao.StIvtSalesorder;
import java.util.Map;
import java.util.Set;
/**
* <p>
* 销售单管理 服务类
* </p>
*
* @author Liuxy
* @since 2025-09-23
*/
public interface IStIvtSalesorderService extends IService<StIvtSalesorder> {
/**
* 分页查询
*
* @param whereJson : {查询参数}
* @param page : 分页对象
* @return 返回结果
*/
IPage<StIvtSalesorder> queryAll(Map whereJson, PageQuery page);
/**
* 新增销售单
*
* @param dao 销售单实体类
*/
void create(StIvtSalesorder dao);
/**
* 修改销售单
*
* @param dao 销售单实体类
*/
void update(StIvtSalesorder dao);
/**
* 删除销售单
*
* @param ids 标识
*/
void delete(Set<String> ids);
/**
* 审核
* @param dao 实体类
*/
void checkIos(StIvtSalesorder dao);
/**
* 创建出库单
* @param dao 实体类
*/
void createOutIos(StIvtSalesorder dao);
}

View File

@@ -0,0 +1,122 @@
package org.nl.wms.warehouse_management.service.dao;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* <p>
* 销售单管理
* </p>
*
* @author Liuxy
* @since 2025-09-23
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("st_ivt_salesorder")
public class StIvtSalesorder implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 销售单标识
*/
@TableId(value = "sale_id")
private String sale_id;
/**
* 销售单编码
*/
private String sale_code;
/**
* 物料编码
*/
private String material_code;
/**
* 物料名称
*/
private String material_name;
/**
* 客户编码
*/
private String supp_code;
/**
* 客户名称
*/
private String supp_name;
/**
* 销售数量
*/
private BigDecimal sale_qty;
/**
* 数量计量单位标识
*/
private String qty_unit_id;
/**
* 数量计量单位名称
*/
private String qty_unit_name;
/**
* 销售单状态
*/
private String sale_status;
/**
* 创建人
*/
private String create_id;
/**
* 创建人名称
*/
private String create_name;
/**
* 创建时间
*/
private String create_time;
/**
* 审核人
*/
private String check_id;
/**
* 审核人名称
*/
private String check_name;
/**
* 审核时间
*/
private String check_time;
/**
* 完成人
*/
private String confirm_id;
/**
* 完成人名称
*/
private String confirm_name;
/**
* 完成时间
*/
private String confirm_time;
}

View File

@@ -0,0 +1,16 @@
package org.nl.wms.warehouse_management.service.dao.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.nl.wms.warehouse_management.service.dao.StIvtSalesorder;
/**
* <p>
* 销售单管理 Mapper 接口
* </p>
*
* @author Liuxy
* @since 2025-09-23
*/
public interface StIvtSalesorderMapper extends BaseMapper<StIvtSalesorder> {
}

View 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="org.nl.wms.warehouse_management.service.dao.mapper.StIvtSalesorderMapper">
</mapper>

View File

@@ -2,7 +2,6 @@ package org.nl.wms.warehouse_management.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
@@ -10,6 +9,7 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -24,8 +24,6 @@ import org.nl.wms.basedata_manage.service.IBsrealStorattrService;
import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService; import org.nl.wms.basedata_manage.service.IMdPbStoragevehicleextService;
import org.nl.wms.basedata_manage.service.IStructattrService; import org.nl.wms.basedata_manage.service.IStructattrService;
import org.nl.wms.basedata_manage.service.dao.BsrealStorattr; import org.nl.wms.basedata_manage.service.dao.BsrealStorattr;
import org.nl.wms.basedata_manage.service.dao.MdPbStoragevehicleext;
import org.nl.wms.basedata_manage.service.dao.Structattr;
import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper; import org.nl.wms.basedata_manage.service.dao.mapper.MdPbStoragevehicleextMapper;
import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto; import org.nl.wms.basedata_manage.service.dto.MdPbStoragevehicleextDto;
import org.nl.wms.sch_manage.enums.TaskStatus; import org.nl.wms.sch_manage.enums.TaskStatus;
@@ -33,22 +31,18 @@ import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint; import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.nl.wms.sch_manage.service.dao.SchBaseTask; import org.nl.wms.sch_manage.service.dao.SchBaseTask;
import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper; import org.nl.wms.sch_manage.service.dao.mapper.SchBasePointMapper;
import org.nl.wms.sch_manage.service.util.tasks.StInTask;
import org.nl.wms.sch_manage.service.util.tasks.StOutTask; import org.nl.wms.sch_manage.service.util.tasks.StOutTask;
import org.nl.wms.warehouse_management.enums.IOSConstant; import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum; import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IOutBillService; import org.nl.wms.warehouse_management.service.IOutBillService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate; import org.nl.wms.warehouse_management.service.IStIvtSalesorderService;
import org.nl.wms.warehouse_management.service.dao.IOStorInv; import org.nl.wms.warehouse_management.service.dao.*;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDis;
import org.nl.wms.warehouse_management.service.dao.IOStorInvDtl;
import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper; import org.nl.wms.warehouse_management.service.dao.mapper.GroupPlateMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDisMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvDtlMapper;
import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper; import org.nl.wms.warehouse_management.service.dao.mapper.IOStorInvMapper;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto; import org.nl.wms.warehouse_management.service.dto.IOStorInvDisDto;
import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto; import org.nl.wms.warehouse_management.service.dto.IOStorInvDtlDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@@ -100,6 +94,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Resource @Resource
private SchBasePointMapper schBasePointMapper; private SchBasePointMapper schBasePointMapper;
@Resource
private IStIvtSalesorderService iStIvtSalesorderService;
@Override @Override
public IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) { public IPage<IOStorInv> pageQuery(Map whereJson, PageQuery page, String[] stor_id, String[] bill_status, String[] bill_type) {
@@ -287,6 +283,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
map.put("update_optid", currentUserId); map.put("update_optid", currentUserId);
map.put("update_optname", nickName); map.put("update_optname", nickName);
map.put("update_time", now); map.put("update_time", now);
map.put("source_id", map.getString("source_id"));
map.put("is_delete", BaseDataEnum.IS_YES_NOT.code("")); map.put("is_delete", BaseDataEnum.IS_YES_NOT.code(""));
map.put("is_upload", BaseDataEnum.IS_YES_NOT.code("")); map.put("is_upload", BaseDataEnum.IS_YES_NOT.code(""));
// 主表重量 // 主表重量
@@ -1136,6 +1133,7 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
//更新组盘记录表 //更新组盘记录表
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库")) .set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn()) .eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id()) .eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code()) .eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
@@ -1200,7 +1198,13 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
//修改库存 恢复库存 手持进行减扣 //修改库存 恢复库存 手持进行减扣
List<JSONObject> updateIvtList = new ArrayList<>(); List<JSONObject> updateIvtList = new ArrayList<>();
JSONObject jsonIvt = new JSONObject(); JSONObject jsonIvt = new JSONObject();
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE); IOStorInv iosMst = this.getById(ioStorInvDis.getIostorinv_id());
if (iosMst.getBill_type().equals(IOSEnum.BILL_TYPE_OUT.code("手工出库"))) {
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN);
} else {
jsonIvt.put("type", IOSConstant.UPDATE_IVT_TYPE_SUB_FROZEN_ADD_CANUSE);
}
jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code()); jsonIvt.put("storagevehicle_code", ioStorInvDis.getStoragevehicle_code());
jsonIvt.put("material_id", ioStorInvDis.getMaterial_id()); jsonIvt.put("material_id", ioStorInvDis.getMaterial_id());
jsonIvt.put("pcsn", ioStorInvDis.getPcsn()); jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
@@ -1217,8 +1221,14 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
.eq(SchBasePoint::getPoint_code,ioStorInvDis.getPoint_code()) .eq(SchBasePoint::getPoint_code,ioStorInvDis.getPoint_code())
); );
// 判断是否是整出 if (iosMst.getBill_type().equals(IOSEnum.BILL_TYPE_OUT.code("手工出库"))) {
if (ioStorInvDis.getReal_qty().doubleValue() >= ioStorInvDis.getPlan_qty().doubleValue()) { groupPlateMapper.delete(
new QueryWrapper<GroupPlate>().lambda()
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
);
} else {
//更新组盘记录表 //更新组盘记录表
groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class) groupPlateMapper.update(new GroupPlate(),new LambdaUpdateWrapper<>(GroupPlate.class)
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库")) .set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
@@ -1261,6 +1271,18 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
.set(IOStorInv::getConfirm_time,now) .set(IOStorInv::getConfirm_time,now)
.eq(IOStorInv::getIostorinv_id,ioStorInvDtl.getIostorinv_id()) .eq(IOStorInv::getIostorinv_id,ioStorInvDtl.getIostorinv_id())
); );
// 如果是销售出库更新 状态
if (iosMst.getBill_type().equals(IOSEnum.BILL_TYPE_OUT.code("销售出库"))) {
iStIvtSalesorderService.update(
new UpdateWrapper<StIvtSalesorder>().lambda()
.set(StIvtSalesorder::getSale_status, IOSEnum.SALE_STATUS.code("完成"))
.set(StIvtSalesorder::getConfirm_id, currentUserId)
.set(StIvtSalesorder::getConfirm_name, nickName)
.set(StIvtSalesorder::getConfirm_time, now)
.eq(StIvtSalesorder::getSale_id, iosMst.getSource_id())
);
}
} }
} }
} }

View File

@@ -736,6 +736,8 @@ public class RawAssistIStorServiceImpl extends ServiceImpl<IOStorInvMapper, IOSt
List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class) List<Structattr> structattrList = iStructattrService.list(new LambdaQueryWrapper<>(Structattr.class)
.eq(Structattr::getSect_id,sect_id) .eq(Structattr::getSect_id,sect_id)
.eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定")) .eq(Structattr::getLock_type,IOSEnum.LOCK_TYPE.code("未锁定"))
.eq(Structattr::getIs_used,IOSConstant.IS_DELETE_YES)
.eq(Structattr::getIs_delete,IOSConstant.IS_DELETE_NO)
.and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code,"")) .and(wrapper -> wrapper.isNull(Structattr::getStoragevehicle_code).or().eq(Structattr::getStoragevehicle_code,""))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("金属托盘")), .eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.code("金属托盘")),
Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("金属托盘")) Structattr::getStoragevehicle_type, IOSEnum.VEHICLE_TYPE_PUT.code("金属托盘"))

View File

@@ -0,0 +1,174 @@
package org.nl.wms.warehouse_management.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.CodeUtil;
import org.nl.common.utils.IdUtil;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.basedata_manage.service.IMdCsSupplierbaseService;
import org.nl.wms.basedata_manage.service.IMdMeMaterialbaseService;
import org.nl.wms.basedata_manage.service.IMdPbMeasureunitService;
import org.nl.wms.basedata_manage.service.dao.MdCsSupplierbase;
import org.nl.wms.basedata_manage.service.dao.MdMeMaterialbase;
import org.nl.wms.basedata_manage.service.dao.MdPbMeasureunit;
import org.nl.wms.basedata_manage.service.dao.Sectattr;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.nl.wms.warehouse_management.enums.IOSEnum;
import org.nl.wms.warehouse_management.service.IOutBillService;
import org.nl.wms.warehouse_management.service.IStIvtSalesorderService;
import org.nl.wms.warehouse_management.service.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.StIvtSalesorder;
import org.nl.wms.warehouse_management.service.dao.mapper.StIvtSalesorderMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
/**
* <p>
* 销售单管理 服务实现类
* </p>
*
* @author Liuxy
* @since 2025-09-23
*/
@Service
public class StIvtSalesorderServiceImpl extends ServiceImpl<StIvtSalesorderMapper, StIvtSalesorder> implements IStIvtSalesorderService {
@Autowired
private IMdCsSupplierbaseService iMdCsSupplierbaseService;
@Autowired
private IMdPbMeasureunitService iMdPbMeasureunitService;
@Autowired
private IMdMeMaterialbaseService iMdMeMaterialbaseService;
@Autowired
private IOutBillService iOutBillService;
@Override
public IPage<StIvtSalesorder> queryAll(Map whereJson, PageQuery page) {
String sale_code = MapUtil.getStr(whereJson, "sale_code");
String material_code = MapUtil.getStr(whereJson, "material_code");
String supp_code = MapUtil.getStr(whereJson, "supp_code");
String sale_status = MapUtil.getStr(whereJson, "sale_status");
String begin_time = MapUtil.getStr(whereJson, "begin_time");
String end_time = MapUtil.getStr(whereJson, "end_time");
LambdaQueryWrapper<StIvtSalesorder> lambda = new QueryWrapper<StIvtSalesorder>().lambda();
lambda.eq(ObjectUtil.isNotEmpty(sale_status), StIvtSalesorder::getSale_status, sale_status);
lambda.like(ObjectUtil.isNotEmpty(sale_code), StIvtSalesorder::getSale_code, sale_code);
if (ObjectUtil.isNotEmpty(material_code)) {
lambda.like( StIvtSalesorder::getMaterial_code, material_code)
.or(qw -> qw.like(StIvtSalesorder::getMaterial_name, material_code));
}
if (ObjectUtil.isNotEmpty(supp_code)) {
lambda.like( StIvtSalesorder::getSupp_code, supp_code)
.or(qw -> qw.like(StIvtSalesorder::getSupp_name, supp_code));
}
lambda.ge(ObjectUtil.isNotEmpty(begin_time), StIvtSalesorder::getCreate_time, begin_time);
lambda.lt(ObjectUtil.isNotEmpty(end_time), StIvtSalesorder::getCreate_time, end_time);
return this.baseMapper.selectPage(new Page<>(page.getPage() + 1, page.getSize()),
lambda
);
}
@Override
@Transactional
public void create(StIvtSalesorder dao) {
dao.setSale_id(IdUtil.getStringId());
dao.setSale_code(CodeUtil.getNewCode("SALE_CODE"));
dao.setSale_status(IOSEnum.SALE_STATUS.code("生成"));
dao.setCreate_id(SecurityUtils.getCurrentUserId());
dao.setCreate_name(SecurityUtils.getCurrentNickName());
dao.setCreate_time(DateUtil.now());
// 查询供应商编码
MdCsSupplierbase suppDao = iMdCsSupplierbaseService.getOne(
new QueryWrapper<MdCsSupplierbase>().lambda()
.eq(MdCsSupplierbase::getSupp_code, dao.getSupp_code())
);
dao.setSupp_name(suppDao.getSupp_name());
// 默认数量个
MdPbMeasureunit unitDao = iMdPbMeasureunitService.getByCode("EA");
dao.setQty_unit_id(unitDao.getMeasure_unit_id());
dao.setQty_unit_name(unitDao.getUnit_name());
this.save(dao);
}
@Override
@Transactional
public void update(StIvtSalesorder dao) {
// 查询供应商编码
MdCsSupplierbase suppDao = iMdCsSupplierbaseService.getOne(
new QueryWrapper<MdCsSupplierbase>().lambda()
.eq(MdCsSupplierbase::getSupp_code, dao.getSupp_code())
);
dao.setSupp_name(suppDao.getSupp_name());
this.updateById(dao);
}
@Override
@Transactional
public void delete(Set<String> ids) {
this.removeByIds(ids);
}
@Override
@Transactional
public void checkIos(StIvtSalesorder dao) {
dao.setSale_status(IOSEnum.SALE_STATUS.code("审核"));
dao.setCheck_id(SecurityUtils.getCurrentUserId());
dao.setCheck_name(SecurityUtils.getCurrentNickName());
dao.setCheck_time(DateUtil.now());
this.updateById(dao);
}
@Override
@Transactional
public void createOutIos(StIvtSalesorder dao) {
// 组织主表数据
JSONObject jsonMst = new JSONObject();
jsonMst.put("stor_id", IOSConstant.STOR_ID);
jsonMst.put("bill_status", IOSEnum.BILL_STATUS.code("生成"));
jsonMst.put("total_qty", dao.getSale_qty());
jsonMst.put("detail_count", 1);
jsonMst.put("bill_type", IOSEnum.BILL_TYPE_OUT.code("销售出库"));
jsonMst.put("biz_date", DateUtil.now());
jsonMst.put("source_id", dao.getSale_id());
// 组织明细数据
ArrayList<JSONObject> tableData = new ArrayList<>();
JSONObject dtl = new JSONObject();
dtl.put("qty_unit_id", dao.getQty_unit_id());
dtl.put("qty_unit_name", dao.getQty_unit_name());
dtl.put("qty", dao.getSale_qty().toString());
MdMeMaterialbase materDao = iMdMeMaterialbaseService.getByCode(dao.getMaterial_code());
dtl.put("material_id", materDao.getMaterial_id());
dtl.put("material_code", dao.getMaterial_code());
dtl.put("material_name", dao.getMaterial_name());
dtl.put("plan_qty", dao.getSale_qty().toString());
// 调用新增
tableData.add(dtl);
jsonMst.put("tableData",tableData);
iOutBillService.insertDtl(jsonMst);
// 更新销售单状态
dao.setSale_status(IOSEnum.SALE_STATUS.code("下发"));
this.updateById(dao);
}
}

View File

@@ -55,4 +55,12 @@ export function materialSync(data) {
}) })
} }
export default { add, edit, del, getMaterOptType, isAlongMaterType, getProductSeries, materialSync } export function queryMater(data) {
return request({
url: 'api/Materia/queryMater',
method: 'post',
data
})
}
export default { add, edit, del, getMaterOptType, isAlongMaterType, getProductSeries, materialSync, queryMater }

View File

@@ -24,4 +24,12 @@ export function edit(data) {
}) })
} }
export default { add, edit, del } export function getSupp(data) {
return request({
url: 'api/supplierbase/getSupp',
method: 'post',
data
})
}
export default { add, edit, del, getSupp }

View File

@@ -0,0 +1,344 @@
<template>
<div class="app-container">
<!--工具栏-->
<div class="head-container">
<div v-if="crud.props.searchToggle">
<el-form
:inline="true"
class="demo-form-inline"
label-position="right"
label-width="90px"
label-suffix=":"
>
<el-form-item label="销售单编码">
<el-input
v-model="query.sale_code"
clearable
size="mini"
placeholder="单据编码"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="物料编码">
<el-input
v-model="query.material_code"
clearable
size="mini"
placeholder="物料编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="客户编码">
<el-input
v-model="query.supp_code"
clearable
size="mini"
placeholder="客户编码、名称"
@keyup.enter.native="crud.toQuery"
/>
</el-form-item>
<el-form-item label="销售单状态">
<el-select
v-model="query.sale_status"
clearable
size="mini"
placeholder="全部"
class="filter-item"
@change="crud.toQuery"
>
<el-option
v-for="item in dict.SALE_STATUS"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="query.createTime"
type="daterange"
value-format="yyyy-MM-dd HH:mm:ss"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="['00:00:00', '23:59:59']"
@change="crud.toQuery"
/>
</el-form-item>
</el-form>
</div>
<rrOperation />
<!--如果想在工具栏加入更多按钮可以使用插槽方式 slot = 'left' or 'right'-->
<crudOperation :permission="permission">
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="crud.selections.length !== 1"
@click="checkIos"
>
审核
</el-button>
<el-button
slot="right"
class="filter-item"
type="success"
icon="el-icon-position"
size="mini"
:disabled="crud.selections.length !== 1"
@click="createOutIos"
>
创建出库单
</el-button>
</crudOperation>
<el-dialog
:close-on-click-modal="false"
:before-close="crud.cancelCU"
:visible.sync="crud.status.cu > 0"
:title="crud.status.title"
width="500px"
>
<el-form ref="form" :model="form" :rules="rules" size="mini" label-width="150px">
<el-form-item label="物料编码" prop="material_code">
<el-input v-model="form.material_code" style="width: 200px;" :disabled="crud.status.edit > 0" @change="queryMater" />
</el-form-item>
<el-form-item label="物料名称" prop="material_name">
<el-input v-model="form.material_name" disabled style="width: 200px;" />
</el-form-item>
<el-form-item label="物料规格" prop="material_spec">
<el-input v-model="form.material_spec" disabled style="width: 200px;" />
</el-form-item>
<el-form-item label="客户编码" prop="supp_code">
<el-select
v-model="form.supp_code"
clearable
size="mini"
placeholder="全部"
style="width: 200px;"
class="filter-item"
>
<el-option
v-for="item in suppList"
:key="item.supp_code"
:label="item.supp_name"
:value="item.supp_code"
/>
</el-select>
</el-form-item>
<el-form-item label="销售重量" prop="sale_qty">
<el-input-number v-model="form.sale_qty" :precision="0" :controls="false" :min="1" style="width: 200px" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="text" @click="crud.cancelCU">取消</el-button>
<el-button :loading="crud.cu === 2" type="primary" @click="crud.submitCU">确认</el-button>
</div>
</el-dialog>
<!--表格渲染-->
<el-table
ref="table"
v-loading="crud.loading"
:data="crud.data"
size="mini"
style="width: 100%;"
@selection-change="crud.selectionChangeHandler"
>
<el-table-column type="selection" width="55" />
<el-table-column prop="sale_code" label="单据编码" :min-width="flexWidth('sale_code',crud.data,'单据编码')" />
<el-table-column prop="sale_status" label="单据状态" :formatter="formattStatus" :min-width="flexWidth('sale_status',crud.data,'单据状态')" />
<el-table-column prop="material_code" label="物料编码" :min-width="flexWidth('material_code',crud.data,'物料编码')" />
<el-table-column prop="material_name" label="物料名称" :min-width="flexWidth('material_name',crud.data,'物料名称')" />
<el-table-column prop="supp_code" label="客户编码" :min-width="flexWidth('supp_code',crud.data,'客户编码')" />
<el-table-column prop="supp_name" label="客户名称" :min-width="flexWidth('supp_name',crud.data,'客户名称')" />
<el-table-column prop="sale_qty" label="销售数量" :formatter="crud.formatNum3" :min-width="100" />
<el-table-column prop="qty_unit_name" label="单位" :min-width="flexWidth('qty_unit_name',crud.data,'单位')" />
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />
<el-table-column prop="check_name" label="审核人" :min-width="flexWidth('check_name',crud.data,'审核人')" />
<el-table-column prop="check_time" label="审核时间" :min-width="flexWidth('check_time',crud.data,'审核时间')" />
<el-table-column prop="confirm_name" label="完成人" :min-width="flexWidth('confirm_name',crud.data,'完成人')" />
<el-table-column prop="confirm_time" label="完成时间" :min-width="flexWidth('confirm_time',crud.data,'完成时间')" />
<el-table-column
v-permission="['admin','Supplierbase:edit','Supplierbase:del']"
label="操作"
width="150px"
lign="center"
fixed="right"
>
<template slot-scope="scope">
<udOperation
:data="scope.row"
:permission="permission"
/>
</template>
</el-table-column>
</el-table>
<!--分页组件-->
<pagination />
</div>
</div>
</template>
<script>
import crudSaleorder from '@/views/wms/st/saleorder/saleorder'
import crudSupplierbase from '@/views/wms/basedata/supp/supplierbase'
import CRUD, { crud, form, header, presenter } from '@crud/crud'
import crudOperation from '@crud/CRUD.operation'
import udOperation from '@crud/UD.operation'
import pagination from '@crud/Pagination'
import rrOperation from '@crud/RR.operation'
import crudGroup from '@/views/wms/basedata/material/material'
const defaultForm = {
sale_id: null,
sale_code: null,
material_code: null,
material_name: null,
supp_code: null,
supp_name: null,
sale_qty: null,
qty_unit_id: null,
qty_unit_name: null,
sale_status: null,
create_id: null,
create_name: null,
create_time: null,
check_id: null,
check_name: null,
check_time: null,
confirm_id: null,
confirm_name: null,
confirm_time: null
}
export default {
name: 'SalesOrder',
components: { pagination, crudOperation, rrOperation, udOperation },
mixins: [presenter(), header(), form(defaultForm), crud()],
// 数据字典
dicts: ['SALE_STATUS'],
cruds() {
return CRUD({
title: '销售单管理',
url: 'api/salesorder',
optShow: {
add: true,
edit: false,
del: false,
download: false,
reset: true
},
idField: 'sale_id',
sort: 'sale_id,desc',
crudMethod: { ...crudSaleorder }
})
},
data() {
return {
ViewDialog: false,
openParam: null,
permission: {},
suppList: [],
rules: {
material_code: [
{ required: true, message: '物料编码不能为空', trigger: 'blur' }
],
device_code: [
{ required: true, message: '设备编码不能为空', trigger: 'blur' }
],
bom_type: [
{ required: true, message: '工单类型不能为空', trigger: 'blur' }
],
call_qty: [
{ required: true, message: '叫料重量不能为空', trigger: 'blur' }
]
}
}
},
created() {
crudSupplierbase.getSupp({}).then(res => {
this.suppList = res
})
this.initQuery()
},
methods: {
// 钩子在获取表格数据之前执行false 则代表不获取数据
[CRUD.HOOK.beforeRefresh]() {
return true
},
/* 搜索框创建时间默认最近一周*/
initQuery() {
const end = new Date()
const start = new Date()
const endYear = end.getFullYear()
var endMonth = end.getMonth() + 1
if (end.getMonth() + 1 < 10) {
endMonth = '0' + endMonth.toString()
}
var endDay = end.getDate()
if (end.getDate() < 10) {
endDay = '0' + endDay.toString()
}
const endDate = endYear + '-' + endMonth + '-' + endDay + ' 23:59:59'
start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
const startYear = start.getFullYear()
var startMonth = start.getMonth() + 1
if (start.getMonth() + 1 < 10) {
startMonth = '0' + startMonth.toString()
}
var startDay = start.getDate()
if (start.getDate() < 10) {
startDay = '0' + startDay.toString()
}
const startDate = startYear + '-' + startMonth + '-' + startDay + ' 00:00:00'
this.$set(this.query, 'createTime', [startDate, endDate])
this.crud.toQuery()
},
queryMater(value) {
crudGroup.queryMater({ 'material_code': value }).then(row => {
this.form.material_spec = row.material_spec
this.form.material_name = row.material_name
this.form.material_code = row.material_code
}).catch(() => {
this.form.material_spec = ''
this.form.material_name = ''
this.form.material_code = ''
})
},
formattStatus(row) {
return this.dict.label.SALE_STATUS[row.sale_status]
},
checkIos() {
const data = this.$refs.table.selection[0]
if (data.sale_status !== '1') {
this.crud.notify('当前状态不为生成状态!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudSaleorder.checkIos(data).then(res => {
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
},
createOutIos() {
const data = this.$refs.table.selection[0]
if (data.sale_status !== '2') {
this.crud.notify('当前状态不为审核状态!', CRUD.NOTIFICATION_TYPE.INFO)
return
}
crudSaleorder.createOutIos(data).then(res => {
this.crud.notify('操作成功!', CRUD.NOTIFICATION_TYPE.SUCCESS)
this.crud.toQuery()
})
}
}
}
</script>
<style scoped>
</style>

View File

@@ -0,0 +1,43 @@
import request from '@/utils/request'
export function add(data) {
return request({
url: 'api/salesorder',
method: 'post',
data
})
}
export function del(ids) {
return request({
url: 'api/salesorder/',
method: 'delete',
data: ids
})
}
export function edit(data) {
return request({
url: 'api/salesorder',
method: 'put',
data
})
}
export function checkIos(data) {
return request({
url: 'api/salesorder/checkIos',
method: 'post',
data
})
}
export function createOutIos(data) {
return request({
url: 'api/salesorder/createOutIos',
method: 'post',
data
})
}
export default { add, edit, del, checkIos, createOutIos }