fix:库存物资盘点统计

lh_dev_fifo
chenhc 8 months ago
parent 9bbe2a8eb9
commit 0a9bbc74c3

@ -56,6 +56,7 @@ import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
@ -163,6 +164,24 @@ public class IoOrderDetailResultController extends BaseController {
return ResultVOUtils.page(pageInfo);
}
/**
*
*
* @param filterInvCountOrderSumResultRequest
* @return
*/
@AuthRuleAnnotation("")
@GetMapping("/udiwms/inout/resultDetail/getInvCountOrderSumList")
public BaseResponse getInvCountOrderSumList(FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest) {
PageInfo<InvCountOrderSumResultResponse> pageInfo = new PageInfo<>(getInvCountOrderSumResult(filterInvCountOrderSumResultRequest));
return ResultVOUtils.page(pageInfo);
}
private List<InvCountOrderSumResultResponse> getInvCountOrderSumResult(FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest) {
List<InvCountOrderSumResultResponse> list = orderDetailResultService.getInvCountOrderSumResult(filterInvCountOrderSumResultRequest);
return list;
}
private List<IoOrderDetailDeptProductResultResponse> getOrderDeptProductResult(FilterOrderDetailDeptProductResultRequest orderDetailResultRequest) {
FilterOrderRequest filterOrderRequest = new FilterOrderRequest();
@ -555,6 +574,74 @@ public class IoOrderDetailResultController extends BaseController {
}
/**
*
*
* @param filterInvCountOrderSumResultRequest
* @return
*/
@AuthRuleAnnotation("")
@PostMapping("/udiwms/inout/resultDetail/printInvCountOrderSumList")
public BaseResponse filterOrderPrintDept(@RequestBody FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest, HttpServletRequest request, HttpServletResponse response) throws JRException, IOException {
List<InvCountOrderSumResultResponse> ioOrderDetailResultResponseList = new ArrayList<>();
SystemPDFTemplateEntity systemPDFTemplateEntity = systemPDFTemplateService.selectById(filterInvCountOrderSumResultRequest.getTemplateId());
LambdaQueryWrapper<SysPdfTemplateRelevanceBizEntity> qw = new LambdaQueryWrapper<>();
qw.eq(SysPdfTemplateRelevanceBizEntity::getTemplateId,systemPDFTemplateEntity.getId());
qw.last("limit 1");
SysPdfTemplateRelevanceBizEntity sysPdfTemplateRelevanceBizEntity = systemPDFTemplateRelevanceBizService.getOne(qw);
//打印单号标签
Map<String, Object> data = new HashMap<>(1);
List<Object> list = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateStr = sdf.format(new Date());
//按选入打印
if (filterInvCountOrderSumResultRequest.getList() != null && filterInvCountOrderSumResultRequest.getList().size() > 0) {
ioOrderDetailResultResponseList = filterInvCountOrderSumResultRequest.getList();
} else {
ioOrderDetailResultResponseList = orderDetailResultService.getInvCountOrderSumResult(filterInvCountOrderSumResultRequest);
}
int i = 1;
for (InvCountOrderSumResultResponse item : ioOrderDetailResultResponseList) {
//组装数据
Map<String, Object> ioOrderDetailResultData = new HashMap<>();
ioOrderDetailResultData.put("index", String.valueOf(i));
ioOrderDetailResultData.put("cpmctymc", item.getCpmctymc() == null ? ' ' : item.getCpmctymc());
ioOrderDetailResultData.put("invStorageName", item.getInvStorageName() == null ? '/' : item.getInvStorageName());
ioOrderDetailResultData.put("ggxh", item.getGgxh() == null ? '/' : item.getGgxh());
ioOrderDetailResultData.put("measname", item.getMeasname() == null ? '/' : item.getMeasname());
ioOrderDetailResultData.put("price", item.getPrice() == null ? "0.00" : item.getPrice());
ioOrderDetailResultData.put("countNum", item.getCountNum() == null ? '0' : item.getCountNum());
ioOrderDetailResultData.put("countNumPrice", item.getCountNumPrice() == null ? "0.00" : item.getCountNumPrice());
ioOrderDetailResultData.put("invNum", item.getInvNum() == null ? '0' : item.getInvNum());
ioOrderDetailResultData.put("invNumPrice", item.getInvNumPrice() == null ? "0.00" : item.getInvNumPrice());
ioOrderDetailResultData.put("relNume", item.getRelNume() == null ? '0' : item.getRelNume());
ioOrderDetailResultData.put("relNumPrice", item.getRelNumPrice() == null ? "0.00" : item.getRelNumPrice());
ioOrderDetailResultData.put("startAduditTime", filterInvCountOrderSumResultRequest.getStartAduditTime() == null ? ' ' : filterInvCountOrderSumResultRequest.getStartAduditTime());
ioOrderDetailResultData.put("endAduditTime", filterInvCountOrderSumResultRequest.getEndAduditTime() == null ? ' ' : filterInvCountOrderSumResultRequest.getEndAduditTime());
ioOrderDetailResultData.put("locInvName", filterInvCountOrderSumResultRequest.getLocInvName() == null ? ' ' : filterInvCountOrderSumResultRequest.getLocInvName());
ioOrderDetailResultData.put("employeeName", filterInvCountOrderSumResultRequest.getEmployeeName() == null ? ' ' : filterInvCountOrderSumResultRequest.getEmployeeName());
ioOrderDetailResultData.put("exportTime", dateStr);
ioOrderDetailResultData.put("remark1", sysPdfTemplateRelevanceBizEntity.getRemark1() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark1());
ioOrderDetailResultData.put("remark2", sysPdfTemplateRelevanceBizEntity.getRemark2() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark2());
ioOrderDetailResultData.put("remark3", sysPdfTemplateRelevanceBizEntity.getRemark3() == null ? ' ' : sysPdfTemplateRelevanceBizEntity.getRemark3());
list.add(ioOrderDetailResultData);
i++;
}
data.put("data", list);
String param = JSON.toJSONString(data);
JasperUtils.jasperReport(request, response, param, filePath + "pdf/template/" + systemPDFTemplateEntity.getPath(), "pdf");
return ResultVOUtils.success();
}
/**
*

@ -2,7 +2,9 @@ package com.glxp.api.dao.inv;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.inv.InvCountOrderEntity;
import com.glxp.api.req.inout.FilterInvCountOrderSumResultRequest;
import com.glxp.api.req.inv.FilterInvCountOrderRequest;
import com.glxp.api.res.inout.InvCountOrderSumResultResponse;
import com.glxp.api.res.inv.InvCountOrderResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@ -60,4 +62,5 @@ public interface InvCountOrderMapper extends BaseMapper<InvCountOrderEntity> {
*/
void deleteByOrderId(@Param("orderId") String orderId);
List<InvCountOrderSumResultResponse> getInvCountOrderSumResult(FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest);
}

