Merge branch 'dev' into dev_jinji

This commit is contained in:
王奎兴
2026-07-17 18:06:41 +08:00
50 changed files with 1335 additions and 63 deletions
@@ -18,7 +18,7 @@ import java.util.Set;
/**
* bms财务结算系统feign调用接口
*/
@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.33.0.109:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "BmsService", value = ServiceNameConstants.BMS_SERVICE, url = "http://10.102.192.3:8019",fallbackFactory = RemoteBmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface BmsServiceFeign {
@@ -16,7 +16,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
import java.util.concurrent.CompletableFuture;
@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.33.0.99:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "OmsService", value = ServiceNameConstants.OMS_SERVICE,url = "http://10.102.192.4:8017", fallbackFactory = RemoteOmsFeignFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface OmsServiceFeign {
@@ -26,7 +26,7 @@ import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.33.0.129:8014",configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "commonWlhyServiceFeign",value = ServiceNameConstants.WLHY_SERVICE,url = "http://10.102.192.30:8014",configuration = FeignAutoConfiguration.class)
public interface WlhyServiceFeign {
/**
@@ -21,7 +21,7 @@ import java.util.Map;
* @description: TODO
* @date 2024/5/10 8:58
**/
@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.33.0.109:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "remoteWmsServiceFeign",value = ServiceNameConstants.WMS_SERVICE, url = "http://10.102.192.3:8016", fallbackFactory = RemoteWmsFallbackFactory.class, configuration = FeignAutoConfiguration.class)
public interface WmsServiceFeign {
/**
@@ -9,7 +9,7 @@ import com.mhd.system.api.feign.FeignAutoConfiguration;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;
@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.33.0.99:8018", configuration = FeignAutoConfiguration.class)
@FeignClient(contextId = "YmsService", value = ServiceNameConstants.YMS_SERVICE,fallbackFactory = RemoteBmsFeignFallbackFactory.class,url = "http://10.102.192.4:8018", configuration = FeignAutoConfiguration.class)
public interface YmsServiceFeign {
/**
@@ -116,6 +116,12 @@ public class WarehouseFeignPO extends BaseVOEntity{
@Excel(name = "是否作废: 1-否 2-是")
private Integer nullify;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
}
}
@@ -165,6 +165,8 @@ public class StorageLocation extends BaseVOEntity{
@ApiModelProperty("是否作废: 1-否 2-是")
@Excel(name = "是否作废: 1-否 2-是")
private Integer nullify;
@ApiModelProperty("库位条码")
@Excel(name = "库位条码")
private String locationBarCode;
}
}
@@ -165,6 +165,8 @@ public class StorageLocationPO extends BaseVOEntity{
@Excel(name = "是否作废: 1-否 2-是")
private Integer nullify;
@ApiModelProperty("库位条码")
@Excel(name = "库位条码")
private String locationBarCode;
}
}
@@ -204,4 +204,8 @@ public class StorageLocationDO extends BaseVOEntity{
@ApiModelProperty("坐标-层 终止")
@Excel(name = "坐标-层 终止")
private String coordinateLayerEnd;
}
@ApiModelProperty("库位条码")
@Excel(name = "库位条码")
private String locationBarCode;
}
@@ -122,5 +122,12 @@ public class Warehouse extends BaseVOEntity{
@Excel(name = "是否启用: 1-否 2-是")
private Integer isEnable;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
}
@@ -124,5 +124,11 @@ public class WarehousePO extends BaseVOEntity{
private Integer isEnable;
@ApiModelProperty("库区集合")
private List<StorageSectionPO> storageSectionList;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
}
@@ -131,4 +131,12 @@ public class WarehouseDO extends BaseVOEntity{
private String orgIds;
@ApiModelProperty("组织id 集合")
private List<Long> orgIdList;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
}
@@ -212,7 +212,11 @@ public class StorageLocationDTO extends BaseVOEntity{
@Excel(name = "坐标-层 终止")
private String coordinateLayerEnd;
@ApiModelProperty("库位条码")
@Excel(name = "库位条码")
private String locationBarCode;
public interface Edit {}
public interface BatchInsert {}
}
}
@@ -136,4 +136,12 @@ public class WarehouseDTO extends BaseVOEntity{
private String orgIds;
@ApiModelProperty("组织id 集合")
private List<Long> orgIdList;
@ApiModelProperty("任务模式")
@Excel(name = "任务模式")
private String taskMode;
@ApiModelProperty("作业模式")
@Excel(name = "作业模式")
private String workMode;
}
@@ -47,6 +47,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateBy" column="update_by" />
<result property="updateByName" column="update_by_name" />
<result property="delFlag" column="del_flag" />
<result property="locationBarCode" column="LOCATION_BAR_CODE" />
</resultMap>
@@ -58,7 +59,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.storage_location_classify, a.storage_location_classify_name, a.storage_location_type, a.storage_location_type_name,
a.mixing_strategy, a.mixing_strategy_name, a.storage_location_group_id, a.storage_location_group_code, a.storage_location_group_name,
a.weight_limit, a.volume_limit, a.location_size, a.location_length, a.location_width, a.location_height,
a.coordinate, a.coordinate_area, a.coordinate_column, a.coordinate_row, a.coordinate_layer, a.remark,
a.coordinate, a.coordinate_area, a.coordinate_column, a.coordinate_row, a.coordinate_layer, a.remark, a.LOCATION_BAR_CODE,
a.opening_up, a.nullify, a.status, a.create_time, a.create_by, a.create_by_name, a.update_time, a.update_by, a.update_by_name, a.del_flag
from storage_location a
LEFT JOIN warehouse w ON a.warehouse_id = w.warehouse_id AND w.del_flag = 1
@@ -37,11 +37,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="updateByName" column="update_by_name" />
<result property="delFlag" column="del_flag" />
<result property="isEnable" column="IS_ENABLE" />
<result property="workMode" column="WORK_MODE" />
<result property="taskMode" column="TASK_MODE" />
</resultMap>
<sql id="selectWarehousePo">
select warehouse_id, organization_id, organization_name, top_organization_id, warehouse_code, warehouse_name, warehouse_type, warehouse_type_name, warehouse_structure, warehouse_nature, warm_layer_code, warm_layer_name, director_name, director_phone, region_code, region_name, detail_address, longitude, latitude, building_region, usage_region, remark, opening_up, nullify, create_time, create_by, create_by_name, update_time, update_by, update_by_name, del_flag, IS_ENABLE from warehouse
select warehouse_id, organization_id, organization_name, top_organization_id, warehouse_code, warehouse_name,
warehouse_type, warehouse_type_name, warehouse_structure, warehouse_nature, warm_layer_code, warm_layer_name,
director_name, director_phone, region_code, region_name, detail_address, longitude, latitude, building_region,
usage_region, remark, opening_up, nullify, create_time, create_by, create_by_name, update_time, update_by,
update_by_name, del_flag, IS_ENABLE ,WORK_MODE,TASK_MODE
from warehouse
</sql>
<sql id="selectWarehousePo1">
@@ -29,6 +29,7 @@ import com.mhd.oms.domain.executionStockInOrder.repository.po.ExecutionStockInOr
import com.mhd.oms.domain.executionStockInOrder.repository.todo.ExecutionStockInOrderDO;
import com.mhd.oms.domain.executionStockOutOrder.entity.ExecutionStockOutOrder;
import com.mhd.oms.domain.executionStockOutOrder.repository.facade.IExecutionStockOutOrderService;
import com.mhd.oms.domain.reservationStockInOrder.repository.mapper.ReservationStockInOrderMapper;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.*;
@@ -39,6 +40,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.util.ArrayList;
@@ -85,7 +87,8 @@ public class ExecutionStockInOrderDomainService {
// private IReceiptMaterialDetailService receiptMaterialDetailService;
// @Autowired
// private IShelfMaterialDetailService shelfMaterialDetailService;
@Resource
private ReservationStockInOrderMapper stockInOrderMapper;
/**
* 分页查询入库单列表
*/
@@ -497,6 +500,13 @@ public class ExecutionStockInOrderDomainService {
StockInOrder stockInOrder = new StockInOrder();
BeanUtils.copyProperties(byId, stockInOrder,"inOrderId");
stockInOrder.setOmsStockInOrderId(String.valueOf(byId.getInOrderId()));
Long warehouseId = stockInOrder.getWarehouseId();
Long topOrgId = stockInOrderMapper.getTopOrgId(warehouseId);
Long orgId = stockInOrderMapper.getOrgId(warehouseId);
String orgName = stockInOrderMapper.getOrgName(warehouseId);
stockInOrder.setOrganizationId(orgId);
stockInOrder.setOrganizationName(orgName);
stockInOrder.setTopOrganizationId(topOrgId);
wmsServiceFeign.omsInOrderAdd(stockInOrder);
String inOrderNumber = stockInOrder.getInOrderNumber();
List<ExecutionInMaterialDetail> materialDetailList = materialDetailService.list(new QueryWrapper<ExecutionInMaterialDetail>().lambda().eq(ExecutionInMaterialDetail::getInOrderNumber, inOrderNumber));
@@ -505,6 +515,9 @@ public class ExecutionStockInOrderDomainService {
InMaterialDetail inMaterialDetail = new InMaterialDetail();
BeanUtils.copyProperties(reservationInMaterialDetail, inMaterialDetail,"materialDetailId");
inMaterialDetail.setOmsInMaterialDetail(String.valueOf(reservationInMaterialDetail.getMaterialDetailId()));
inMaterialDetail.setOrganizationId(orgId);
inMaterialDetail.setOrganizationName(orgName);
inMaterialDetail.setTopOrganizationId(topOrgId);
inMaterialDetailList.add(inMaterialDetail);
}
wmsServiceFeign.omsInOrderAddDetail(inMaterialDetailList);
@@ -37,6 +37,7 @@ import com.mhd.oms.domain.reservationInventoryAdjustmentRecord.entity.Reservatio
import com.mhd.oms.domain.reservationInventoryAdjustmentRecord.repository.mapper.ReservationInventoryAdjustmentRecordMapper;
import com.mhd.oms.domain.reservationMaterialInventory.entity.ReservationMaterialInventory;
import com.mhd.oms.domain.reservationMaterialInventory.repository.mapper.ReservationMaterialInventoryMapper;
import com.mhd.oms.domain.reservationStockInOrder.repository.mapper.ReservationStockInOrderMapper;
import com.mhd.system.api.SystemServiceFeign;
import com.mhd.system.api.WmsServiceFeign;
import com.mhd.system.api.domain.*;
@@ -93,7 +94,8 @@ public class ExecutionStockOutOrderDomainService {
private ReservationInventoryAdjustmentRecordMapper inventoryAdjustmentRecordMapper;
@Autowired
private ReservationMaterialInventoryMapper reservationMaterialInventoryMapper;
@Autowired
private ReservationStockInOrderMapper stockInOrderMapper;
/**
* 分页查询出库单列表
*/
@@ -396,6 +398,13 @@ public class ExecutionStockOutOrderDomainService {
ExecutionStockOutOrder byId = stockOutOrderService.getById(inOrderId);
StockOutOrder stockOutOrder = new StockOutOrder();
BeanUtils.copyProperties(byId, stockOutOrder,"outOrderId");
Long warehouseId = stockOutOrder.getWarehouseId();
Long topOrgId = stockInOrderMapper.getTopOrgId(warehouseId);
Long orgId = stockInOrderMapper.getOrgId(warehouseId);
String orgName = stockInOrderMapper.getOrgName(warehouseId);
stockOutOrder.setOrganizationId(orgId);
stockOutOrder.setOrganizationName(orgName);
stockOutOrder.setTopOrganizationId(topOrgId);
wmsServiceFeign.omsOutOrderAdd(stockOutOrder);
List<ReservationDeliveryDetailsLink> list = deliveryDetailsLinkService.list(new QueryWrapper<ReservationDeliveryDetailsLink>().lambda().eq(ReservationDeliveryDetailsLink::getOrderNumber, byId.getOutOrderNumber()));
@@ -415,6 +424,9 @@ public class ExecutionStockOutOrderDomainService {
for (ExecutionOutMaterialDetail reservationOutMaterialDetail : materialDetailList) {
OutMaterialDetail outMaterialDetail = new OutMaterialDetail();
BeanUtils.copyProperties(reservationOutMaterialDetail, outMaterialDetail,"materialDetailId");
outMaterialDetail.setOrganizationId(orgId);
outMaterialDetail.setOrganizationName(orgName);
outMaterialDetail.setTopOrganizationId(topOrgId);
outMaterialDetailList.add(outMaterialDetail);
}
wmsServiceFeign.omsOutOrderAddDetail(outMaterialDetailList);
@@ -685,9 +685,9 @@ public class ReservationStockInOrderDomainService {
reservationStockInOrder.setBusinessType("pu_tong_ru_ku");
reservationStockInOrder.setReservationOrderSource("客户预约");
reservationStockInOrder.setWarehouseId(warehouseId);
reservationStockInOrder.setOrganizationId(orgId);
reservationStockInOrder.setOrganizationName(orgName);
reservationStockInOrder.setTopOrganizationId(topOrgId);
// reservationStockInOrder.setOrganizationId(orgId);
// reservationStockInOrder.setOrganizationName(orgName);
// reservationStockInOrder.setTopOrganizationId(topOrgId);
reservationStockInOrder.setWarehouseCode(warehouseCode);
reservationStockInOrder.setWarehouseName(warehouseName);
reservationStockInOrder.setBusinessInOrderNumber(inOrderNumber);
@@ -703,9 +703,9 @@ public class ReservationStockInOrderDomainService {
ExecutionInMaterialDetail reservationInMaterialDetail = new ExecutionInMaterialDetail();
BeanUtils.copyProperties(reserveInMaterialDetail, reservationInMaterialDetail,"materialDetailId");
reservationInMaterialDetail.setQuantity(reserveInMaterialDetail.getQuantity());
reservationInMaterialDetail.setOrganizationId(orgId);
reservationInMaterialDetail.setOrganizationName(orgName);
reservationInMaterialDetail.setTopOrganizationId(topOrgId);
// reservationInMaterialDetail.setOrganizationId(orgId);
// reservationInMaterialDetail.setOrganizationName(orgName);
// reservationInMaterialDetail.setTopOrganizationId(topOrgId);
reservationInMaterialDetail.setWarehouseCode(warehouseCode);
reservationInMaterialDetail.setWarehouseName(warehouseName);
reservationInMaterialDetail.setInOrderNumber(reservationStockInOrder.getInOrderNumber());
@@ -718,13 +718,13 @@ public class ReservationStockInOrderDomainService {
BigDecimal quantity = details.stream().map(ReservationInMaterialDetail::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
reservationStockInOrder.setQuantity(quantity);
executionStockInOrderService.save(reservationStockInOrder);
executionInMaterialDetailService.saveBatch(inMaterialDetailList);
ExecutionStockInOrderDO param = new ExecutionStockInOrderDO();
Long inOrderId1 = reservationStockInOrder.getInOrderId();
List<Long> inOrderIdList1 = new ArrayList<>();
inOrderIdList1.add(inOrderId1);
param.setInOrderIds(inOrderIdList1);
stockInOrderApplicationService.issueOrder(param);
executionInMaterialDetailService.saveBatch(inMaterialDetailList);
});
}
+4 -4
View File
@@ -18,15 +18,15 @@ spring:
discovery:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.30:6848
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
config:
# server-addr: 127.0.0.1:8848
# 线上测试环境配置 容器名+端口号
server-addr: 10.33.0.129:6010
# server-addr: 10.102.192.30:6848
# server-addr: 10.33.0.129:6010
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
#线上正式环境
@@ -27,6 +27,10 @@ import com.mhd.system.api.domain.WarehouseFeignPO;
import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.stockReceiptOrder.StockReceiptOrderApplicationService;
import com.mhd.wms.application.service.stockShelfOrder.StockShelfOrderApplicationService;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
@@ -45,12 +49,18 @@ import com.mhd.wms.domain.receiptOrderAccount.repository.facade.IReceiptOrderAcc
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockInOrder.repository.vo.GwInDetail;
import com.mhd.wms.domain.stockInOrder.repository.vo.GwStockInOrder;
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService;
import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService;
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
@@ -70,6 +80,7 @@ import org.apache.poi.ss.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
@@ -92,6 +103,10 @@ import java.util.stream.Collectors;
public class StockInOrderApplicationService {
@Autowired
private StockInOrderDomainService stockInOrderDomainService;
@Autowired
private StockReceiptOrderDomainService stockReceiptOrderDomainService;
@Autowired
private StockShelfOrderDomainService stockShelfOrderDomainService;
@Resource
private UserServiceFeign userServiceFeign;
@Resource
@@ -109,6 +124,8 @@ public class StockInOrderApplicationService {
@Autowired
private IStockReceiptOrderService stockReceiptOrderService;
@Autowired
private IStockShelfOrderService stockShelfOrderService;
@Autowired
private IReceiptMaterialDetailService receiptMaterialDetailService;
@Autowired
private IStockOutOrderService stockOutOrderService;
@@ -119,7 +136,15 @@ public class StockInOrderApplicationService {
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingMaterialDetailMapper pickingMaterialDetailMapper;
@Autowired
private StockReceiptOrderApplicationService stockReceiptOrderApplicationService;
@Autowired
private IDeliveTaskService deliveTaskService;
@Autowired
private StockShelfOrderApplicationService stockShelfOrderApplicationService;
private static final String PUSH_API_URL = "http://10.102.192.15/nagu-erp-api/transfer/pushData";
private static final String API_NAME = "save_order_i";
private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
@@ -541,31 +566,171 @@ public class StockInOrderApplicationService {
*/
public Boolean auditState(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.auditState(stockInOrderDO);
// List<Long> inOrderIds = stockInOrderDO.getInOrderIds();
// if (inOrderIds != null && !inOrderIds.isEmpty()) {
// StockInOrder stockInOrder = stockInOrderService.getById(inOrderIds.get(0));
// Integer needCustomsDeclaration = stockInOrder.getNeedCustomsDeclaration();
// Integer auditStatus = stockInOrder.getAuditStatus();
// try {
// if (needCustomsDeclaration != null && needCustomsDeclaration == 1 && auditStatus != null && auditStatus == 3) {
// Long inOrderId = stockInOrder.getInOrderId();
// List<Long> idList = new ArrayList<>();
// idList.add(inOrderId);
// //batchPush(idList);
// }
// } catch (Exception e) {
// throw new ServiceException("推送关务系统失败!");
// }
// }
return b;
}
public Boolean receiptEasyMode(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.receiptEasyMode(stockInOrderDO);
return b;
}
public Boolean updateQuantity( BigDecimal quantity, Long materialDetailId,BigDecimal area,
BigDecimal volume,BigDecimal weight){
Boolean result = false;
InMaterialDetail inMaterialDetail = inMaterialDetailService.getById(materialDetailId);
if (inMaterialDetail != null) {
inMaterialDetail.setQuantity(quantity);
inMaterialDetail.setTotalArea(area);
inMaterialDetail.setTotalVolume(volume);
inMaterialDetail.setTotalNetWeight(weight);
inMaterialDetail.setTotalGrossWeight(weight);
boolean b = inMaterialDetailService.updateById(inMaterialDetail);
Long uniqueId = inMaterialDetail.getUniqueId();
ReceiptMaterialDetail one = receiptMaterialDetailService.getOne(new LambdaQueryWrapper<ReceiptMaterialDetail>()
.eq(ReceiptMaterialDetail::getInUniqueId, uniqueId)
.eq(ReceiptMaterialDetail::getDelFlag, 1));
one.setQuantity(quantity);
one.setTotalArea(area);
one.setTotalVolume(volume);
one.setTotalNetWeight(weight);
one.setTotalGrossWeight(weight);
boolean b1 = receiptMaterialDetailService.updateById(one);
result = b && b1;
}
return result;
}
public Boolean shelfEasyMode(StockInOrderDO stockInOrderDO){
Boolean b = stockInOrderDomainService.shelfEasyMode(stockInOrderDO);
return b;
}
public Boolean checkUploadEasyMode(StockInOrderDO stockInOrderDO){
String inOrderNumber = stockInOrderDO.getInOrderNumber();
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaQueryWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
stockReceiptOrder.setStatus(3);
boolean b = stockReceiptOrderService.updateById(stockReceiptOrder);
StockShelfOrder stockShelfOrder = stockShelfOrderService.getOne(new LambdaQueryWrapper<StockShelfOrder>()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1), false);
//上架任务下发
StockShelfOrderDO stockShelfOrderDO = new StockShelfOrderDO();
//完成上架
Boolean b1 = stockShelfOrderDomainService.completeUpShelf(stockShelfOrder.getShelfOrderId());
String inOrderId = stockInOrderDO.getInOrderNumber();
StockInOrder stockInOrder = stockInOrderService.getOne(new LambdaQueryWrapper<StockInOrder>()
.eq(StockInOrder::getInOrderNumber, inOrderId)
.eq(StockInOrder::getDelFlag,1) ,false);
if (stockInOrder != null) {
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, stockShelfOrder.getShelfOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(stockInOrder.getWorkUserId());
deliveTask.setOperatorsName(stockInOrder.getWorkUserName());
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
}
return b && b1;
}
public void omsOrderAdd(StockInOrder stockInOrder){
// 设置任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockInOrder.getOrganizationId(), stockInOrder.getWarehouseId(), stockInOrder.getTopOrganizationId());
stockInOrder.setTaskIssueUserId(userId);
stockInOrderDomainService.omsOrderAdd(stockInOrder);
}
public void acceptTask(StockInOrder stockInOrder){
Long workUserId = stockInOrder.getWorkUserId();
String workUserName = stockInOrder.getWorkUserName();
if (workUserId == null || workUserName == null) {
throw new ServiceException("作业人员id或名称为空!");
}
//pda任务中心下发
StockReceiptOrderDO stockReceiptOrderDO = new StockReceiptOrderDO();
stockReceiptOrderDO.setOperatorsBy(workUserId);
stockReceiptOrderDO.setOperatorsName(workUserName);
Long inOrderId = stockInOrder.getInOrderId();
StockInOrder stock = stockInOrderService.getById(inOrderId);
String inOrderNumber = stock.getInOrderNumber();
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaQueryWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
if (stockReceiptOrder == null) {
throw new ServiceException("收货单不存在!");
}
List<Long> ids = new ArrayList<>();
ids.add(stockReceiptOrder.getReceiptOrderId());
stockReceiptOrderDO.setReceiptOrderIds(ids);
// stockReceiptOrderApplicationService.taskDistribution(stockReceiptOrderDO);
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, stockReceiptOrder.getReceiptOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(workUserId);
deliveTask.setOperatorsName(workUserName);
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
stockInOrderService.update(null, new LambdaUpdateWrapper<StockInOrder>()
.set(StockInOrder::getWorkUserId, workUserId)
.set(StockInOrder::getWorkUserName, workUserName)
.set(StockInOrder::getWorkTaskReceiveStatus, "1")
.eq(StockInOrder::getInOrderId, stockInOrder.getInOrderId()));
}
public void removeTask(StockInOrderDO stockInOrder){
Long inOrderId = stockInOrder.getInOrderId();
String removeUserId = stockInOrder.getRemoveUserId();
if (removeUserId == null) {
throw new ServiceException("移除任务用户ID为空!");
}
if (inOrderId == null) {
throw new ServiceException("入库单不存在!");
}
StockInOrder stock = stockInOrderService.getById(inOrderId);
if (stock == null) {
throw new ServiceException("入库单不存在!");
}
String taskIssueUserId = stock.getTaskIssueUserId();
if (taskIssueUserId == null) {
return;
}
String[] split = taskIssueUserId.split(",");
List<String> taskIds = Arrays.asList(split);
if (taskIds != null && taskIds.size() > 0) {
// 删除匹配元素
//taskIds.removeIf(str -> removeUserId.equals(str));
taskIds = taskIds.stream()
.filter(str -> !Objects.equals(removeUserId, str))
.collect(Collectors.toList());
if (taskIds != null && taskIds.size() > 0) {
String newTaskIssueUserId = String.join(",", taskIds);
stock.setTaskIssueUserId(newTaskIssueUserId);
stockInOrderService.updateById(stock);
} else {
stockInOrderService.update(null ,new LambdaUpdateWrapper<StockInOrder>()
.set(StockInOrder::getTaskIssueUserId, null)
.eq(StockInOrder::getInOrderId, stockInOrder.getInOrderId()));
}
} else {
throw new ServiceException("当前订单没有任务人员!");
}
}
public void omsOrderAddDetail(List<InMaterialDetail> inMaterialDetails){
stockInOrderDomainService.omsOrderAddDetail(inMaterialDetails);
}
@@ -1795,7 +1960,10 @@ public class StockInOrderApplicationService {
supplierParam(order);
// 设置数据字典键值
setDataDict(order);
// 设置任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(order.getOrganizationId(), order.getWarehouseId(), order.getTopOrganizationId());
order.setTaskIssueUserId(userId);
orderList.add(order);
}
@@ -1915,6 +2083,10 @@ public class StockInOrderApplicationService {
if (stockInOrderDO.getWarehouseId() == null) {
throw new ServiceException("仓库ID不能为空");
}
//任务下发用户ID
String userIds = stockInOrderMapper.queryWarehouseUserId(stockInOrderDO.getOrganizationId(), stockInOrderDO.getWarehouseId(), stockInOrderDO.getTopOrganizationId());
stockInOrderDO.setTaskIssueUserId(userIds);
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockInOrderDO.getWarehouseId());
if (ajaxResult == null) {
throw new ServiceException("获取仓库信息失败:返回结果为空,仓库ID:" + stockInOrderDO.getWarehouseId());
@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.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.mhd.common.core.constant.SecurityConstants;
import com.mhd.common.core.constant.SnowFlakeConstants;
import com.mhd.common.core.domain.entity.R;
@@ -26,6 +27,8 @@ import com.mhd.system.api.domain.cache.AssociationWarehouseCacheDO;
import com.mhd.system.api.domain.cache.SystemServiceCacheUtil;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.domain.copyCodeReference.repository.po.CopyCodeReferencePO;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.deliveryDetailsLink.entity.DeliveryDetailsLink;
import com.mhd.wms.domain.deliveryDetailsLink.repository.facade.IDeliveryDetailsLinkService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
@@ -47,9 +50,13 @@ import com.mhd.wms.domain.pickingMaterialDetail.repository.facade.IPickingMateri
import com.mhd.wms.domain.pickingMaterialDetail.repository.mapper.PickingMaterialDetailMapper;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingAggByOutOrderRow;
import com.mhd.wms.domain.pickingMaterialDetail.repository.po.PickingMaterialDetailPO;
import com.mhd.wms.domain.pickingOrder.entity.PickingOrder;
import com.mhd.wms.domain.pickingOrder.repository.facade.IPickingOrderService;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.receiptOrderAccount.entity.ReceiptOrderAccount;
import com.mhd.wms.domain.receiptOrderAccount.repository.facade.IReceiptOrderAccountService;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
@@ -109,6 +116,8 @@ public class StockOutOrderApplicationService {
@Autowired
private IPickingMaterialDetailService pickingMaterialDetailService;
@Autowired
private IPickingOrderService pickingOrderService;
@Autowired
private IReceiptOrderAccountService receiptOrderAccountService;
@Autowired
private IDeliveryDetailsLinkService deliveryDetailsLinkService;
@@ -117,7 +126,11 @@ public class StockOutOrderApplicationService {
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingMaterialDetailMapper pickingMaterialDetailMapper;
@Autowired
private IDeliveTaskService deliveTaskService;
private static final String PUSH_API_URL = "http://10.102.192.15/nagu-erp-api/transfer/pushData";
private static final String API_NAME = "save_order_e";
private static final String VERIFY = "ESLuxAmB6VXCgbqP1eFzxTPVRagkQ62BUkfhElrgQ6XmE/g2reHVflY/SiCSU7JD";
@@ -294,14 +307,20 @@ public class StockOutOrderApplicationService {
*/
public Boolean insert(StockOutOrderDO stockOutOrderDO) {
//设置仓库
//setWarehouseInfo(stockOutOrderDO);
setWarehouseInfo(stockOutOrderDO);
//设置货主信息
shipperParam(stockOutOrderDO);
//设置客户信息
customerParam(stockOutOrderDO);
stockOutOrderDO.setOrderTypeCode("pu_tong_chu_ku");
stockOutOrderDO.setBusinessType("pu_tong_chu_ku");
stockOutOrderDO.setOrderTypeName("普通出库");
if (stockOutOrderDO.getOrderTypeCode() == null) {
stockOutOrderDO.setOrderTypeCode("pu_tong_chu_ku");
}
if (stockOutOrderDO.getBusinessType() == null) {
stockOutOrderDO.setBusinessType("pu_tong_chu_ku");
}
if (stockOutOrderDO.getOrderTypeName() == null) {
stockOutOrderDO.setOrderTypeName("普通出库");
}
//设置数据字典键值
//setDataDict(stockOutOrderDO);
return stockOutOrderDomainService.insert(stockOutOrderDO);
@@ -311,6 +330,8 @@ public class StockOutOrderApplicationService {
* 修改出库单
*/
public Boolean update(StockOutOrderDO stockOutOrderDO) {
//设置仓库
setWarehouseInfo(stockOutOrderDO);
return stockOutOrderDomainService.update(stockOutOrderDO);
}
@@ -1128,6 +1149,28 @@ public class StockOutOrderApplicationService {
return b;
}
public Boolean adjustPicking(StockOutOrderDO stockOutOrderDO){
Boolean b = stockOutOrderDomainService.adjustPicking(stockOutOrderDO);
return b;
}
public Boolean checkUpload(StockOutOrderDO stockOutOrderDO){
//pda复核下发
// String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
// StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper<StockOutOrder>().lambda()
// .eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
// .eq(StockOutOrder::getDelFlag, 1), false);
// stockOutOrderDO.setCheckOperatorsBy(stockOutOrder.getWorkUserId());
// List<Long> outOrderIds = new ArrayList<>();
// outOrderIds.add(stockOutOrder.getOutOrderId());
// stockOutOrderDO.setOutOrderIds(outOrderIds);
// checkTaskDistribution(stockOutOrderDO);
Boolean b = stockOutOrderDomainService.checkUpload(stockOutOrderDO);
return b;
}
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
Boolean b = stockOutOrderDomainService.genPickingOrderByOms(stockOutOrderDO);
// List<Long> outOrderIds = stockOutOrderDO.getOutOrderIds();
@@ -1354,6 +1397,9 @@ public class StockOutOrderApplicationService {
if (stockOutOrderDO.getWarehouseId() == null) {
throw new ServiceException("仓库ID不能为空");
}
// 获取任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrderDO.getOrganizationId(), stockOutOrderDO.getWarehouseId(), stockOutOrderDO.getTopOrganizationId());
stockOutOrderDO.setTaskIssueUserId(userId);
AjaxResult ajaxResult = systemServiceFeign.getWarehouseInfoByWarehouseId(stockOutOrderDO.getWarehouseId());
if(!"200".equals(String.valueOf(ajaxResult.get("code")))){
throw new ServiceException("获取仓库信息失败");
@@ -1603,6 +1649,76 @@ public class StockOutOrderApplicationService {
public void acceptTask(StockOutOrder stockOutOrder){
Long workUserId = stockOutOrder.getWorkUserId();
String workUserName = stockOutOrder.getWorkUserName();
if (workUserId == null || workUserName == null) {
throw new ServiceException("作业人员id或名称为空!");
}
PickingOrder pickingOrder = pickingOrderService.getOne(new LambdaQueryWrapper<PickingOrder>()
.eq(PickingOrder::getOrderNumber, stockOutOrder.getOutOrderNumber())
.eq(PickingOrder::getDelFlag, 1),false);
if (pickingOrder != null) {
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, pickingOrder.getPickingOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(workUserId);
deliveTask.setOperatorsName(workUserName);
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
}
stockOutOrderService.update(null, new LambdaUpdateWrapper<StockOutOrder>()
.set(StockOutOrder::getWorkUserId, workUserId)
.set(StockOutOrder::getWorkUserName, workUserName)
.set(StockOutOrder::getWorkTaskReceiveStatus, "1")
.eq(StockOutOrder::getOutOrderId, stockOutOrder.getOutOrderId()));
}
public void removeTask(StockOutOrderDO stockOutOrder){
Long outOrderId = stockOutOrder.getOutOrderId();
String removeUserId = stockOutOrder.getRemoveUserId();
if (removeUserId == null) {
throw new ServiceException("移除任务用户ID为空!");
}
if (outOrderId == null) {
throw new ServiceException("出库单不存在!");
}
StockOutOrder stock = stockOutOrderService.getById(outOrderId);
if (stock == null) {
throw new ServiceException("入库单不存在!");
}
String taskIssueUserId = stock.getTaskIssueUserId();
if (taskIssueUserId == null) {
return;
}
String[] split = taskIssueUserId.split(",");
List<String> taskIds = Arrays.asList(split);
if (taskIds != null && taskIds.size() > 0) {
// 删除匹配元素
//taskIds.removeIf(str -> removeUserId.equals(str));
taskIds = taskIds.stream()
.filter(str -> !Objects.equals(removeUserId, str))
.collect(Collectors.toList());
if (taskIds != null && taskIds.size() > 0) {
String newTaskIssueUserId = String.join(",", taskIds);
stock.setTaskIssueUserId(newTaskIssueUserId);
stockOutOrderService.updateById(stock);
} else {
stockOutOrderService.update(null ,new LambdaUpdateWrapper<StockOutOrder>()
.set(StockOutOrder::getTaskIssueUserId, null)
.eq(StockOutOrder::getOutOrderId, stockOutOrder.getOutOrderId()));
}
} else {
throw new ServiceException("当前订单不存在任务人员!");
}
}
public void omsOrderAdd(StockOutOrder stockOutOrder){
stockOutOrderDomainService.omsOrderAdd(stockOutOrder);
}
@@ -414,4 +414,8 @@ public class InMaterialDetail extends BaseVOEntity {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -439,4 +439,8 @@ public class InMaterialDetailPO extends StockInOrderBasePO {
//申报总价
private BigDecimal amountGw;
private String khdm;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -404,4 +404,8 @@ public class InMaterialDetailDO extends StockInOrderBaseDO {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -528,4 +528,17 @@ public class OutMaterialDetail extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -568,4 +568,16 @@ public class OutMaterialDetailPO extends StockOutOrderBaseDO {
private String whNoGw;
private String seatNoGw;
private String khdm;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -520,4 +520,16 @@ public class OutMaterialDetailDO extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -382,4 +382,14 @@ public class StockInOrder extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -30,4 +30,6 @@ public interface StockInOrderMapper extends BaseMapper<StockInOrder>
List<InMaterialDetailPO> queryNoticePrintDetail(StockInOrderDO stockInOrderDO);
StockInOrderPO selectByInOrderNumber(@Param("inOrderNumber") String inOrderNumber);
}
String queryWarehouseUserId(@Param("organizationId") Long organizationId, @Param("warehouseId") Long warehouseId, @Param("topOrganizationId") Long topOrganizationId);
}
@@ -444,4 +444,13 @@ public class StockInOrderPO extends BaseVOEntity {
private String pushByName;
private String khdm;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -428,4 +428,24 @@ public class StockInOrderDO extends BaseVOEntity {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -1,14 +1,19 @@
package com.mhd.wms.domain.stockInOrder.service;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson2.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.mhd.common.core.constant.SnowFlakeConstants;
import com.mhd.common.core.exception.ServiceException;
import com.mhd.common.core.utils.IgnoreNullUtil;
import com.mhd.common.core.utils.OrderSequence;
import com.mhd.common.core.utils.StringUtils;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.core.utils.uuid.IdGenerator;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.security.utils.SecurityUtils;
import com.mhd.system.api.SystemServiceFeign;
@@ -27,9 +32,11 @@ import com.mhd.wms.domain.materialWarehouseControl.repository.facade.IMaterialWa
import com.mhd.wms.domain.materialWarehouseControl.repository.po.MaterialWarehouseControlPO;
import com.mhd.wms.domain.qualityInspection.repository.facade.IQualityInspectionService;
import com.mhd.wms.domain.qualityInspection.repository.todo.QualityInspectionDO;
import com.mhd.wms.domain.receiptMaterialDetail.entity.ReceiptMaterialDetail;
import com.mhd.wms.domain.receiptMaterialDetail.repository.facade.IReceiptMaterialDetailService;
import com.mhd.wms.domain.receiptMaterialDetail.repository.po.ReceiptMaterialDetailPO;
import com.mhd.wms.domain.receiptMaterialDetail.repository.todo.ReceiptMaterialDetailDO;
import com.mhd.wms.domain.shelfMaterialDetail.entity.ShelfMaterialDetail;
import com.mhd.wms.domain.shelfMaterialDetail.repository.facade.IShelfMaterialDetailService;
import com.mhd.wms.domain.shelfMaterialDetail.repository.po.ShelfMaterialDetailPO;
import com.mhd.wms.domain.shelfMaterialDetail.repository.todo.ShelfMaterialDetailDO;
@@ -37,9 +44,13 @@ import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.facade.IStockInOrderService;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockReceiptOrder.entity.StockReceiptOrder;
import com.mhd.wms.domain.stockReceiptOrder.repository.facade.IStockReceiptOrderService;
import com.mhd.wms.domain.stockReceiptOrder.repository.po.StockReceiptOrderPO;
import com.mhd.wms.domain.stockReceiptOrder.repository.todo.StockReceiptOrderDO;
import com.mhd.wms.domain.stockReceiptOrder.service.StockReceiptOrderDomainService;
import com.mhd.wms.domain.stockShelfOrder.entity.StockShelfOrder;
import com.mhd.wms.domain.stockShelfOrder.repository.facade.IStockShelfOrderService;
import com.mhd.wms.domain.stockShelfOrder.repository.po.StockShelfOrderPO;
import com.mhd.wms.domain.stockShelfOrder.repository.todo.StockShelfOrderDO;
import com.mhd.wms.domain.stockShelfOrder.service.StockShelfOrderDomainService;
@@ -50,8 +61,11 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.lang.reflect.Field;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@@ -81,12 +95,18 @@ public class StockInOrderDomainService {
private IMaterialGoodsRuleService materialGoodsRuleService;
@Autowired
private IMaterialWarehouseControlService materialWarehouseControlService;
@Autowired
@Resource
private SystemServiceFeign systemServiceFeign;
@Autowired
private IReceiptMaterialDetailService receiptMaterialDetailService;
@Autowired
private IShelfMaterialDetailService shelfMaterialDetailService;
@Autowired
private IStockReceiptOrderService stockReceiptOrderService;
@Autowired
private IStockShelfOrderService stockShelfOrderService;
@Autowired
private IdGenerator idGenerator;
/**
* 分页查询入库单列表
@@ -107,7 +127,7 @@ public class StockInOrderDomainService {
// //设置物料信息
// setMaterialDetailInfo(stockInOrderDO);
// //统计总物料种数
// stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size());
stockInOrderDO.setMaterialQuantity(stockInOrderDO.getMaterialDetailList().size());
// //统计总计划数
// BigDecimal quantity = stockInOrderDO.getMaterialDetailList().stream().map(InMaterialDetailDO::getQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
// stockInOrderDO.setQuantity(quantity);
@@ -483,6 +503,295 @@ public class StockInOrderDomainService {
.in(StockInOrder::getInOrderId, stockInOrderDO.getInOrderIds()));
}
@Transactional(rollbackFor = Exception.class)
public Boolean receiptEasyMode(StockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
String inOrderNumber = stockInOrderDO.getInOrderNumber();
// 查询当天创建的入库单数量,用于生成batchNo
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String todayStr = dateFormat.format(new Date());
String todayStart = todayStr + " 00:00:00";
String todayEnd = todayStr + " 23:59:59";
SimpleDateFormat fullDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date todayStartDate = null;
try {
todayStartDate = fullDateFormat.parse(todayStart);
} catch (ParseException e) {
throw new RuntimeException(e);
}
Date todayEndDate = null;
try {
todayEndDate = fullDateFormat.parse(todayEnd);
} catch (ParseException e) {
throw new RuntimeException(e);
}
long todayStockInOrderCount = stockInOrderService.count(new LambdaQueryWrapper<StockInOrder>()
.ge(StockInOrder::getCreateTime, todayStartDate)
.le(StockInOrder::getCreateTime, todayEndDate)
.eq(StockInOrder::getDelFlag, 1));
String batchNo = "PC"+inOrderNumber+"-"+todayStockInOrderCount;
List<InMaterialDetailDO> materialDetailList = stockInOrderDO.getMaterialDetailList();
List<InMaterialDetailDO> receiptMaterialDetailList = materialDetailList.stream()
.filter(m -> m.getCollectQuantity() != null && m.getCollectQuantity().compareTo(BigDecimal.ZERO) != 0)
.collect(Collectors.toList());
if (receiptMaterialDetailList!=null && receiptMaterialDetailList.size()>0) {
for (InMaterialDetailDO inMaterialDetailDO : receiptMaterialDetailList) {
BigDecimal collectQuantity = inMaterialDetailDO.getCollectQuantity();
Long materialBaseInfoId = inMaterialDetailDO.getMaterialBaseInfoId();
Long uniqueId = inMaterialDetailDO.getUniqueId();
InMaterialDetail materialDetail = materialDetailService.getById(inMaterialDetailDO.getMaterialDetailId());
materialDetail.setCollectQuantity(collectQuantity);
materialDetailService.updateById(materialDetail);
ReceiptMaterialDetail receiptMaterialDetail = receiptMaterialDetailService.getOne(new QueryWrapper<ReceiptMaterialDetail>().lambda()
.eq(ReceiptMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ReceiptMaterialDetail::getInUniqueId, uniqueId)
.eq(ReceiptMaterialDetail::getDelFlag, 1), false);
BigDecimal alreadyReceiptQuantity = receiptMaterialDetail.getAlreadyReceiptQuantity();
if (alreadyReceiptQuantity != null && alreadyReceiptQuantity.compareTo(collectQuantity) == 0) {
continue;
}
receiptMaterialDetail.setReceiptQuantity(collectQuantity);
receiptMaterialDetail.setAlreadyReceiptQuantity(collectQuantity);
receiptMaterialDetail.setBatchNo(batchNo);
BigDecimal quantity = receiptMaterialDetail.getQuantity();
if (quantity != null && quantity.compareTo(BigDecimal.ZERO) == 0) {
receiptMaterialDetail.setReceiptStatus(3);
}
receiptMaterialDetailService.updateById(receiptMaterialDetail);
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new QueryWrapper<StockReceiptOrder>().lambda()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
if (stockReceiptOrder != null) {
stockReceiptOrder.setStatus(2);
stockReceiptOrder.setReceiptQuantity(stockReceiptOrder.getReceiptQuantity().add(collectQuantity));
stockReceiptOrder.setBatchNo(batchNo);
stockReceiptOrderService.updateById(stockReceiptOrder);
}
StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper<StockInOrder>().lambda()
.eq(StockInOrder::getInOrderNumber, inOrderNumber)
.eq(StockInOrder::getDelFlag, 1), false);
if (stockInOrder != null) {
stockInOrder.setStatus(3);
stockInOrderService.updateById(stockInOrder);
}
List<StockShelfOrder> list = stockShelfOrderService.list(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1));
StockShelfOrder stockShelfOrder = new StockShelfOrder();
if (list!=null && list.size()>0) {
stockShelfOrder = list.get(0);
} else {
BeanUtils.copyProperties(stockReceiptOrder, stockShelfOrder);
stockShelfOrder.setShelfOrderNumber(OrderSequence.getOrderCode("SJ"));
stockShelfOrder.setBatchNo(batchNo);
stockShelfOrderService.save(stockShelfOrder);
}
log.info("生成上架单成功,上架单编号:{}", stockShelfOrder.getShelfOrderNumber());
ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail();
ShelfMaterialDetail one = shelfMaterialDetailService.getOne(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ShelfMaterialDetail::getInUniqueId, uniqueId)
.eq(ShelfMaterialDetail::getLevel, 1)
.eq(ShelfMaterialDetail::getDelFlag, 1), false);
if (one != null) {
one.setQuantity(collectQuantity);
one.setBatchNo(batchNo);
// one.setLotNumber(receiptMaterialDetail.getLotNo());
shelfMaterialDetailService.updateById(one);
} else {
BeanUtils.copyProperties(inMaterialDetailDO, shelfMaterialDetail);
shelfMaterialDetail.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
shelfMaterialDetail.setQuantity(collectQuantity);
shelfMaterialDetail.setInUniqueId(uniqueId);
shelfMaterialDetail.setReceiptUniqueId(receiptMaterialDetail.getUniqueId());
shelfMaterialDetail.setBatchNo(batchNo);
shelfMaterialDetail.setLotNumber(receiptMaterialDetail.getLotNo());
shelfMaterialDetailService.save(shelfMaterialDetail);
}
log.info("生成上架单成功,上架单编号:{},上架单明细编号:{}", stockShelfOrder.getShelfOrderNumber(), shelfMaterialDetail.getShelfOrderNumber());
}
}
return true;
}
@Transactional(rollbackFor = Exception.class)
public Boolean shelfEasyMode(StockInOrderDO stockInOrderDO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
String userRealName = loginUser.getUserPo() != null && loginUser.getUserPo().getUserName() != null
? loginUser.getUserPo().getUserName()
: (loginUser.getRealname() != null ? loginUser.getRealname() : loginUser.getUsername());
String inOrderNumber = stockInOrderDO.getInOrderNumber();
List<InMaterialDetailDO> materialDetailList = stockInOrderDO.getMaterialDetailList();
List<InMaterialDetailDO> receiptMaterialDetailList = materialDetailList.stream()
.filter(m -> StringUtils.isNotBlank(m.getShelfJson()))
.collect(Collectors.toList());
if (receiptMaterialDetailList!=null && receiptMaterialDetailList.size()>0) {
for (InMaterialDetailDO inMaterialDetailDO : receiptMaterialDetailList) {
Long materialDetailId1 = inMaterialDetailDO.getMaterialDetailId();
Long materialBaseInfoId = inMaterialDetailDO.getMaterialBaseInfoId();
Long uniqueId = inMaterialDetailDO.getUniqueId();
String shelfJson = inMaterialDetailDO.getShelfJson();
List<Map<String, Object>> shelfList = JSON.parseObject(shelfJson, new TypeReference<List<Map<String, Object>>>(){});
StockInOrder stockInOrder = stockInOrderService.getOne(new QueryWrapper<StockInOrder>().lambda()
.eq(StockInOrder::getInOrderNumber, inOrderNumber)
.eq(StockInOrder::getDelFlag, 1), false);
if (stockInOrder != null) {
stockInOrder.setStatus(4);
stockInOrderService.updateById(stockInOrder);
}
int index=0;
for (Map<String, Object> stringObjectMap : shelfList) {
Object shelvesQuantityObj = stringObjectMap.get("shelvesQuantity");
BigDecimal shelvesQuantity = shelvesQuantityObj != null ? new BigDecimal(String.valueOf(shelvesQuantityObj)) : null;
String shelfOrderNumber = (String) stringObjectMap.get("shelfOrderNumber");
String warehouseCode = (String) stringObjectMap.get("warehouseCode");
String warehouseName = (String) stringObjectMap.get("warehouseName");
String storageCode = (String) stringObjectMap.get("storageCode");
String storageName = (String) stringObjectMap.get("storageName");
String storageLocationCode = (String) stringObjectMap.get("storageLocationCode");
String storageLocationName = (String) stringObjectMap.get("storageLocationName");
Object warehouseIdObj = stringObjectMap.get("warehouseId");
Long warehouseId = warehouseIdObj != null ? Long.valueOf(String.valueOf(warehouseIdObj)) : null;
Object storageSectionIdObj = stringObjectMap.get("storageSectionId");
Long storageSectionId = storageSectionIdObj != null ? Long.valueOf(String.valueOf(storageSectionIdObj)) : null;
Object storageLocationIdObj = stringObjectMap.get("storageLocationId");
Long storageLocationId = storageLocationIdObj != null ? Long.valueOf(String.valueOf(storageLocationIdObj)) : null;
// Integer level = (Integer) stringObjectMap.get("level");
// 如果 materialDetailId 不为空则更新上架单明细
// if (stringObjectMap.containsKey("materialDetailId")) {
// Long materialDetailId = (Long) stringObjectMap.get("materialDetailId");
// ShelfMaterialDetail detail = shelfMaterialDetailService.getById(materialDetailId);
// detail.setShelvesQuantity(shelvesQuantity);
// detail.setAlreadyShelvesQuantity(shelvesQuantity);
// detail.setWarehouseId(warehouseId);
// detail.setStorageSectionId(storageSectionId);
// detail.setStorageLocationId(storageLocationId);
// detail.setWarehouseCode(warehouseCode);
// detail.setWarehouseName(warehouseName);
// detail.setStorageCode(storageCode);
// detail.setStorageName(storageName);
// detail.setStorageLocationCode(storageLocationCode);
// detail.setStorageLocationName(storageLocationName);
// shelfMaterialDetailService.updateById(detail);
// continue;
// }
StockReceiptOrder stockReceiptOrder = stockReceiptOrderService.getOne(new LambdaUpdateWrapper<StockReceiptOrder>()
.eq(StockReceiptOrder::getInOrderNumber, inOrderNumber)
.eq(StockReceiptOrder::getDelFlag, 1), false);
// 如果 materialDetailId 为空则创建上架单明细
List<StockShelfOrder> list = stockShelfOrderService.list(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1));
StockShelfOrder stockShelfOrder = new StockShelfOrder();
if (list!=null && list.size()>0) {
stockShelfOrder = list.get(0);
stockShelfOrder.setStatus(2);
stockShelfOrderService.updateById(stockShelfOrder);
} else {
throw new RuntimeException("未找到上架单!");
}
ShelfMaterialDetail one = shelfMaterialDetailService.getOne(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getMaterialBaseInfoId, materialBaseInfoId)
.eq(ShelfMaterialDetail::getInUniqueId, uniqueId)
.eq(ShelfMaterialDetail::getDelFlag, 1), false);
shelfMaterialDetailService.remove(new QueryWrapper<ShelfMaterialDetail>().lambda()
.eq(ShelfMaterialDetail::getLevel, 2)
.ne(ShelfMaterialDetail::getParentUniqueId, 0l)
.eq(ShelfMaterialDetail::getDelFlag, 1));
if (one != null) {
if (index == 0) {
one.setShelvesQuantity(shelvesQuantity);
one.setAlreadyShelvesQuantity(shelvesQuantity);
one.setWarehouseId(warehouseId);
one.setStorageSectionId(storageSectionId);
one.setStorageLocationId(storageLocationId);
one.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
one.setWarehouseCode(warehouseCode);
one.setWarehouseName(warehouseName);
one.setStorageCode(storageCode);
one.setStorageName(storageName);
one.setStorageLocationCode(storageLocationCode);
one.setStorageLocationName(storageLocationName);
one.setLevel(1);
one.setParentUniqueId(0l);
one.setShelvesStatus(3);
shelfMaterialDetailService.updateById(one);
stringObjectMap.put("materialDetailId", one.getMaterialDetailId());
stringObjectMap.put("level",1);
} else {
ShelfMaterialDetail shelfMaterialDetail = new ShelfMaterialDetail();
BeanUtils.copyProperties(one, shelfMaterialDetail);
shelfMaterialDetail.setQuantity(BigDecimal.ZERO);
shelfMaterialDetail.setShelvesQuantity(shelvesQuantity);
shelfMaterialDetail.setAlreadyShelvesQuantity(shelvesQuantity);
shelfMaterialDetail.setShelfOrderNumber(stockShelfOrder.getShelfOrderNumber());
shelfMaterialDetail.setWarehouseCode(warehouseCode);
shelfMaterialDetail.setWarehouseName(warehouseName);
shelfMaterialDetail.setStorageCode(storageCode);
shelfMaterialDetail.setStorageName(storageName);
shelfMaterialDetail.setStorageLocationCode(storageLocationCode);
shelfMaterialDetail.setStorageLocationName(storageLocationName);
shelfMaterialDetail.setStorageSectionId(storageSectionId);
shelfMaterialDetail.setStorageLocationId(storageLocationId);
shelfMaterialDetail.setLevel(2);
shelfMaterialDetail.setParentUniqueId(one.getUniqueId());
shelfMaterialDetail.setUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setInUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setReceiptUniqueId(idGenerator.snowflakeId(SnowFlakeConstants.wmsId));
shelfMaterialDetail.setShelvesStatus(3);
shelfMaterialDetail.setLotNumber(one.getLotNumber());
if (stockReceiptOrder!= null) {
shelfMaterialDetail.setBatchNo(stockReceiptOrder.getBatchNo());
}
shelfMaterialDetailService.save(shelfMaterialDetail);
stringObjectMap.put("materialDetailId", shelfMaterialDetail.getMaterialDetailId());
stringObjectMap.put("level",2 );
}
} else {
throw new RuntimeException("未找到上架单明细!");
}
index++;
}
InMaterialDetail inMaterialDetail = materialDetailService.getById(materialDetailId1);
inMaterialDetail.setShelfJson(JSON.toJSONString(shelfList));
materialDetailService.updateById(inMaterialDetail);
}
}
StockShelfOrder stockShelfOrder = stockShelfOrderService.getOne(new QueryWrapper<StockShelfOrder>().lambda()
.eq(StockShelfOrder::getInOrderNumber, inOrderNumber)
.eq(StockShelfOrder::getDelFlag, 1), false);
if (stockShelfOrder != null) {
String shelfOrderNumber = stockShelfOrder.getShelfOrderNumber();
List<ShelfMaterialDetail> list = shelfMaterialDetailService.list(new LambdaQueryWrapper<ShelfMaterialDetail>()
.eq(ShelfMaterialDetail::getShelfOrderNumber, shelfOrderNumber)
.eq(ShelfMaterialDetail::getDelFlag, 1));
if (list!=null&&list.size() > 0) {
BigDecimal quantity = BigDecimal.ZERO;
for (ShelfMaterialDetail shelfMaterialDetail : list) {
quantity = quantity.add(shelfMaterialDetail.getAlreadyShelvesQuantity());
}
stockShelfOrder.setShelvesQuantity(quantity);
stockShelfOrderService.updateById(stockShelfOrder);
}
}
return true;
}
/**
* @description 取消入库单
@@ -424,4 +424,14 @@ public class StockOutOrder extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -25,6 +25,7 @@ import com.mhd.wms.domain.materialBaseInfo.repository.mapper.MaterialBaseInfoMap
import com.mhd.wms.domain.materialBaseInfo.repository.po.MaterialBaseInfoPO;
import com.mhd.wms.domain.materialBaseInfo.repository.todo.MaterialBaseInfoDO;
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.mapper.StockOutOrderMapper;
@@ -61,6 +62,8 @@ public class ExcelParseService {
private StockOutOrderDomainService stockOutOrderDomainService;
@Autowired
private StockOutOrderMapper stockOutOrderMapper;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Resource
private UserServiceFeign userServiceFeign;
/**
@@ -114,6 +117,7 @@ public class ExcelParseService {
stockOutOrder.setWarehouseName(warehouseName);
stockOutOrder.setWarehouseCode(warehouseCode);
stockOutOrder.setWarehouseId(warehouseId);
stockOutOrder.setSalesmanId(String.valueOf(loginUser.getUserPo().getUserId()));
stockOutOrder.setSalesmanName(loginUser.getUserPo().getUserName());
String settlementCurrency = stockOutOrderMapper.getSettlementCurrency(shipperId);
@@ -124,6 +128,9 @@ public class ExcelParseService {
stockOutOrder.setOrganizationId(loginUser.getUserPo().getOrganizationId());
stockOutOrder.setOrganizationName(loginUser.getUserPo().getOrganizationName());
}
// 获取任务下发用户ID
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrder.getOrganizationId(), stockOutOrder.getWarehouseId(), stockOutOrder.getTopOrganizationId());
stockOutOrder.setTaskIssueUserId(userId);
initParam(stockOutOrder);
// 导入出库单时如果出库单类型为空默认设置为普通出库
if (StringUtils.isBlank(stockOutOrder.getOrderTypeCode())) {
@@ -451,4 +451,13 @@ public class StockOutOrderPO extends BaseVOEntity {
@ApiModelProperty("推送人姓名")
private String pushByName;
private String khdm;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
}
@@ -492,4 +492,25 @@ public class StockOutOrderDO extends BaseVOEntity {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -19,12 +19,19 @@ import com.mhd.system.api.domain.BatchDetailFeignPO;
import com.mhd.system.api.domain.DeliveryDetailsLink;
import com.mhd.system.api.domain.PackDetailFeignPO;
import com.mhd.system.api.model.LoginUser;
import com.mhd.wms.application.service.handoverTaskOrder.HandoverTaskOrderApplicationService;
import com.mhd.wms.application.service.pickingOrder.PickingOrderApplicationService;
import com.mhd.wms.application.service.reviewOrder.ReviewOrderApplicationService;
import com.mhd.wms.application.service.stockOutOrder.StockOutOrderApplicationService;
import com.mhd.wms.domain.copyCodeReference.repository.po.CopyCodeReferencePO;
import com.mhd.wms.domain.deliveTask.entity.DeliveTask;
import com.mhd.wms.domain.deliveTask.repository.facade.IDeliveTaskService;
import com.mhd.wms.domain.deliveTask.repository.todo.DeliveTaskDO;
import com.mhd.wms.domain.deliveryDetailsLink.repository.facade.IDeliveryDetailsLinkService;
import com.mhd.wms.domain.handoverTaskOrder.entity.HandoverTaskOrder;
import com.mhd.wms.domain.handoverTaskOrder.repository.facade.IHandoverTaskOrderService;
import com.mhd.wms.domain.handoverTaskOrder.repository.todo.HandoverTaskOrderDO;
import com.mhd.wms.domain.handoverTaskOrder.service.HandoverTaskOrderDomainService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.inventoryAdjustmentRecord.entity.InventoryAdjustmentRecord;
@@ -68,8 +75,15 @@ import com.mhd.wms.domain.pickingOrder.service.PickingOrderDomainService;
import com.mhd.wms.domain.pushSyncBms.PushSyncBmsDomainService;
import com.mhd.wms.domain.replenishmentNotice.repository.todo.ReplenishmentNoticeDO;
import com.mhd.wms.domain.replenishmentNotice.service.ReplenishmentNoticeDomainService;
import com.mhd.wms.domain.reviewOrder.entity.ReviewMaterialDetail;
import com.mhd.wms.domain.reviewOrder.entity.ReviewOrder;
import com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewMaterialDetailMapper;
import com.mhd.wms.domain.reviewOrder.repository.mapper.ReviewOrderMapper;
import com.mhd.wms.domain.reviewOrder.repository.po.ReviewMaterialDetailPO;
import com.mhd.wms.domain.reviewOrder.repository.todo.ReviewOrderDO;
import com.mhd.wms.domain.statementStatistics.po.ImmediateInventoryPO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.mapper.StockInOrderMapper;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockInOrder.service.StockInOrderDomainService;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
@@ -112,6 +126,8 @@ public class StockOutOrderDomainService {
@Autowired
private IHandoverTaskOrderService handoverTaskOrderService;
@Autowired
private HandoverTaskOrderDomainService handoverTaskOrderDomainService;
@Autowired
private IOutOrderAbnormalService outOrderAbnormalService;
@Autowired
private PickingOrderDomainService pickingOrderDomainService;
@@ -149,6 +165,19 @@ public class StockOutOrderDomainService {
private IPickingMaterialDetailService pickingMaterialDetailService;
@Autowired
private IPickingOrderService pickingOrderService;
@Autowired
private StockInOrderMapper stockInOrderMapper;
@Autowired
private PickingOrderApplicationService pickingOrderApplicationService;
@Autowired
private HandoverTaskOrderApplicationService handoverTaskOrderApplicationService;
@Autowired
private ReviewOrderApplicationService reviewOrderApplicationService;
@Autowired
private ReviewOrderMapper reviewOrderMapper;
@Autowired
private ReviewMaterialDetailMapper reviewMaterialDetailMapper;
/**
* 分页查询出库单列表
*/
@@ -166,7 +195,7 @@ public class StockOutOrderDomainService {
//设置物料信息
//setMaterialDetailInfo(stockOutOrderDO);
//统计种类
//stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
stockOutOrderDO.setMaterialQuantity(stockOutOrderDO.getMaterialDetailList().size());
//统计总数量
BigDecimal quantity = stockOutOrderDO.getMaterialDetailList().stream().map(OutMaterialDetailDO::getOutboundQuantity).filter(Objects::nonNull).reduce(BigDecimal.ZERO, BigDecimal::add);
stockOutOrderDO.setQuantity(quantity);
@@ -864,6 +893,205 @@ public class StockOutOrderDomainService {
return inserted;
}
@Transactional(rollbackFor = Exception.class)
public Boolean adjustPicking(StockOutOrderDO stockOutOrderDO){
String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new LambdaQueryWrapper<StockOutOrder>()
.eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
.eq(StockOutOrder::getDelFlag, 1), false);
stockOutOrder.setStatus(6);
stockOutOrder.setUpdateTime(new Date());
stockOutOrderService.updateById(stockOutOrder);
PickingOrder pickingOrder = pickingOrderService.getOne(new QueryWrapper<PickingOrder>().lambda()
.eq(PickingOrder::getOrderNumber, outOrderNumber)
.eq(PickingOrder::getDelFlag, 1), false);
if (pickingOrder == null) {
throw new RuntimeException("拣货单不存在!");
}
pickingOrder.setStatus(2);
pickingOrderService.updateById(pickingOrder);
//拣货任务下发
PickingOrderDO pickingOrderDO = new PickingOrderDO();
pickingOrderDO.setOperatorsBy(stockOutOrder.getWorkUserId());
List<Long> ids = new ArrayList<>();
ids.add(pickingOrder.getPickingOrderId());
pickingOrderDO.setPickingOrderIdList(ids);
// pickingOrderApplicationService.allDistribution(pickingOrderDO);
List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
if (CollectionUtils.isEmpty(materialDetailList)) {
throw new RuntimeException("出库单明细不存在!");
}
List<OutMaterialDetailDO> pickingMaterialDetailList = materialDetailList.stream()
.filter(m -> m.getOutWeight() != null || m.getOutVolume() != null || m.getOutQuantity() != null)
.collect(Collectors.toList());
if (pickingMaterialDetailList != null && pickingMaterialDetailList.size() > 0) {
for (OutMaterialDetailDO outMaterialDetailDO : pickingMaterialDetailList) {
Long uniqueId = outMaterialDetailDO.getUniqueId();
BigDecimal outWeight = outMaterialDetailDO.getOutWeight();
BigDecimal outVolume = outMaterialDetailDO.getOutVolume();
BigDecimal outQuantity = outMaterialDetailDO.getOutQuantity();
PickingMaterialDetail pickingMaterialDetail = pickingMaterialDetailService.getOne(new QueryWrapper<PickingMaterialDetail>().lambda()
.eq(PickingMaterialDetail::getOutUniqueId, uniqueId)
.eq(PickingMaterialDetail::getDelFlag, 1), false);
if (pickingMaterialDetail != null) {
pickingMaterialDetail.setWeightLimit(outWeight);
pickingMaterialDetail.setTotalNetWeight(outWeight);
pickingMaterialDetail.setTotalGrossWeight(outVolume);
pickingMaterialDetail.setVolumeLimit(outVolume);
pickingMaterialDetail.setTotalVolume(outVolume);
pickingMaterialDetail.setPickingQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
pickingMaterialDetail.setAlreadyPickingQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
pickingMaterialDetailService.updateById(pickingMaterialDetail);
OutMaterialDetail outMaterialDetail = outMaterialDetailService.getOne(new LambdaQueryWrapper<OutMaterialDetail>()
.eq(OutMaterialDetail::getUniqueId, uniqueId)
.eq(OutMaterialDetail::getDelFlag, 1), false);
if (outMaterialDetail != null) {
outMaterialDetail.setOutWeight(outWeight);
outMaterialDetail.setOutVolume(outVolume);
outMaterialDetail.setOutQuantity(outQuantity == null || outQuantity.compareTo(BigDecimal.ZERO) == 0 ? outMaterialDetailDO.getOutQuantity() : outQuantity);
outMaterialDetailService.updateById(outMaterialDetail);
}
}
}
}
return Boolean.TRUE;
}
@Transactional(rollbackFor = Exception.class)
public Boolean checkUpload(StockOutOrderDO stockOutOrderDO){
String outOrderNumber = stockOutOrderDO.getOutOrderNumber();
StockOutOrder stockOutOrder = stockOutOrderService.getOne(new QueryWrapper<StockOutOrder>().lambda()
.eq(StockOutOrder::getOutOrderNumber, outOrderNumber)
.eq(StockOutOrder::getDelFlag, 1), false);
if (stockOutOrder == null) {
throw new RuntimeException("出库单不存在!");
}
PickingOrder pickingOrder = pickingOrderService.getOne(new QueryWrapper<PickingOrder>().lambda()
.eq(PickingOrder::getOrderNumber, outOrderNumber)
.eq(PickingOrder::getDelFlag, 1), false);
if (pickingOrder == null) {
throw new RuntimeException("拣货单不存在!");
}
PickingOrderDO pickingOrderDO = new PickingOrderDO();
pickingOrderDO.setType(1);
pickingOrderDO.setPickingOrderId(pickingOrder.getPickingOrderId());
pickingOrderDomainService.completePicking(pickingOrderDO);
DeliveTask pickdeliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, pickingOrder.getPickingOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (pickdeliveTask != null) {
pickdeliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
pickdeliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
pickdeliveTask.setTaskStatus(2);
deliveTaskService.updateById(pickdeliveTask);
}
//复核
// ReviewOrderDO reviewOrderDO = new ReviewOrderDO();
// List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
// if (materialDetailList != null && materialDetailList.size() > 0) {
// for (OutMaterialDetailDO outMaterialDetailDO : materialDetailList) {
// Long uniqueId = outMaterialDetailDO.getUniqueId();
// PickingMaterialDetail pickingMaterialDetail = pickingMaterialDetailService.getOne(new QueryWrapper<PickingMaterialDetail>().lambda()
// .eq(PickingMaterialDetail::getOutUniqueId, uniqueId)
// .eq(PickingMaterialDetail::getDelFlag, 1), false);
// if (pickingMaterialDetail != null) {
// outMaterialDetailDO.setActualQuantity(pickingMaterialDetail.getPickingQuantity());
// outMaterialDetailDO.setCheckArea(pickingMaterialDetail.getTotalArea());
// outMaterialDetailDO.setCheckVolume(pickingMaterialDetail.getTotalVolume());
// outMaterialDetailDO.setCheckNetWeight(pickingMaterialDetail.getTotalNetWeight());
// outMaterialDetailDO.setCheckGrossWeight(pickingMaterialDetail.getTotalGrossWeight());
// }
// }
// }
// stockOutOrderDO.setMaterialDetailList(materialDetailList);
// batchCheck(stockOutOrderDO);
// checkConfirm(stockOutOrderDO);
ReviewOrderDO cmd1 = new ReviewOrderDO();
List<ReviewOrder> reviewOrders = reviewOrderMapper.selectList(new QueryWrapper<ReviewOrder>().lambda()
.eq(ReviewOrder::getOutOrderId, stockOutOrderDO.getOutOrderId())
.eq(ReviewOrder::getDelFlag, 1));
if (reviewOrders != null && reviewOrders.size() > 0) {
ReviewOrder reviewOrder = reviewOrders.get(0);
BeanUtils.copyProperties(reviewOrder,cmd1);
List<ReviewMaterialDetailPO> details = new ArrayList<>();
List<OutMaterialDetailDO> materialDetailList = stockOutOrderDO.getMaterialDetailList();
// 将每个明细的children提取出来与父级合并为一个扁平list
List<OutMaterialDetailDO> flatMaterialDetailList = new ArrayList<>();
for (OutMaterialDetailDO detail : materialDetailList) {
flatMaterialDetailList.add(detail);
if (!CollectionUtils.isEmpty(detail.getChildren())) {
flatMaterialDetailList.addAll(detail.getChildren());
}
}
materialDetailList = flatMaterialDetailList;
for (OutMaterialDetailDO outMaterialDetailDO : materialDetailList) {
ReviewMaterialDetailPO detailPO = new ReviewMaterialDetailPO();
Long materialDetailId = outMaterialDetailDO.getMaterialDetailId();
ReviewMaterialDetail reviewMaterialDetailPO = reviewMaterialDetailMapper.selectOne(new QueryWrapper<ReviewMaterialDetail>().lambda()
.eq(ReviewMaterialDetail::getMaterialDetailId, materialDetailId)
.eq(ReviewMaterialDetail::getDelFlag, 1));
// reviewMaterialDetailPO.setReviewedQty(BigDecimal.ZERO);
reviewMaterialDetailPO.setReviewQtyEa(reviewMaterialDetailPO.getMaterialPlanQty());
reviewMaterialDetailPO.setVolumeCbm(outMaterialDetailDO.getOutVolume());
reviewMaterialDetailPO.setNetWeightKg(outMaterialDetailDO.getOutWeight());
reviewMaterialDetailPO.setGrossWeightKg(outMaterialDetailDO.getOutVolume());
BeanUtils.copyProperties(reviewMaterialDetailPO, detailPO);
details.add(detailPO);
}
cmd1.setDetails(details);
}
reviewOrderApplicationService.batchCheck(cmd1);
ReviewOrderDO cmd2 = new ReviewOrderDO();
cmd2.setReviewOrderId(cmd1.getReviewOrderId());
reviewOrderApplicationService.checkConfirm(cmd2);
DeliveTask reviewdeliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, cmd1.getReviewOrderNumber())
.eq(DeliveTask::getDelFlag, 1));
if (reviewdeliveTask != null) {
reviewdeliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
reviewdeliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
reviewdeliveTask.setTaskStatus(2);
deliveTaskService.updateById(reviewdeliveTask);
}
//交接
HandoverTaskOrder handoverTaskOrder = handoverTaskOrderService.getOne(new LambdaQueryWrapper<HandoverTaskOrder>()
.eq(HandoverTaskOrder::getOrderNumber, outOrderNumber)
.eq(HandoverTaskOrder::getDelFlag, 1));
if (handoverTaskOrder != null) {
//交接pda下发
HandoverTaskOrderDO handoverTaskOrderDO1 = new HandoverTaskOrderDO();
handoverTaskOrderDO1.setOperatorsBy(stockOutOrder.getWorkUserId());
List<Long> ids = new ArrayList<>();
ids.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO1.setHandoverTaskOrderIds(ids);
DeliveTask deliveTask = deliveTaskService.getOne(new LambdaQueryWrapper<DeliveTask>()
.eq(DeliveTask::getTrackingNumber, handoverTaskOrder.getTaskNumber())
.eq(DeliveTask::getDelFlag, 1));
if (deliveTask != null) {
deliveTask.setOperatorsBy(stockOutOrder.getWorkUserId());
deliveTask.setOperatorsName(stockOutOrder.getWorkUserName());
deliveTask.setTaskStatus(2);
deliveTaskService.updateById(deliveTask);
}
// handoverTaskOrderApplicationService.taskDistribution(handoverTaskOrderDO1);
//完成交接
HandoverTaskOrderDO handoverTaskOrderDO = new HandoverTaskOrderDO();
List<Long> handoverTaskOrderId = new ArrayList<>();
handoverTaskOrderId.add(handoverTaskOrder.getHandoverTaskOrderId());
handoverTaskOrderDO.setHandoverTaskOrderIds(handoverTaskOrderId);
handoverTaskOrderDomainService.completeHandover(handoverTaskOrderDO);
}
return Boolean.TRUE;
}
@Transactional(rollbackFor = Exception.class)
public Boolean genPickingOrderByOms(StockOutOrderDO stockOutOrderDO){
List<StockOutOrder> stockOutOrderList = stockOutOrderService.list(new QueryWrapper<StockOutOrder>().lambda()
@@ -1569,9 +1797,9 @@ public class StockOutOrderDomainService {
if (stockOutOrderDb.getStatus() > 8){
throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】已出库,请重新选择");
}
if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){
throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货");
}
// if (stockOutOrderDb.getUpdateTime().compareTo(stockOutOrderDO.getUpdateTime()) != 0){
// throw new ServiceException("出库单【" + stockOutOrderDb.getOutOrderNumber() + "】数据已被更新,请刷新后重新进行收货");
// }
LoginUser loginUser = SecurityUtils.getLoginUser();
stockOutOrderService.update(null, new UpdateWrapper<StockOutOrder>().lambda()
.set(StockOutOrder::getCheckStatus, 2)
@@ -1986,6 +2214,9 @@ public class StockOutOrderDomainService {
private static final String OMS_AUTO_AUDIT_REMARK = "OMS下发自动审核";
public void omsOrderAdd(StockOutOrder stockOutOrder) {
// 任务下发用户id
String userId = stockInOrderMapper.queryWarehouseUserId(stockOutOrder.getOrganizationId(), stockOutOrder.getWarehouseId(), stockOutOrder.getTopOrganizationId());
stockOutOrder.setTaskIssueUserId(userId);
stockOutOrderService.save(stockOutOrder);
}
@@ -401,4 +401,8 @@ public class InMaterialDetailDTO extends BaseVOEntity {
private BigDecimal erpPriceGw;
//申报总价
private BigDecimal amountGw;
//仓码简易模式收货上架
private BigDecimal collectQuantity;
private String shelfJson;
}
@@ -506,4 +506,16 @@ public class OutMaterialDetailDTO extends BaseVOEntity {
private String bondInvtNoGw;
private String whNoGw;
private String seatNoGw;
//仓码简易模式
@ApiModelProperty("出库重量")
@Excel(name = "出库重量")
private BigDecimal outWeight;
@ApiModelProperty("出库体积")
@Excel(name = "出库体积")
private BigDecimal outVolume;
@ApiModelProperty("出库数量")
@Excel(name = "出库数量")
private BigDecimal outQuantity;
}
@@ -426,4 +426,23 @@ public class StockInOrderDTO extends StockInOrderBaseDTO {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -484,4 +484,22 @@ public class StockOutOrderDTO extends StockOutOrderBaseDTO {
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeTo;
@ApiModelProperty("作业人用户ID")
private Long workUserId;
@ApiModelProperty("作业人用户")
private String workUserName;
@ApiModelProperty("作业任务接收状态")
private String workTaskReceiveStatus;
@ApiModelProperty("任务下发用户ID")
private String taskIssueUserId;
//仓码pda查询参数
@ApiModelProperty("pda查询用户ID")
private Long queryUserId;
@ApiModelProperty("状态列表")
private List<Integer> statusList;
@ApiModelProperty("任务移除用户ID")
private String removeUserId;
}
@@ -1,6 +1,7 @@
package com.mhd.wms.interfaces.facadeApi.stockInOrder;
import com.mhd.common.core.web.controller.BaseController;
import com.mhd.common.core.utils.bean.BeanUtils;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.web.page.TableDataInfo;
import com.mhd.common.core.exception.ServiceException;
@@ -8,12 +9,15 @@ import com.mhd.common.core.utils.StringUtils;
import com.mhd.wms.application.service.stockInOrder.StockInOrderApplicationService;
import com.mhd.wms.domain.inMaterialDetail.entity.InMaterialDetail;
import com.mhd.wms.domain.inMaterialDetail.repository.po.InMaterialDetailPO;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.inMaterialDetail.repository.todo.InMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.po.StockInOrderPO;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.repository.todo.StockOutOrderDO;
import com.mhd.wms.interfaces.assember.stockInOrder.StockInOrderAssembler;
import com.mhd.wms.interfaces.assember.stockOutOrder.StockOutOrderAssembler;
import com.mhd.wms.interfaces.dto.inMaterialDetail.InMaterialDetailDTO;
import com.mhd.wms.interfaces.dto.stockInOrder.StockInOrderDTO;
import com.mhd.wms.interfaces.dto.stockOutOrder.StockOutOrderDTO;
import io.swagger.annotations.ApiOperation;
@@ -22,6 +26,8 @@ import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
@@ -172,6 +178,87 @@ public class StockInOrderApi extends BaseController {
stockInOrderApplicationService.omsOrderAdd(stockInOrder);
}
/**
* oms下发单保存
*/
@ApiOperation("pda接收任务")
@PostMapping(value = "/acceptTask")
public AjaxResult acceptTask(@RequestBody StockInOrder stockInOrder) {
stockInOrderApplicationService.acceptTask(stockInOrder);
return AjaxResult.success();
}
/**
* oms下发单保存
*/
@ApiOperation("pda取消接收任务")
@PostMapping(value = "/removeTask")
public AjaxResult removeTask(@RequestBody StockInOrderDO stockInOrderDO) {
stockInOrderApplicationService.removeTask(stockInOrderDO);
return AjaxResult.success();
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式收货")
@PostMapping(value = "/receiptEasyMode")
public AjaxResult receiptEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
List<InMaterialDetailDTO> materialDetailList = stockInOrderDTO.getMaterialDetailList();
if (materialDetailList != null && !materialDetailList.isEmpty()) {
List<InMaterialDetailDO> inMaterialDetailDOList = new ArrayList<>();
for (InMaterialDetailDTO dto : materialDetailList) {
InMaterialDetailDO detailDO = new InMaterialDetailDO();
BeanUtils.copyProperties(dto, detailDO);
inMaterialDetailDOList.add(detailDO);
}
stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
}
return AjaxResult.success(stockInOrderApplicationService.receiptEasyMode(stockInOrderDO));
}
@ApiOperation("pda简易模式修改计划数量")
@GetMapping(value = "/updateQuantity")
public AjaxResult updateQuantity(@RequestParam BigDecimal quantity,
@RequestParam Long materialDetailId,
@RequestParam BigDecimal area,
@RequestParam BigDecimal volume
,@RequestParam BigDecimal weight) {
return AjaxResult.success(stockInOrderApplicationService.updateQuantity(quantity, materialDetailId, area, volume, weight));
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式上架")
@PostMapping(value = "/shelfEasyMode")
public AjaxResult shelfEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
List<InMaterialDetailDTO> materialDetailList = stockInOrderDTO.getMaterialDetailList();
if (materialDetailList != null && !materialDetailList.isEmpty()) {
List<InMaterialDetailDO> inMaterialDetailDOList = new ArrayList<>();
for (InMaterialDetailDTO dto : materialDetailList) {
InMaterialDetailDO detailDO = new InMaterialDetailDO();
BeanUtils.copyProperties(dto, detailDO);
inMaterialDetailDOList.add(detailDO);
}
stockInOrderDO.setMaterialDetailList(inMaterialDetailDOList);
}
return AjaxResult.success(stockInOrderApplicationService.shelfEasyMode(stockInOrderDO));
}
/**
* 审核入库单
*/
@ApiOperation("pda简易模式核对上传")
@PostMapping(value = "/checkUploadEasyMode")
public AjaxResult checkUploadEasyMode(@RequestBody StockInOrderDTO stockInOrderDTO) {
StockInOrderDO stockInOrderDO = stockInOrderAssembler.toDO(stockInOrderDTO);
return AjaxResult.success(stockInOrderApplicationService.checkUploadEasyMode(stockInOrderDO));
}
/**
* oms下发单明细保存
*/
@@ -18,6 +18,7 @@ import com.mhd.wms.domain.outMaterialDetail.entity.OutMaterialDetail;
import com.mhd.wms.domain.outMaterialDetail.repository.po.OutMaterialDetailPO;
import com.mhd.wms.domain.outMaterialDetail.repository.todo.OutMaterialDetailDO;
import com.mhd.wms.domain.stockInOrder.entity.StockInOrder;
import com.mhd.wms.domain.stockInOrder.repository.todo.StockInOrderDO;
import com.mhd.wms.domain.stockOutOrder.entity.StockOutOrder;
import com.mhd.wms.domain.stockOutOrder.repository.facade.IStockOutOrderService;
import com.mhd.wms.domain.stockOutOrder.repository.listener.ExcelParseService;
@@ -346,6 +347,29 @@ public class StockOutOrderApi extends BaseController {
return toAjax(stockOutOrderApplicationService.genPickingOrder(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@ApiOperation("简易模式拣货")
@PostMapping("/adjustPicking")
public AjaxResult adjustPicking(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class);
return toAjax(stockOutOrderApplicationService.adjustPicking(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@ApiOperation("简易核对上传")
@PostMapping("/checkUpload")
public AjaxResult checkUpload(@RequestBody StockOutOrderDTO stockOutOrderDTO) {
StockOutOrderDO stockOutOrderDO = JSONUtil.toBean(JSONUtil.toJsonStr(stockOutOrderDTO), StockOutOrderDO.class);
return toAjax(stockOutOrderApplicationService.checkUpload(stockOutOrderDO));
}
/**
* 生成拣货单
*/
@@ -464,6 +488,26 @@ public class StockOutOrderApi extends BaseController {
stockOutOrderApplicationService.omsOrderAdd(stockOutOrder);
}
/**
* oms下发单保存
*/
@ApiOperation("pda接收任务")
@PostMapping(value = "/acceptTask")
public AjaxResult acceptTask(@RequestBody StockOutOrder stockOutOrder) {
stockOutOrderApplicationService.acceptTask(stockOutOrder);
return AjaxResult.success();
}
/**
* oms下发单保存
*/
@ApiOperation("pda取消接收任务")
@PostMapping(value = "/removeTask")
public AjaxResult removeTask(@RequestBody StockOutOrderDO stockOutOrderDO) {
stockOutOrderApplicationService.removeTask(stockOutOrderDO);
return AjaxResult.success();
}
/**
* oms下发单明细保存
*/
+4 -4
View File
@@ -14,18 +14,18 @@ spring:
nacos:
discovery:
# server-addr: 127.0.0.1:8848
server-addr: 10.33.0.129:6010
# server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.31:6848
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
#线上正式环境
# server-addr: 10.102.192.105:6848
config:
# server-addr: 127.0.0.1:8848
server-addr: 10.33.0.129:6010
# server-addr: 10.33.0.129:6010
# 线上测试环境配置 容器名+端口号
# server-addr: 10.102.192.31:6848
server-addr: 10.102.192.30:6848
username: nacos
password: manhuoda@2023
#线上正式环境
@@ -104,6 +104,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="erpPriceGw" column="erp_price_gw" />
<result property="amountGw" column="amount_gw" />
<result property="inOrderNumberGw" column="in_order_number_gw" />
<result property="inLineNumGw" column="in_line_num_gw" />
<result property="outWeight" column="OUT_WEIGHT" />
<result property="outVolume" column="OUT_VOLUME" />
<result property="outQuantity" column="OUT_QUANTITY" />
</resultMap>
@@ -117,6 +121,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.lot_no ,
a.stock_quantity ,
a.stock_unit ,a.in_order_number ,
a.OUT_WEIGHT,a.OUT_VOLUME,a.OUT_QUANTITY,
a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.out_order_number, a.material_base_info_id, a.line_number, a.material_code, a.material_name, a.bar_code, a.weight_limit, a.volume_limit,
a.quantity, a.already_allocation_quantity, a.allocation_quantity, a.picking_quantity, a.check_quantity, ROUND(GREATEST(0, IFNULL(a.quantity, 0) - IFNULL(a.check_quantity, 0), IFNULL(a.picking_quantity, 0) - IFNULL(a.check_quantity, 0)), 2) AS wait_check_quantity,
a.pack_id, a.pack_code, a.pack_name, a.pack_detail_id, a.unit_code, a.unit_name, a.material_warehouse_control_id, a.serial_number_manage,
@@ -96,6 +96,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="erpCurrGw" column="erp_curr_gw" />
<result property="erpPriceGw" column="erp_price_gw" />
<result property="amountGw" column="amount_gw" />
<result property="shelfJson" column="shelf_json" />
<result property="collectQuantity" column="collect_quantity" />
</resultMap>
@@ -109,7 +111,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a.lot_no ,
a.material_detail_id, a.organization_id, a.organization_name, a.top_organization_id, a.unique_id, a.in_order_number, a.material_base_info_id,
a.material_code, a.material_name, a.bar_code, a.quantity, a.receipt_quantity, a.shelves_quantity,
a.receipt_status, a.shelves_status, a.pack_id, a.pack_code, a.pack_name,
a.receipt_status, a.shelves_status, a.pack_id, a.pack_code, a.pack_name,a.SHELF_JSON,a.COLLECT_QUANTITY,
CASE
WHEN a.pack_detail_id IS NULL OR TRIM(a.pack_detail_id) = '' THEN NULL
ELSE CAST(a.pack_detail_id AS BIGINT)
@@ -154,6 +154,9 @@
<if test="shipperName != null and shipperName != ''">
and a.shipper_name like concat('%', #{shipperName}, '%')
</if>
<if test="shipperId != null and shipperId != ''">
and a.shipper_id like concat('%', #{shipperId}, '%')
</if>
<if test="createTimeStart != null and createTimeStart != ''">
and date_format(a.create_time, '%Y-%m-%d') &gt;= #{createTimeStart}
</if>
@@ -101,6 +101,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="pushByName" column="PUSH_BY_NAME" />
<result property="pushStatus" column="PUSH_STATUS" />
<result property="pushTime" column="PUSH_TIME" />
<result property="workUserId" column="WORK_USER_ID" />
<result property="workUserName" column="WORK_USER_NAME" />
<result property="workTaskReceiveStatus" column="WORK_TASK_RECEIVE_STATUS" />
<result property="taskIssueUserId" column="TASK_ISSUE_USER_ID" />
</resultMap>
<sql id="selectStockInOrderPo">
@@ -134,7 +138,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
a."TO", a.CONTACT_PERSON, a.VEHICLE_INFO, a.CONSIGNMENT_NO, a.TEL, a.DRIVER_SIGNATURE, a.FAX, a.DECLARATION_AREA, a.MANUFACTURER,
a.CUSTOMS_BROKER_INFO, a.DELIVERY_ADDRESS, a.ENTRY_EXIT_CUSTOMS, a.ORIGIN_DESTINATION_COUNTRY, a.CARRIER, a.CONTAINER_NO,
a.TRANSPORT_METHOD, a.SUPERVISION_METHOD, a.CUSTOMS_INSPECTION, a.NEED_CUSTOMS_DECLARATION, a.NEED_TRANSPORT,
a.WAREHOUSE_DATE, a.COMPLETION_TIME, a.ORDER_DATE,a.stock_in_order,a.business_order_no
a.WAREHOUSE_DATE, a.COMPLETION_TIME, a.ORDER_DATE,a.stock_in_order,a.business_order_no,a.WORK_USER_ID,a.WORK_TASK_RECEIVE_STATUS,a.TASK_ISSUE_USER_ID,a.WORK_USER_NAME
</sql>
<sql id="joinStockInOrderPo">
@@ -342,6 +346,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
#{item}
</foreach>
</if>
<if test="statusList != null and statusList.size > 0 ">
and a.status in
<foreach collection="statusList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="queryUserId != null">
and a.TASK_ISSUE_USER_ID like concat('%', #{queryUserId}, '%')
</if>
<!-- 报关相关字段查询条件 -->
<if test="to != null and to != ''">
and a."TO" like concat('%', #{to}, '%')
@@ -575,4 +589,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
AND in_order_number = #{inOrderNumber}
</select>
<select id="queryWarehouseUserId" resultType="java.lang.String">
SELECT WM_CONCAT(CORRELATION_ID) AS userIds
FROM NGWL_TEST_SYSTEM.ASSOCIATION_WAREHOUSE
WHERE warehouse_id = #{warehouseId} AND del_flag = 1 AND organization_id = #{organizationId} AND top_organization_id = #{topOrganizationId}
</select>
</mapper>
@@ -100,6 +100,10 @@
<result property="pushByName" column="PUSH_BY_NAME" />
<result property="pushStatus" column="PUSH_STATUS" />
<result property="pushTime" column="PUSH_TIME" />
<result property="workUserId" column="WORK_USER_ID" />
<result property="workUserName" column="WORK_USER_NAME" />
<result property="workTaskReceiveStatus" column="WORK_TASK_RECEIVE_STATUS" />
<result property="taskIssueUserId" column="TASK_ISSUE_USER_ID" />
</resultMap>
@@ -120,7 +124,7 @@
a.CUSTOMS_DECLARER_INFO,a.DELIVERY_ADDR,a.ENTRY_EXIT_CUSTOMS,a.DEPARTURE_ARRIVAL_COUNTRY,a.CARRIER,a.CONTAINER_NO,a.CONTAINER_NO_NAME,a.OUTBOUND_DATE,
a.COMPLETE_TIME,a.ORDER_DATE,a.TRANSPORT_MODE_CODE,a.TRANSPORT_MODE_NAME,a.SUPERVISION_MODE_CODE,a.SUPERVISION_MODE_NAME,
a.CUSTOMS_INSPECTION_FLAG,a.NEED_DECLARE_FLAG,a.NEED_TRANSPORT_FLAG,a.picture_app,a.billing_json,a.SETTLEMENT_CURRENCY,
a.SALESMAN_ID,a.SALESMAN_NAME,a.business_order_no,a.RETURN_QUANTITY
a.SALESMAN_ID,a.SALESMAN_NAME,a.business_order_no,a.RETURN_QUANTITY,a.WORK_USER_ID,a.WORK_TASK_RECEIVE_STATUS,a.TASK_ISSUE_USER_ID,a.WORK_USER_NAME
</sql>
@@ -170,6 +174,15 @@
</otherwise>
</choose>
</if>
<if test="statusList != null and statusList.size > 0 ">
and a.status in
<foreach collection="statusList" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</if>
<if test="queryUserId != null">
and a.TASK_ISSUE_USER_ID like concat('%', #{queryUserId}, '%')
</if>
<!-- 出库状态: 1-已创建 2-已审核 3-部分分配 4-已分配 5-拣货中 6-波次中 7-拣货完成 8-复核中 9-已出库 10-已取消 11-已关闭 -->
<if test="gtStatus != null ">
and a.status &gt; #{gtStatus}