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);
}
@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);
}
@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.wms.basedata_manage.service.dao.MdCsSupplierbase;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -43,4 +44,11 @@ public interface IMdCsSupplierbaseService extends IService<MdCsSupplierbase> {
* @param 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.dao.MdCsSupplierbase;
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.transaction.annotation.Transactional;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -59,7 +61,7 @@ public class MdCsSupplierbaseServiceImpl extends ServiceImpl<MdCsSupplierbaseMap
.eq(MdCsSupplierbase::getSupp_code, dto.getSupp_code())
);
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) {
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.IOSEnum;
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.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.IOStorInvDtlMapper;
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.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
/**
@@ -88,6 +91,9 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
@Autowired
private IRawAssistIStorService iRawAssistIStorService;
@Resource
private GroupPlateMapper groupPlateMapper;
@Override
public PdaResponse getDtl(JSONObject whereJson) {
return PdaResponse.requestParamOk(mdPbStoragevehicleextMapper.getIosDtl(whereJson));
@@ -129,6 +135,14 @@ public class PdaIosOutServiceImpl implements PdaIosOutService {
// 更新分配明细实际出库数量
disDao.setReal_qty(jsonIvt.getBigDecimal("qty"));
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 {
// ------剩余回库------
// 更新库存 :变动数量 = 减可用(库存数量-(实际出库数量-计划数量))

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

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";
/**
* 仓库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_OUT(MapOf.of("销售出库","1001", "手工出库", "1009")),
//入库分配明细状态
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")),
// 销售单状态
SALE_STATUS(MapOf.of("生成", "1", "审核", "2", "下发", "3", "完成", "9")),
;
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.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
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.QueryWrapper;
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.extension.plugins.pagination.Page;
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.IStructattrService;
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.dto.MdPbStoragevehicleextDto;
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.SchBaseTask;
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.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.dao.GroupPlate;
import org.nl.wms.warehouse_management.service.dao.IOStorInv;
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.IStIvtSalesorderService;
import org.nl.wms.warehouse_management.service.dao.*;
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.IOStorInvDtlMapper;
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.IOStorInvDtlDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -100,6 +94,8 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
@Resource
private SchBasePointMapper schBasePointMapper;
@Resource
private IStIvtSalesorderService iStIvtSalesorderService;
@Override
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_optname", nickName);
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_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)
.set(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("出库"))
.eq(GroupPlate::getStatus,IOSEnum.GROUP_PLATE_STATUS.code("入库"))
.eq(GroupPlate::getPcsn,ioStorInvDis.getPcsn())
.eq(GroupPlate::getMaterial_id,ioStorInvDis.getMaterial_id())
.eq(GroupPlate::getStoragevehicle_code,ioStorInvDis.getStoragevehicle_code())
@@ -1200,7 +1198,13 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
//修改库存 恢复库存 手持进行减扣
List<JSONObject> updateIvtList = new ArrayList<>();
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("material_id", ioStorInvDis.getMaterial_id());
jsonIvt.put("pcsn", ioStorInvDis.getPcsn());
@@ -1217,8 +1221,14 @@ public class OutBillServiceImpl extends ServiceImpl<IOStorInvMapper,IOStorInv> i
.eq(SchBasePoint::getPoint_code,ioStorInvDis.getPoint_code())
);
// 判断是否是整出
if (ioStorInvDis.getReal_qty().doubleValue() >= ioStorInvDis.getPlan_qty().doubleValue()) {
if (iosMst.getBill_type().equals(IOSEnum.BILL_TYPE_OUT.code("手工出库"))) {
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)
.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)
.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)
.eq(Structattr::getSect_id,sect_id)
.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,""))
.eq(mdPbStoragevehicleinfo.getStoragevehicle_type().equals(IOSEnum.VEHICLE_TYPE.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);
}
}