1、单据上传统计界面增加采购和销售 码数进行计算开发

dev_unify
qiuyt 8 months ago
parent bf931019d6
commit 8be0b3b5a8

@ -16,9 +16,13 @@ import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.UserWorkResponse;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.CollectOrderUploadCountResponse;
import com.glxp.api.res.collect.IoCollectOrderResponse;
import com.glxp.api.service.basic.BasicCollectUserService;
import com.glxp.api.service.collect.IoCollectOrderBackupService;
import com.glxp.api.service.collect.IoCollectOrderBizBackupService;
import com.glxp.api.service.collect.IoCollectOrderService;
import io.swagger.models.auth.In;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -39,11 +43,13 @@ import java.util.stream.Collectors;
public class IoCollectOrderBackupController extends BaseController {
@Resource
IoCollectOrderBackupService ioCollectOrderBackupService;
private IoCollectOrderBackupService ioCollectOrderBackupService;
@Resource
private BasicCollectUserService basicCollectUserService;
@Resource
private IoCollectOrderBizBackupService ioCollectOrderBizBackupService;
@PostMapping("/udiwms/basic/collect/orderFinish/filter")
public BaseResponse filterOrder(@RequestBody CollectOrderRequest collectOrderRequest) {
@ -131,15 +137,42 @@ public class IoCollectOrderBackupController extends BaseController {
*/
@PostMapping ("/udiwms/basic/collect/orderFinish/uploadCount")
public BaseResponse uploadCount(@RequestBody CollectOrderUploadCountRequest collectOrderUploadCountRequest) {
CollectOrderUploadCountResponse collectOrderUploadCountResponse = new CollectOrderUploadCountResponse();
if(collectOrderUploadCountRequest.getStartTime()!=null
&& collectOrderUploadCountRequest.getEndTime() !=null){
collectOrderUploadCountRequest.setStartTime(collectOrderUploadCountRequest.getStartTime()+" 00:00:00");
collectOrderUploadCountRequest.setEndTime(collectOrderUploadCountRequest.getEndTime()+" 23:59:59");
List<Map<String, Object>> map = ioCollectOrderBackupService.listMaps(new QueryWrapper<IoCollectOrderBackup>()
}
List<Map<String, Object>> list = ioCollectOrderBackupService.listMaps(new QueryWrapper<IoCollectOrderBackup>()
.groupBy("uploadStatus")
.between(collectOrderUploadCountRequest.getStartTime()!=null
&& collectOrderUploadCountRequest.getEndTime() !=null
,"updateTime",collectOrderUploadCountRequest.getStartTime()+" 00:00:00",collectOrderUploadCountRequest.getEndTime()+" 23:59:59")
,"updateTime",collectOrderUploadCountRequest.getStartTime(),collectOrderUploadCountRequest.getEndTime())
.select("uploadStatus","count(1) as count")
);
return ResultVOUtils.success(map);
Long notUploadingCount=0L;
Long alreadyUploadingCount=0L;
Long uploadingFailCount=0L;
if(list!=null && list.size() >0){
for (Map<String, Object> stringObjectMap : list) {
if(1 == (Integer)stringObjectMap.get("uploadStatus")){
notUploadingCount += (Long) stringObjectMap.get("count");
}else if(2 == (Integer)stringObjectMap.get("uploadStatus")){
alreadyUploadingCount += (Long)stringObjectMap.get("count");
}else if(3 == (Integer)stringObjectMap.get("uploadStatus")){
uploadingFailCount += (Long)stringObjectMap.get("count");
}
}
}
collectOrderUploadCountResponse.setNotUploadingCount(notUploadingCount);
collectOrderUploadCountResponse.setAlreadyUploadingCount(alreadyUploadingCount);
collectOrderUploadCountResponse.setUploadingFailCount(uploadingFailCount);
// 总上传码数量 获取采购上传率 销售上传率 计算
ioCollectOrderBizBackupService.CalculatedUploadRate( collectOrderUploadCountRequest,collectOrderUploadCountResponse);
return ResultVOUtils.success(collectOrderUploadCountResponse);
}
}

@ -14,4 +14,5 @@ import java.util.List;
public interface IoCollectOrderBackupMapper extends BaseMapper<IoCollectOrderBackup> {
List<IoCollectOrderResponse> filterList(CollectOrderRequest collectOrderRequest);
}

@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.glxp.api.entity.collect.IoCollectOrderBizBackup;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -14,4 +16,7 @@ import java.util.List;
public interface IoCollectOrderBizBackupMapper extends BaseMapper<IoCollectOrderBizBackup> {
List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest);
List<CollectOrderBizResponse> getList(CollectOrderUploadCountRequest collectOrderUploadCountRequest);
}

@ -21,6 +21,7 @@ import com.glxp.api.res.thrsys.ThrCorpsResponse;
import com.glxp.api.res.thrsys.ThrProductsResponse;
import com.glxp.api.res.thrsys.UdiwmsWarehouseDetail;
import com.glxp.api.service.thrsys.ThrSystemService;
import com.glxp.api.util.OkHttpCli;
import lombok.extern.slf4j.Slf4j;
import okhttp3.*;
import org.apache.commons.lang3.exception.ExceptionUtils;
@ -28,8 +29,8 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* HttpClient
@ -44,6 +45,8 @@ public class ErpBasicClient {
HttpOkClient httpOkClient;
@Resource
private ThrSystemService basicThirdSysService;
@Resource
private OkHttpCli okHttpCli;
/**
*
@ -497,4 +500,23 @@ public class ErpBasicClient {
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
}
public BaseResponse<Map<String,String[]>> getBuyType(String thirdSys) {
ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectByThirdId(thirdSys);
String url = basicThirdSysEntity.getThridUrl() + "/udiwms/erp/getBuyType";
try {
String response = okHttpCli.doGet(url);
if (StrUtil.isEmpty(response)) {
return ResultVOUtils.error(500, "连接第三方系统接口服务出错");
}
BaseResponse<Map<String,String[]>> listBaseResponse =
JSONObject.parseObject(response, new TypeReference<BaseResponse<Map<String,String[]>>>() {
});
return listBaseResponse;
} catch (Exception e) {
log.error("获取交易类型集合", e);
return ResultVOUtils.error(500, "连接第三方系统接口服务出错"+e.getMessage());
}
}
}

@ -163,6 +163,9 @@ public class CollectOrderBizResponse {
private String workplaceQueueCode;
private String spec;
private String busType;
private Integer uploadStatus;
// /**
// * 未赋码数量
// */

@ -0,0 +1,22 @@
package com.glxp.api.res.collect;
import io.swagger.models.auth.In;
import lombok.Data;
import java.math.BigDecimal;
/**
*
* qyt
*/
@Data
public class CollectOrderUploadCountResponse {
private Long notUploadingCount;
private Long alreadyUploadingCount;
private Long uploadingFailCount;
private BigDecimal buyerCentage;
private BigDecimal salesCentage;
private Integer codeCount;
}

@ -393,4 +393,7 @@ public class IoCollectOrderBackupService extends ServiceImpl<IoCollectOrderBacku
ioCheckInoutService.checkSecond(orderEntity);
return ResultVOUtils.success("更新成功");
}
}