@ -0,0 +1,44 @@
package com.glxp.api.req.inout;
import com.glxp.api.res.inout.InvCountOrderSumResultResponse;
import com.glxp.api.res.inout.IoOrderDetailDeptProductResultResponse;
import com.glxp.api.util.page.ListPageRequest;
import lombok.Data;
import java.util.List;
@Data
public class FilterInvCountOrderSumResultRequest extends ListPageRequest {
private String startAduditTime; //起始日期
private String endAduditTime; //结束日期
private String fromCorp;
private String invCode;
private String actionType;
private String manufacturer;
private String zczbhhzbapzbh;
private Boolean isStack;
private String invoiceEncode;
private String templateId;
private List<String> actions;
private List<InvCountOrderSumResultResponse> list;
private String action;
private String mainAction;
private Integer inoutPrintStatus;
private String invName;
private String employeeName;
private String fromInvName;
private String locInvName;
private String confirmStarTime; //发票确认起始日期
private String confirmEndTime; //发票确认结束日期
private String corpName;//供应商名字
private String fromInvCode;//供应商名字
private Boolean groupBuy; //是否集采产品
private Integer hcType;
private List<String> fromInvCodes;
}

@ -0,0 +1,61 @@
package com.glxp.api.res.inout;
import lombok.Data;
import java.math.BigDecimal;
/**
* VO
*/
@Data
public class InvCountOrderSumResultResponse {
/**
*
*/
private String cpmctymc;
/**
*
*/
private String invStorageName;
/**
*
*/
private String ggxh;
/**
*
*/
private String measname;
/**
*
*/
private BigDecimal price;
/**
*
*/
private Integer countNum;
/**
*
*/
private BigDecimal countNumPrice;
/**
*
*/
private Integer invNum;
/**
*
*/
private BigDecimal invNumPrice;
/**
*
*/
private Integer relNume;
/**
*
*/
private BigDecimal relNumPrice;
}

@ -2,10 +2,7 @@ package com.glxp.api.service.inout;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderDetailResultEntity;
import com.glxp.api.req.inout.CptTraceRequest;
import com.glxp.api.req.inout.FilterOrderDetailDeptProductResultRequest;
import com.glxp.api.req.inout.FilterOrderDetailDeptResultRequest;
import com.glxp.api.req.inout.FilterOrderDetailResultRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.res.inout.*;
import java.util.List;
@ -37,4 +34,6 @@ public interface IoOrderDetailResultService {
List<IoOrderDetailDeptResultResponse> getOrderDeptSupResult(FilterOrderDetailDeptResultRequest orderDetailResultRequest);
List<IoOrderDetailDeptProductResultResponse> getOrderDeptProductResult(FilterOrderDetailDeptProductResultRequest orderDetailResultRequest);
List<InvCountOrderSumResultResponse> getInvCountOrderSumResult(FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest);
}

