盘点功能修改

busUser
anthonywj 2 years ago
parent b4e24759ef
commit 78af4fa9d7

@ -2,7 +2,6 @@ package com.glxp.api.admin.controller.inventory;
import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.Log;
import com.glxp.api.admin.constant.BusinessType;
import com.glxp.api.admin.entity.inventory.InvCountCodes;
import com.glxp.api.admin.req.inventory.FilterInvCountCodesRequest;
@ -15,6 +14,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.glxp.api.admin.annotation.Log;
import javax.annotation.Resource;
import java.util.List;
@ -51,7 +51,7 @@ public class InvCountCodesController {
* @param codesRequest
* @return
*/
@Log(title = "移除条码",businessType = BusinessType.DELETE)
@Log(title = "移除条码", businessType = BusinessType.DELETE)
@PostMapping("/invCount/codes/deleteCode")
public BaseResponse deleteCode(@RequestBody FilterInvCountCodesRequest codesRequest) {
if (null == codesRequest || StrUtil.isBlank(codesRequest.getOrderIdFk()) || StrUtil.isBlank(codesRequest.getProductId()) || StrUtil.isBlank(codesRequest.getCode())) {
@ -66,7 +66,7 @@ public class InvCountCodesController {
* @param invCountCodes
* @return
*/
@Log(title = "添加条码",businessType = BusinessType.INSERT)
@Log(title = "添加条码", businessType = BusinessType.INSERT)
@PostMapping("/invCount/codes/addCode")
public BaseResponse addCode(@RequestBody InvCountCodes invCountCodes) {
if (null == invCountCodes || StrUtil.isBlank(invCountCodes.getCode())) {

@ -1,17 +1,26 @@
package com.glxp.api.admin.controller.inventory;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.AuthRuleAnnotation;
import com.glxp.api.admin.annotation.Log;
import com.glxp.api.admin.constant.BusinessType;
import com.glxp.api.admin.entity.info.SystemPDFModuleEntity;
import com.glxp.api.admin.entity.info.SystemPDFTemplateEntity;
import com.glxp.api.admin.entity.inventory.InvCountOrder;
import com.glxp.api.admin.req.info.SystemPDFModuleRequest;
import com.glxp.api.admin.req.inout.DeleteRequest;
import com.glxp.api.admin.req.inventory.FilterInvCountOrderRequest;
import com.glxp.api.admin.req.inventory.FilterInvCountOrderSaveRequest;
import com.glxp.api.admin.req.inventory.InvCountOrderPrintRequest;
import com.glxp.api.admin.req.itextpdf.InspectionPDFTemplateRequest;
import com.glxp.api.admin.res.PageSimpleResponse;
import com.glxp.api.admin.res.inventory.InvCountOrderResponse;
import com.glxp.api.admin.service.info.SystemPDFModuleService;
import com.glxp.api.admin.service.info.SystemPDFTemplateService;
import com.glxp.api.admin.service.inventory.InvCountOrderService;
import com.glxp.api.admin.util.JasperUtils;
import com.glxp.api.common.enums.ResultEnum;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
@ -22,8 +31,13 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
*
@ -33,6 +47,10 @@ public class InvCountOrderController {
@Resource
private InvCountOrderService invCountOrderService;
@Resource
private SystemPDFTemplateService systemPDFTemplateService;
@Resource
private SystemPDFModuleService systemPDFModuleService;
/**
*
@ -57,7 +75,7 @@ public class InvCountOrderController {
* @param deleteRequest
* @return
*/
@Log(title = "删除盘点单据",businessType = BusinessType.DELETE)
@Log(title = "删除盘点单据", businessType = BusinessType.DELETE)
@PostMapping("/invCount/order/delete")
public BaseResponse delete(@RequestBody DeleteRequest deleteRequest) {
invCountOrderService.deleteOrder(deleteRequest.getId());
@ -69,7 +87,7 @@ public class InvCountOrderController {
*
* @return
*/
@Log(title = "网页新增盘点单据",businessType = BusinessType.INSERT)
@Log(title = "网页新增盘点单据", businessType = BusinessType.INSERT)
@PostMapping("/invCount/order/saveCountOrder")
public BaseResponse saveCountOrder(@RequestBody InvCountOrder invCountOrder, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
@ -103,7 +121,7 @@ public class InvCountOrderController {
* @param filterInvCountOrderRequest
* @return
*/
@Log(title = "更新盘点单据状态",businessType = BusinessType.UPDATE)
@Log(title = "更新盘点单据状态", businessType = BusinessType.UPDATE)
@PostMapping("/invCount/order/updateCountOrderStatus")
public BaseResponse updateCountOrderStatus(@RequestBody FilterInvCountOrderRequest filterInvCountOrderRequest) {
if (null == filterInvCountOrderRequest || StrUtil.isBlank(filterInvCountOrderRequest.getId()) || null == filterInvCountOrderRequest.getStatus()) {
@ -112,6 +130,52 @@ public class InvCountOrderController {
return invCountOrderService.updateCountOrderStatus(filterInvCountOrderRequest.getId(), filterInvCountOrderRequest.getStatus());
}
/**
*
*
* @param inspectionPDFTemplateRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/verifyTemplateFile")
public BaseResponse verifyTemplateFile(@RequestBody InspectionPDFTemplateRequest inspectionPDFTemplateRequest) {
if (null == inspectionPDFTemplateRequest) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "参数不能为空!");
}
//查询模板文件是否存在
SystemPDFModuleRequest systemPDFModuleRequest = new SystemPDFModuleRequest();
systemPDFModuleRequest.setId(inspectionPDFTemplateRequest.getModuleId());
SystemPDFModuleEntity systemPDFModule = systemPDFModuleService.findSystemPDFModule(systemPDFModuleRequest);
if (null == systemPDFModule) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "所属模块错误");
}
SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(String.valueOf(systemPDFModule.getTemplateId()));
if (null == systemPDFTemplateEntity) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "模板错误");
}
return ResultVOUtils.success(systemPDFModule.getTemplateId());
}
/**
*
*
* @param invCountOrderPrintRequest
* @param request
* @param response
* @throws Exception
*/
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/printOrder")
public void printOrder(@RequestBody InvCountOrderPrintRequest invCountOrderPrintRequest, HttpServletRequest request, HttpServletResponse response) throws Exception {
SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(invCountOrderPrintRequest.getTemplateId());
//打印单号标签
Map<String, Object> data = new HashMap<>(1);
data.put("orderId", invCountOrderPrintRequest.getOrderId());
Map<String, List<Map<String, Object>>> printData = new HashMap<>(1);
printData.put("data", Arrays.asList(data));
JasperUtils.jasperReport(request, response, JSONUtil.toJsonStr(printData), systemPDFTemplateEntity.getPath(), "pdf");
}
//------------------------------------------------------手持终端接口---------------------------------------------------------------
@ -120,7 +184,7 @@ public class InvCountOrderController {
*
* @return
*/
@Log(title = "手持终端新增盘点单据接口",businessType = BusinessType.INSERT)
@Log(title = "手持终端新增盘点单据接口", businessType = BusinessType.INSERT)
@AuthRuleAnnotation("")
@PostMapping("/invCount/order/saveCountOrderForPDA")
public BaseResponse saveCountOrderForPDA(@RequestBody @Valid FilterInvCountOrderSaveRequest filterInvCountOrderSaveRequest, BindingResult bindingResult) {

@ -1,7 +1,6 @@
package com.glxp.api.admin.controller.inventory;
import com.github.pagehelper.PageInfo;
import com.glxp.api.admin.annotation.Log;
import com.glxp.api.admin.constant.BusinessType;
import com.glxp.api.admin.entity.inventory.InvCountSettingEntity;
import com.glxp.api.admin.req.inventory.FilterInvCountSettingRequest;
@ -16,6 +15,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.glxp.api.admin.annotation.Log;
import javax.annotation.Resource;
import java.util.List;
@ -53,7 +53,7 @@ public class InvCountSettingController {
* @param invCountSettingEntity
* @return
*/
@Log(title = "更新盘点设置",businessType = BusinessType.UPDATE)
@Log(title = "更新盘点设置", businessType = BusinessType.UPDATE)
@PostMapping("/invCount/setting/update")
public BaseResponse updateCountSetting(@RequestBody InvCountSettingEntity invCountSettingEntity) {
return invCountSettingService.updateCountSetting(invCountSettingEntity);
@ -65,7 +65,7 @@ public class InvCountSettingController {
* @param invCountSettingEntity
* @return
*/
@Log(title = "添加盘点设置",businessType = BusinessType.INSERT)
@Log(title = "添加盘点设置", businessType = BusinessType.INSERT)
@PostMapping("/invCount/setting/add")
public BaseResponse addCountCountSetting(@RequestBody InvCountSettingEntity invCountSettingEntity) {
return invCountSettingService.addCountSetting(invCountSettingEntity);

@ -35,4 +35,12 @@ public interface CompanyProductRelevanceDao {
boolean deleteById(String id);
boolean deleteByRlId(String id);
/**
* IDID
*
* @param udiRlIdFk
* @return
*/
List<String> selectUnitFkByUdiRlIdFk(@Param("udiRlIdFk") String udiRlIdFk);
}

@ -86,4 +86,8 @@ public interface UdiRelevanceDao {
List<UdiRelevanceEntity> selectGroupByNameCode(@Param("nameCode") String nameCode);
List<UdiRelevanceResponse> selectByRelId(@Param("relId") String relId);
}

@ -65,4 +65,11 @@ public interface InvCountOrderDao {
* @return
*/
InvCountOrder selectByOrderId(@Param("orderId") String orderId);
/**
*
*
* @param orderId
*/
void deleteByOrderId(@Param("orderId") String orderId);
}

@ -69,11 +69,9 @@ public interface InvCountOrderDetailDao {
/**
* DI
*
* @param orderIdFk
* @param nameCode
* @return
*/
InvCountOrderDetail selectOrderDetail(@Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode, @Param("batchNo") String batchNo, @Param("produceDate") String produceDate, @Param("expireDate") String expireDate);
InvCountOrderDetail selectOrderDetail(@Param("productId") String productId, @Param("orderIdFk") String orderIdFk, @Param("nameCode") String nameCode, @Param("batchNo") String batchNo, @Param("produceDate") String produceDate, @Param("expireDate") String expireDate);
/**
*
@ -97,4 +95,4 @@ public interface InvCountOrderDetailDao {
* @return
*/
List<InvCountOrderDetail> selectDetailList(FilterInvCountOrderDetailRequest detailRequest);
}
}

@ -89,7 +89,6 @@ public interface InvProductDetailDao {
*
* @param invStorageCode
* @param invWarehouseCode
* @param code
* @return
*/
Long countBySpaceCode(@Param("invStorageCode") String invStorageCode, @Param("invWarehouseCode") String invWarehouseCode, @Param("invSpaceCode") String invSpaceCode);
@ -100,6 +99,6 @@ public interface InvProductDetailDao {
* @param code
* @return
*/
String selectSupIdByCode(String code);
List<String> selectSupIdByCode(String code);
}

@ -0,0 +1,21 @@
package com.glxp.api.admin.req.inventory;
import lombok.Data;
/**
*
*/
@Data
public class InvCountOrderPrintRequest {
/**
*
*/
private String orderId;
/**
* ID
*/
private String templateId;
}

@ -7,11 +7,13 @@ import com.glxp.api.admin.dao.basic.UdiRelevanceDao;
import com.glxp.api.admin.dao.inventory.InvCountCodesDao;
import com.glxp.api.admin.dao.inventory.InvCountOrderDetailDao;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
import com.glxp.api.admin.entity.inventory.InvCountCodes;
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
import com.glxp.api.admin.req.basic.FilterUdiInfoRequest;
import com.glxp.api.admin.req.inventory.FilterInvCountCodesRequest;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.service.basic.UdiRelevanceService;
import com.glxp.api.admin.service.inventory.InvCountCodesService;
import com.glxp.api.admin.util.FilterUdiUtils;
import com.glxp.api.common.enums.ResultEnum;
@ -57,7 +59,7 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
}
UdiEntity udi = FilterUdiUtils.getUdi(list.get(0).getCode());
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(list.get(0).getOrderIdFk(), udi.getUdi(), udi.getBatchNo(), udi.getProduceDate(), udi.getExpireDate());
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(null, list.get(0).getOrderIdFk(), udi.getUdi(), udi.getBatchNo(), udi.getProduceDate(), udi.getExpireDate());
InvCountCodes countCodes = list.get(0);
if (countCodes.getCount() == 1) {
@ -79,9 +81,15 @@ public class InvCountCodesServiceImpl implements InvCountCodesService {
public BaseResponse addCode(InvCountCodes invCountCodes) {
//解析条码
UdiEntity udi = FilterUdiUtils.getUdi(invCountCodes.getCode());
InvCountOrderDetail invCountOrderDetail = null;
List<UdiRelevanceEntity> udiRelevanceEntities = udiRelevanceDao.selectGroupByNameCode(udi.getUdi());
if (CollUtil.isNotEmpty(udiRelevanceEntities)) {
for (UdiRelevanceEntity udiRelevanceEntity : udiRelevanceEntities) {
invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(udiRelevanceEntity.getId(), invCountCodes.getOrderIdFk(), null, udi.getBatchNo(), null, null);
}
}
//查询单据详情,是否包含此产品
InvCountOrderDetail invCountOrderDetail = invCountOrderDetailDao.selectOrderDetail(invCountCodes.getOrderIdFk(), udi.getUdi(), udi.getBatchNo(), udi.getProduceDate(), udi.getExpireDate());
if (null == invCountOrderDetail) {
return ResultVOUtils.error(ResultEnum.DATA_NOT, "当前仓库或货位不存在此产品");
}

@ -11,6 +11,8 @@ import com.glxp.api.admin.constant.Constant;
import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.constant.ConstantType;
import com.glxp.api.admin.dao.basic.BussinessTypeDao;
import com.glxp.api.admin.dao.basic.CompanyProductRelevanceDao;
import com.glxp.api.admin.dao.basic.UdiRelevanceDao;
import com.glxp.api.admin.dao.basic.UnitMaintainDao;
import com.glxp.api.admin.dao.inout.CodesDao;
import com.glxp.api.admin.dao.inout.CodesTempDao;
@ -19,11 +21,13 @@ import com.glxp.api.admin.dao.inventory.*;
import com.glxp.api.admin.entity.auth.AuthAdmin;
import com.glxp.api.admin.entity.basic.BussinessTypeEntity;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
import com.glxp.api.admin.entity.basic.UnitMaintainEntity;
import com.glxp.api.admin.entity.inout.OrderEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inventory.*;
import com.glxp.api.admin.req.inventory.*;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.res.inventory.InvCountOrderResponse;
import com.glxp.api.admin.service.auth.CustomerService;
import com.glxp.api.admin.service.inventory.InvCountCodesService;
@ -73,6 +77,11 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
private InvCountCodesService invCountCodesService;
@Resource
private CodesDao codesDao;
@Resource
private CompanyProductRelevanceDao companyProductRelevanceDao;
@Resource
private UdiRelevanceDao udiRelevanceDao;
@Override
public List<InvCountOrderResponse> filterList(FilterInvCountOrderRequest filterInvCountOrderRequest) {
@ -88,9 +97,15 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
@Override
public void deleteOrder(String id) {
String orderId = invCountOrderDao.selectOrderIdById(id);
invCountOrderDao.deleteByPrimaryKey(Integer.valueOf(id));
invCountOrderDetailDao.deleteByOrderId(orderId);
invCountCodesDao.deleteByOrderId(orderId);
log.info("开始删除盘点单据,盘点单号: {}", orderId);
invCountOrderDao.deleteByOrderId(orderId);
if (invCountOrderDetailDao.countByOrderIdFk(orderId) > 0) {
invCountOrderDetailDao.deleteByOrderId(orderId);
}
if (invCountCodesDao.countByOrderIdFk(orderId) > 0) {
invCountCodesDao.deleteByOrderId(orderId);
}
log.info("盘点单据删除完成");
}
@Override
@ -190,10 +205,12 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
} else {
//审核通过
//根据单据详情生成相关单据
log.info("单据审核通过,开始生成扫码单据");
ThreadUtil.execAsync(() -> {
countOrderTransfer(invCountOrder);
});
log.info("单据审核通过后将会生成对应盘盈盘亏单是否继续?,开始生成扫码单据");
// ThreadUtil.execAsync(() -> {
//
// });
countTransferOrder(invCountOrder);
}
invCountOrderDao.updateByPrimaryKey(invCountOrder);
return ResultVOUtils.success();
@ -293,7 +310,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
warehouseEntity.setReCount(codeNum);
//设置供应商信息
setSupInfo(warehouseEntity);
setSupInfo(warehouseEntity, "loss");
outOrderCodes.add(warehouseEntity);
} else {
for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) {
@ -309,10 +326,15 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
int codeNum = invCountOrderDetail.getLossNum() / actCount;
warehouseEntity.setCount(codeNum);
warehouseEntity.setReCount(codeNum);
} else {
//修改实际数量
int actCount = invCountCodesService.getActCount(udi.getUdi());
warehouseEntity.setCount(actCount);
warehouseEntity.setReCount(actCount);
}
//设置供应商信息
setSupInfo(warehouseEntity);
setSupInfo(warehouseEntity, "loss");
outOrderCodes.add(warehouseEntity);
}
}
@ -326,7 +348,7 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
detailRequest.setStatus(1);
List<InvCountOrderDetail> profitDetailList = invCountOrderDetailDao.selectDetailList(detailRequest);
if (CollUtil.isNotEmpty(profitDetailList)) {
log.info("开始生成盘盈单据码明细");
log.info("开始生成盘盈单据码.明细");
//查询盘盈产品的库存详情
for (InvCountOrderDetail invCountOrderDetail : profitDetailList) {
//查询库存详情
@ -341,24 +363,34 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
List<String> countCodesList = invCountCodesDao.selectCodes(codesRequest);
List<String> invProductCodeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getOriginCode).collect(Collectors.toList());
List<String> profitCodes = CollUtil.subtractToList(countCodesList, invProductCodeList); //计算盘盈的条码
log.info("查询盘盈产品的库存详情");
if (CollUtil.isNotEmpty(invProductCodeList) && CollUtil.isEmpty(profitCodes)) {
/**
*
*
*/
WarehouseEntity warehouseEntity = buildWarehouse(invCountOrder, countCodesList.get(0), invCountOrderDetail.getProductId());
String code = null;
if (CollUtil.isNotEmpty(countCodesList)) {
code = countCodesList.get(0);
} else {
code = invProductCodeList.get(0);
}
WarehouseEntity warehouseEntity = buildWarehouse(invCountOrder, code, invCountOrderDetail.getProductId());
//判断此条码,是否有批次号和序列号
UdiEntity udi = FilterUdiUtils.getUdi(countCodesList.get(0));
UdiEntity udi = FilterUdiUtils.getUdi(code);
//修改码数量
int actCount = invCountCodesService.getActCount(udi.getUdi());
//使用此盘点单据详情的盘亏数量 / 实际数量,计算得出扫码数量
//使用此盘点单据详情的盘数量 / 实际数量,计算得出扫码数量
int codeNum = invCountOrderDetail.getProfitNum() / actCount;
warehouseEntity.setCount(codeNum);
warehouseEntity.setReCount(codeNum);
setSupInfo(warehouseEntity);
setSupInfo(warehouseEntity, "profit");
inOrderCodes.add(warehouseEntity);
log.info("添加库存条码");
} else {
for (String code : profitCodes) {
log.info("添加盘盈天马条码");
if (!verifyCodeExist(inOrderCodes, code)) {
//生成码详情
WarehouseEntity warehouseEntity = buildWarehouse(invCountOrder, code, invCountOrderDetail.getProductId());
@ -367,12 +399,17 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
if ((StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo())) || (StrUtil.isBlank(udi.getSerialNo()) && StrUtil.isNotBlank(udi.getBatchNo()))) {
//修改码数量
int actCount = invCountCodesService.getActCount(udi.getUdi());
//使用此盘点单据详情的盘数量 / 实际数量,计算得出扫码数量
//使用此盘点单据详情的盘数量 / 实际数量,计算得出扫码数量
int codeNum = invCountOrderDetail.getProfitNum() / actCount;
warehouseEntity.setCount(codeNum);
warehouseEntity.setReCount(codeNum);
} else {
//修改实际数量
int actCount = invCountCodesService.getActCount(udi.getUdi());
warehouseEntity.setCount(actCount);
warehouseEntity.setReCount(actCount);
}
setSupInfo(warehouseEntity);
setSupInfo(warehouseEntity, "profit");
inOrderCodes.add(warehouseEntity);
}
}
@ -425,19 +462,137 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
invCountOrderDao.updateByOrderId(invCountOrder);
}
/**
*
*/
private void countTransferOrder(InvCountOrder invCountOrder) {
List<InvCountSettingEntity> list = invCountSettingDao.filterList(null);
if (CollUtil.isEmpty(list)) {
log.error("未配置盘点单据设置参数,无法转单");
return;
}
InvCountSettingEntity invCountSettingEntity = list.get(0);
List<InvCountOrderDetail> orderDetailList = invCountOrderDetailDao.selectByOrderId(invCountOrder.getOrderId());
List<WarehouseEntity> lossCodesList = new ArrayList<>();
List<WarehouseEntity> profitCodesList = new ArrayList<>();
if (CollUtil.isNotEmpty(orderDetailList)) {
for (InvCountOrderDetail invCountOrderDetail : orderDetailList) {
if (IntUtil.value(invCountOrderDetail.getLossNum()) > 0) {
WarehouseEntity warehouseEntity = buildCodeEntity(invCountOrderDetail, invCountOrder, ConstantType.TYPE_OUT);
warehouseEntity.setSupId(getSupId(warehouseEntity));
lossCodesList.add(warehouseEntity);
}
if (IntUtil.value(invCountOrderDetail.getProfitNum()) > 0) {
WarehouseEntity warehouseEntity = buildCodeEntity(invCountOrderDetail, invCountOrder, ConstantType.TYPE_OUT);
warehouseEntity.setSupId(getSupId(warehouseEntity));
profitCodesList.add(warehouseEntity);
}
}
}
//生成盘亏出库单
if (CollUtil.isNotEmpty(lossCodesList)) {
OrderEntity order = createOrder(invCountSettingEntity, invCountOrder, ConstantType.TYPE_OUT);
lossCodesList.forEach(warehouseEntity -> {
warehouseEntity.setOrderId(order.getId());
warehouseEntity.setAction(order.getAction());
warehouseEntity.setFromCorp(order.getFromCorp());
warehouseEntity.setFromCorpId(order.getFromCorpId());
warehouseEntity.setCorpOrderId(order.getCorpOrderId());
});
orderDao.insertOrder(order);
codesTempDao.insertCodesTemp(lossCodesList);
}
//生成盘盈入库单
if (CollUtil.isNotEmpty(profitCodesList)) {
OrderEntity order = createOrder(invCountSettingEntity, invCountOrder, ConstantType.TYPE_PUT);
profitCodesList.forEach(warehouseEntity -> {
warehouseEntity.setOrderId(order.getId());
warehouseEntity.setAction(order.getAction());
warehouseEntity.setFromCorp(order.getFromCorp());
warehouseEntity.setFromCorpId(order.getFromCorpId());
warehouseEntity.setCorpOrderId(order.getCorpOrderId());
});
orderDao.insertOrder(order);
codesTempDao.insertCodesTemp(profitCodesList);
}
}
private WarehouseEntity buildCodeEntity(InvCountOrderDetail invCountOrderDetail, InvCountOrder invCountOrder, String mainAction) {
List<UdiRelevanceResponse> udiRelevanceResponses = udiRelevanceDao.selectByRelId(invCountOrderDetail.getProductId());
String code = FilterUdiUtils.transGlxpNoSerStr(udiRelevanceResponses, invCountOrderDetail);
WarehouseEntity warehouseEntity = new WarehouseEntity();
warehouseEntity.setOrderId(invCountOrder.getOrderId());
warehouseEntity.setCode(code);
warehouseEntity.setRelId(invCountOrderDetail.getProductId());
warehouseEntity.setMainAction(mainAction);
warehouseEntity.setActor(invCountOrder.getCreateUser());
warehouseEntity.setInvStorageCode(invCountOrder.getInvStorageCode());
warehouseEntity.setInvWarehouseCode(invCountOrder.getInvWarehouseCode());
warehouseEntity.setLocStorageCode(invCountOrder.getInvStorageCode());
UdiEntity udi = FilterUdiUtils.getUdi(code);
warehouseEntity.setBatchNo(udi.getBatchNo());
warehouseEntity.setProduceDate(udi.getProduceDate());
warehouseEntity.setExpireDate(udi.getExpireDate());
warehouseEntity.setSerialNo(udi.getSerialNo());
warehouseEntity.setNameCode(udi.getUdi());
if (mainAction.equals(ConstantType.TYPE_PUT)) {
warehouseEntity.setCount(invCountOrderDetail.getProfitNum());
warehouseEntity.setReCount(invCountOrderDetail.getProfitNum());
} else {
warehouseEntity.setCount(invCountOrderDetail.getLossNum());
warehouseEntity.setReCount(invCountOrderDetail.getLossNum());
}
return warehouseEntity;
}
/**
*
*
* @param warehouseEntity
* @param warehouseEntity
* @param countStatus
*/
private void setSupInfo(WarehouseEntity warehouseEntity) {
//设置供应商参数
String supId = invProductDetailDao.selectSupIdByCode(warehouseEntity.getCode());
if (StrUtil.isNotEmpty(supId)) {
warehouseEntity.setSupId(supId);
//查询供应商名称
String name = unitMaintainDao.selectNameByErpId(supId);
warehouseEntity.setSupName(name);
private void setSupInfo(WarehouseEntity warehouseEntity, String countStatus) {
/**
* 使
*
* ID
*
* 1
*/
if (countStatus.equals("loss")) {
log.info("生成盘亏单据条码供应商详情,条码信息:{}", warehouseEntity.getCode());
List<String> supIds = invProductDetailDao.selectSupIdByCode(warehouseEntity.getCode());
if (CollUtil.isNotEmpty(supIds)) {
if (supIds.size() == 1) {
//此产品只绑定了一个供应商若绑定了多个供应商则不填供应商ID字段生成单据之后会进入异常单据页面手动指定供应商
warehouseEntity.setSupId(supIds.get(0));
//查询供应商名称
String name = unitMaintainDao.selectNameByErpId(supIds.get(0));
warehouseEntity.setSupName(name);
}
}
} else {
log.info("生成盘盈单据条码供应商详情,条码信息:{}", warehouseEntity.getCode());
List<String> unitFkList = companyProductRelevanceDao.selectUnitFkByUdiRlIdFk(warehouseEntity.getRelId());
if (CollUtil.isNotEmpty(unitFkList)) {
if (unitFkList.size() == 1) {
//此产品只绑定了一个供应商若绑定了多个供应商则不填供应商ID字段生成单据之后会进入异常单据页面手动指定供应商
warehouseEntity.setSupId(unitFkList.get(0));
//查询供应商名称
String name = unitMaintainDao.selectNameByErpId(unitFkList.get(0));
warehouseEntity.setSupName(name);
}
}
}
}
@ -520,4 +675,14 @@ public class InvCountOrderServiceImpl implements InvCountOrderService {
return orderEntity;
}
private String getSupId(WarehouseEntity warehouseEntity) {
List<String> supIds = companyProductRelevanceDao.selectUnitFkByUdiRlIdFk(warehouseEntity.getRelId());
if (CollUtil.isNotEmpty(supIds) && supIds.size() == 1) {
return supIds.get(0);
}
return null;
}
}

@ -1,15 +1,21 @@
package com.glxp.api.admin.util;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.glxp.api.admin.constant.ConstantStatus;
import com.glxp.api.admin.entity.basic.UdiInfoEntity;
import com.glxp.api.admin.entity.basic.UdiEntity;
import com.glxp.api.admin.entity.basic.UdiRelevanceEntity;
import com.glxp.api.admin.entity.inout.WarehouseEntity;
import com.glxp.api.admin.entity.inventory.InvCountOrderDetail;
import com.glxp.api.admin.res.basic.UdiRelevanceResponse;
import com.glxp.api.admin.util.gs1.AI;
import com.glxp.api.admin.util.gs1.AIs;
import com.glxp.api.admin.util.gs1.Gs1128Decoder;
import com.glxp.api.admin.util.gs1.Gs1128Engine;
import java.util.List;
import java.util.Map;
/**
@ -316,4 +322,33 @@ public class FilterUdiUtils {
"#" + warehouseEntity.getBatchNo() + "#" + "#" + "#";
return udiCode;
}
public static String transGlxpNoSerStr(List<UdiRelevanceResponse> udiRelevanceResponses, InvCountOrderDetail invCountOrderDetail) {
UdiRelevanceResponse udiRelevanceResponse = getMinDi(udiRelevanceResponses);
String udiCode = "#" + udiRelevanceResponse.getNameCode() + "#" + invCountOrderDetail.getProduceDate() + "#" + invCountOrderDetail.getExpireDate() +
"#" + invCountOrderDetail.getBatchNo() + "#" + "#" + "#";
return udiCode;
}
public static UdiRelevanceResponse getMinDi(List<UdiRelevanceResponse> udiRelevanceResponses) {
if (udiRelevanceResponses.size() > 1) {
for (UdiRelevanceResponse temp : udiRelevanceResponses) {
if (temp.getIsUseDy() == 1) {
if (temp.getDiType() == ConstantStatus.DITYPE_SYDY) {
return temp;
}
} else {
if (temp.getDiType() == ConstantStatus.DITYPE_MAIN) {
return temp;
}
}
}
}
return udiRelevanceResponses.get(0);
}
}

@ -0,0 +1,25 @@
package com.glxp.api.admin.util;
public class IntUtil {
public static int value(Integer value) {
if (value == null)
return 0;
else return value.intValue();
}
public static long value(Long value) {
if (value == null)
return 0l;
else return value.longValue();
}
public static boolean value(Boolean value) {
if (value == null)
return false;
else return value;
}
}

@ -1,6 +1,6 @@
server.port=9992
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/udiwms_za?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.jdbc-url=jdbc:mysql://127.0.0.1:3306/udiwms_ph1?allowMultiQueries=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.hikari.connection-timeout=60000

@ -20,6 +20,7 @@
<!-- 2.1 level为 DEBUG 日志,时间滚动输出 -->
<appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 正在记录的日志文档的路径及文档名 -->
<file>${log.path}/web_debug.log</file>
<!--日志文档输出格式-->
<encoder>
@ -144,4 +145,4 @@
</springProfile>
<!-- 生产环境. -->
</configuration>
</configuration>

@ -107,11 +107,11 @@
basic_products.basicPrductRemak7,
basic_products.basicPrductRemak8
FROM company_product_relevance
inner JOIN basic_udirel
ON company_product_relevance.udiRlIdFk = basic_udirel.id
inner JOIN basic_products
ON basic_udirel.uuid = basic_products.uuid
left JOIN basic_corp on basic_corp.erpId = company_product_relevance.customerId
inner JOIN basic_udirel
ON company_product_relevance.udiRlIdFk = basic_udirel.id
inner JOIN basic_products
ON basic_udirel.uuid = basic_products.uuid
left JOIN basic_corp on basic_corp.erpId = company_product_relevance.customerId
<where>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
@ -129,18 +129,18 @@
<if test="unionCode != '' and unionCode != null">
and (
nameCode LIKE concat('%', #{unionCode}, '%')
or basic_udirel.ybbm LIKE concat('%', #{unionCode}, '%')
or basic_udirel.sptm LIKE concat('%', #{unionCode}, '%')
)
or basic_udirel.ybbm LIKE concat('%', #{unionCode}, '%')
or basic_udirel.sptm LIKE concat('%', #{unionCode}, '%')
)
</if>
<if test="thrPiId != '' and thrPiId != null">
and (
basic_udirel.thirdId LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId1 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId2 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId3 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId4 LIKE concat('%', #{thrPiId}, '%')
)
or basic_udirel.thirdId1 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId2 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId3 LIKE concat('%', #{thrPiId}, '%')
or basic_udirel.thirdId4 LIKE concat('%', #{thrPiId}, '%')
)
</if>
<if test="uuid != '' and uuid != null">
AND basic_udirel.uuid = #{uuid}
@ -295,13 +295,13 @@
customerId=#{customerId},
</if>
<if test="productId != null">
name=#{name},
productId=#{productId},
</if>
<if test="enterpriseId != null">
tel=#{tel},
enterpriseId=#{enterpriseId},
</if>
<if test="registrationId != null">
phone=#{phone},
registrationId=#{registrationId},
</if>
<if test="create_time != null">
create_time=#{create_time},
@ -331,8 +331,9 @@
<insert id="insertCompanyProductRelevance"
parameterType="com.glxp.api.admin.entity.basic.CompanyProductRelevanceEntity">
replace
INTO company_product_relevance(customerId, productId, enterpriseId, registrationId,
create_time, update_time, auditStatus, productUuid, udiRlIdFk, unitFk, price)
INTO company_product_relevance(customerId, productId, enterpriseId, registrationId,
create_time, update_time, auditStatus, productUuid, udiRlIdFk, unitFk,
price)
values (#{customerId},
#{productId},
#{enterpriseId},
@ -349,8 +350,9 @@
<insert id="importCompanyProductRelevance"
parameterType="com.glxp.api.admin.entity.basic.CompanyProductRelevanceEntity">
replace
INTO company_product_relevance(id, customerId, productId, enterpriseId, registrationId,
create_time, update_time, auditStatus, productUuid, udiRlIdFk, unitFk, price)
INTO company_product_relevance(id, customerId, productId, enterpriseId, registrationId,
create_time, update_time, auditStatus, productUuid, udiRlIdFk, unitFk,
price)
values (#{id},
#{customerId},
#{productId},
@ -376,4 +378,11 @@
FROM company_product_relevance
WHERE udiRlIdFk = #{id}
</delete>
<select id="selectUnitFkByUdiRlIdFk" resultType="java.lang.String">
select unitFk
from company_product_relevance
where udiRlIdFk = #{udiRlIdFk}
group by unitFk
</select>
</mapper>

@ -856,4 +856,18 @@
#{item.udplatCode}, #{item.supName}, #{item.price}, #{item.modifyTime}, #{item.dispatch}, #{item.groupBuy})
</foreach>
</insert>
<select id="selectByRelId" resultType="com.glxp.api.admin.res.basic.UdiRelevanceResponse">
select basic_udirel.*,
basic_products.nameCode,
basic_products.diType
from basic_udirel
INNER JOIN basic_products on basic_udirel.uuid = basic_products.uuid
<where>
<if test="relId != null">
basic_udirel.id = #{relId}
</if>
</where>
</select>
</mapper>

@ -414,4 +414,9 @@
from inv_count_order
where orderId = #{orderId}
</select>
<delete id="deleteByOrderId">
delete from inv_count_order
where orderId = #{orderId}
</delete>
</mapper>

@ -272,9 +272,9 @@
<insert id="batchInsert" keyColumn="id" keyProperty="id" parameterType="map" useGeneratedKeys="true">
insert into inv_count_order_detail
(orderIdFk, productId, nameCode, batchNo, produceDate, expireDate, serialNo, countNum, invNum,
profitNum, lossNum, `status`)
values
(orderIdFk, productId, nameCode, batchNo, produceDate, expireDate, serialNo, countNum, invNum,
profitNum, lossNum, `status`)
values
<foreach collection="list" item="item" separator=",">
(#{item.orderIdFk,jdbcType=VARCHAR}, #{item.productId,jdbcType=VARCHAR}, #{item.nameCode,jdbcType=VARCHAR},
#{item.batchNo,jdbcType=VARCHAR},
@ -286,7 +286,7 @@
<delete id="deleteByOrderId">
delete
from io_order_detail
from inv_count_order_detail
where orderIdFk = #{orderId}
</delete>
@ -306,8 +306,8 @@
<select id="filterCountDetail" resultType="com.glxp.api.admin.res.inventory.InvCountOrderDetailResponse">
select od.*, ip.productsName productName, ip.ggxh, ip.ylqxzcrbarmc, ip.zczbhhzbapzbh
from inv_count_order_detail od
left join inv_count_order ico on od.orderIdFk = ico.orderId
left join inv_product ip on od.productId = ip.relIdFk
left join inv_count_order ico on od.orderIdFk = ico.orderId
left join inv_product ip on od.productId = ip.relIdFk
where od.orderIdFk = #{orderIdFk}
and ip.invStorageCode = ico.invStorageCode
and ip.invWarehouseCode = ico.invWarehouseCode
@ -325,6 +325,9 @@
select *
from inv_count_order_detail
<where>
<if test="productId != null and productId != ''">
AND productId = #{productId}
</if>
<if test="nameCode != null and nameCode != ''">
AND nameCode = #{nameCode}
</if>
@ -358,7 +361,8 @@
</update>
<select id="selectDetailList" resultMap="BaseResultMap">
select <include refid="Base_Column_List" />
select
<include refid="Base_Column_List"/>
from inv_count_order_detail
<where>
<if test="orderIdFk != null and orderIdFk != ''">
@ -369,4 +373,4 @@
</if>
</where>
</select>
</mapper>
</mapper>

@ -72,7 +72,7 @@
resultType="com.glxp.api.admin.res.inventory.InvProductDetailJoinResponse">
SELECT inv_product_detail.*, io_order.fromCorp, io_order.fromCorpId
FROM inv_product_detail
inner join io_order on inv_product_detail.orderIdFk = io_order.id
inner join io_order on inv_product_detail.orderIdFk = io_order.id
<where>
<if test="productIdFk != '' and productIdFk != null">
AND productIdFk = #{productIdFk}
@ -127,11 +127,11 @@
<insert id="insertInvProductDetail" keyProperty="id"
parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
insert INTO inv_product_detail
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode,
invSpaceCode)
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode,
invSpaceCode)
values (#{code},
#{productIdFk}, #{orderIdFk},
#{customerId}, #{mainAction}, #{action}, #{count}, #{updateTime},
@ -142,11 +142,11 @@
<insert id="insertInvProductDetails" keyProperty="id"
parameterType="com.glxp.api.admin.entity.inventory.InvProductDetailEntity">
insert INTO inv_product_detail
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode, invSpaceCode)
values
(code, productIdFk, orderIdFk, customerId, mainAction, `action`, `count`, updateTime,
purchaseType, batchNo, productionDate, expireDate, unitFk, stockIdFk, supId, originCode,
invStorageCode,
invWarehouseCode, invSpaceCode)
values
<foreach collection="invProductDetailEntitys" item="item" index="index"
separator=",">
@ -358,13 +358,13 @@
inv_warehouse_sub.name as invWarehouseName,
inv_space.name as invSpaceName
from inv_product_detail pd
left join basic_udirel bu on pd.productIdFk = bu.id
left join basic_products bp on bp.uuid = bu.uuid
left join inv_warehouse on pd.invStorageCode = inv_warehouse.code
left join inv_warehouse_sub on pd.invWarehouseCode = inv_warehouse_sub.code
left join inv_space
on pd.invSpaceCode = inv_space.code and inv_space.invStorageCode = pd.invStorageCode and
inv_space.invWarehouseCode = pd.invWarehouseCode
left join basic_udirel bu on pd.productIdFk = bu.id
left join basic_products bp on bp.uuid = bu.uuid
left join inv_warehouse on pd.invStorageCode = inv_warehouse.code
left join inv_warehouse_sub on pd.invWarehouseCode = inv_warehouse_sub.code
left join inv_space
on pd.invSpaceCode = inv_space.code and inv_space.invStorageCode = pd.invStorageCode and
inv_space.invWarehouseCode = pd.invWarehouseCode
<where>
<if test="invStorageCode != null and invStorageCode != ''">
AND pd.invStorageCode = #{invStorageCode}
@ -381,9 +381,9 @@
<select id="selectInvProductDetailIds" resultType="java.lang.Integer">
select id
from inv_product_detail
where invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
and originCode in
where invStorageCode = #{invStorageCode}
and invWarehouseCode = #{invWarehouseCode}
and originCode in
<foreach collection="codeArray" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
@ -392,7 +392,7 @@
<update id="batchBindSpace">
update inv_product_detail
set invSpaceCode = #{invSpaceCode}
where id in
where id in
<foreach collection="ids" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
@ -438,6 +438,5 @@
select supId
from inv_product_detail
where originCode = #{code}
limit 1
</select>
</mapper>

Loading…
Cancel
Save