@ -3,15 +3,20 @@ package com.glxp.api.service.collect;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.dao.collect.IoCollectOrderBizBackupMapper;
import com.glxp.api.entity.collect.IoCollectOrderBizBackup;
import com.glxp.api.http.ErpBasicClient;
import com.glxp.api.req.collect.CollectOrderBizRequest;
import com.glxp.api.req.collect.CollectOrderUploadCountRequest;
import com.glxp.api.res.collect.CollectOrderBizResponse;
import com.glxp.api.res.collect.CollectOrderUploadCountResponse;
import io.swagger.models.auth.In;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;
import java.math.BigDecimal;
import java.util.*;
@Service
@ -20,6 +25,8 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi
@Resource
IoCollectOrderBizBackupMapper ioCollectOrderBizBackupMapper;
@Resource
private ErpBasicClient erpBasicClient;
public List<CollectOrderBizResponse> filterList(CollectOrderBizRequest collectOrderRequest) {
if (collectOrderRequest == null) {
@ -32,4 +39,79 @@ public class IoCollectOrderBizBackupService extends ServiceImpl<IoCollectOrderBi
List<CollectOrderBizResponse> data = ioCollectOrderBizBackupMapper.filterList(collectOrderRequest);
return data;
}
/**
*
*/
public void CalculatedUploadRate(CollectOrderUploadCountRequest collectOrderUploadCountRequest, CollectOrderUploadCountResponse collectOrderUploadCountResponse) {
List<CollectOrderBizResponse> list = ioCollectOrderBizBackupMapper.getList(collectOrderUploadCountRequest);
Map<String, String[]> buyTypeMap = new HashMap<>();
List<String> buyTypeBuyer = new ArrayList<>();
List<String> buyTypeSales = new ArrayList<>();
Integer buyerCount = 0;
Integer salesCount = 0;
Integer buyerScanCount = 0;
Integer salesScanCount = 0;
BigDecimal buyerCentage = new BigDecimal(0);
BigDecimal salesCentage = new BigDecimal(0);
Integer codeCount = 0;
if (list != null && list.size() > 0) {
BaseResponse<Map<String, String[]>> baseResponse = erpBasicClient.getBuyType("thirdId");
if (baseResponse.getCode() == 20000) {
buyTypeMap = baseResponse.getData();
buyTypeBuyer = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3501")));
buyTypeBuyer.addAll(Arrays.asList(buyTypeMap.get("buyType_3502")));
buyTypeSales = new ArrayList<>(Arrays.asList(buyTypeMap.get("buyType_3505")));
buyTypeSales.addAll(Arrays.asList(buyTypeMap.get("buyType_3506")));
}
for (CollectOrderBizResponse collectOrderBizResponse : list) {
for (String buyType : buyTypeBuyer) {
if (buyType.equals(collectOrderBizResponse.getBusType())) {
buyerCount += collectOrderBizResponse.getCount();
// 只有已上传的码才是正确的码
if (2 == collectOrderBizResponse.getUploadStatus()) {
buyerScanCount += collectOrderBizResponse.getScanCount();
}
}
}
for (String buyType : buyTypeSales) {
if (buyType.equals(collectOrderBizResponse.getBusType())) {
salesCount += collectOrderBizResponse.getCount();
if (2 == collectOrderBizResponse.getUploadStatus()) {
salesScanCount += collectOrderBizResponse.getScanCount();
}
}
}
}
// 计算采购率和销售率
BigDecimal buyerCountBigDecimal = BigDecimal.valueOf(buyerCount);
BigDecimal buyerScanCountBigDecimal = BigDecimal.valueOf(buyerScanCount);
if(buyerCountBigDecimal.equals(new BigDecimal(0))){
buyerCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP);
}else {
buyerCentage = buyerScanCountBigDecimal.divide(buyerCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
BigDecimal salesCountBigDecimal = BigDecimal.valueOf(salesCount);
BigDecimal salesScanCountBigDecimal = BigDecimal.valueOf(salesScanCount);
if(salesCountBigDecimal.equals(new BigDecimal(0))){
salesCentage = new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP);
}else {
salesCentage = salesScanCountBigDecimal.divide(salesCountBigDecimal,4, BigDecimal.ROUND_HALF_UP ).multiply(new BigDecimal(100)).setScale(2, BigDecimal.ROUND_HALF_UP);
}
codeCount = buyerScanCount + salesScanCount;
}
collectOrderUploadCountResponse.setBuyerCentage(buyerCentage);
collectOrderUploadCountResponse.setSalesCentage(salesCentage);
collectOrderUploadCountResponse.setCodeCount(codeCount);
}
public static void main(String[] args) {
System.out.println(new BigDecimal(0).setScale(2, BigDecimal.ROUND_HALF_UP));
}
}

@ -140,4 +140,5 @@
GROUP BY icob.billNo
order by case when icob.orderTime is null then icob.createTime else icob.orderTime end desc
</select>
</mapper>

@ -36,4 +36,13 @@
</where>
group by icobb.id
</select>
<select id="getList" resultType="com.glxp.api.res.collect.CollectOrderBizResponse">
SELECT
biz_bac.* ,bac.busType,bac.uploadStatus
FROM
io_collect_order_biz_backup biz_bac, io_collect_order_backup bac where biz_bac.orderIdFk = bac.billNo
<if test="startTime != '' and startTime != null and endTime != '' and endTime != null">
AND bac.updateTime BETWEEN #{startTime} AND #{endTime}
</if>
</select>
</mapper>

Loading…
Cancel
Save