@ -5,13 +5,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.PageHelper;
import com.glxp.api.dao.auth.InvWarehouseDao;
import com.glxp.api.dao.inout.IoOrderDetailResultDao;
import com.glxp.api.dao.inv.InvCountOrderMapper;
import com.glxp.api.entity.inout.IoOrderDetailCodeEntity;
import com.glxp.api.entity.inout.IoOrderDetailResultEntity;
import com.glxp.api.req.auth.FilterInvSubWarehouseRequest;
import com.glxp.api.req.inout.CptTraceRequest;
import com.glxp.api.req.inout.FilterOrderDetailDeptProductResultRequest;
import com.glxp.api.req.inout.FilterOrderDetailDeptResultRequest;
import com.glxp.api.req.inout.FilterOrderDetailResultRequest;
import com.glxp.api.req.inout.*;
import com.glxp.api.res.auth.InvSubWarehouseResponse;
import com.glxp.api.res.inout.*;
import com.glxp.api.service.inout.IoOrderDetailResultService;
@ -29,6 +27,8 @@ public class IoOrderDetailResultServiceImpl implements IoOrderDetailResultServic
@Resource
IoOrderDetailResultDao orderDetailResultDao;
@Resource
InvCountOrderMapper invCountOrderMapper;
@Override
public List<IoOrderDetailResultEntity> findByOrderId(String orderId) {
@ -139,4 +139,15 @@ public class IoOrderDetailResultServiceImpl implements IoOrderDetailResultServic
}
return orderDetailResultDao.filterOrderDeptProductList(orderDetailResultRequest);
}
@Override
public List<InvCountOrderSumResultResponse> getInvCountOrderSumResult(FilterInvCountOrderSumResultRequest filterInvCountOrderSumResultRequest) {
if (null == filterInvCountOrderSumResultRequest) {
return Collections.emptyList();
}
if (null != filterInvCountOrderSumResultRequest.getPage() && null != filterInvCountOrderSumResultRequest.getLimit()) {
PageHelper.offsetPage((filterInvCountOrderSumResultRequest.getPage() - 1) * filterInvCountOrderSumResultRequest.getLimit(), filterInvCountOrderSumResultRequest.getLimit());
}
return invCountOrderMapper.getInvCountOrderSumResult(filterInvCountOrderSumResultRequest);
}
}

@ -106,4 +106,46 @@
from inv_count_order
where orderId = #{orderId}
</delete>
<select id="getInvCountOrderSumResult" resultType="com.glxp.api.res.inout.InvCountOrderSumResultResponse">
SELECT a.cpmctymc,
a.invStorageName,
a.ggxh,
a.measname,
a.price,
SUM(IFNULL(a.countNum, 0)) as countNum,
a.price * SUM(IFNULL(a.countNum, 0)) as countNumPrice,
SUM(IFNULL(a.invNum, 0)) as invNum,
a.price * SUM(IFNULL(a.invNum, 0)) as invNumPrice,
SUM(IFNULL(a.countNum, 0)) - SUM(IFNULL(a.invNum, 0)) as relNume,
a.price * SUM(IFNULL(a.countNum, 0)) - SUM(IFNULL(a.invNum, 0)) as relNumPrice
FROM (
select bp.cpmctymc,
ws.name as invStorageName,
bp.ggxh,
bp.measname,
bp.price,
cod.countNum,
cod.invNum
from inv_count_order co
left join inv_count_order_detail cod on co.orderId = cod.orderIdFk
left join basic_udirel bu on bu.id = cod.productId
left join basic_products bp on bp.uuid = bu.uuid
left join auth_warehouse ws on co.invStorageCode = ws.code
<where>
AND co.status = 2
<if test="invCode != null and invCode != ''">
AND co.invStorageCode = #{invCode}
</if>
<if test="startAduditTime != null and startAduditTime != '' and endAduditTime != null and endAduditTime != ''">
AND date_format(co.auditTime, '%Y-%m-%d') between date_format(#{startAduditTime}, '%Y-%m-%d') and
date_format(#{endAduditTime}, '%Y-%m-%d')
</if>
</where>
order by co.updateTime desc
) a
GROUP BY cpmctymc, invStorageName, ggxh, measname, price
order by cpmctymc
</select>
</mapper>

Loading…
Cancel
Save